Flink的计算模型和接口
开发步骤: 数据输入 数据转换 数据输出
1.数据输入- DataSource
第三方数据源 数据源连接器
内置数据源:集合数据源 文件数据源 Socket数据源
2.DataStream 转换操作 Transformation Operator
01.Single-DataStream
filter map
02.Multi-DataStream
流合并
Union 需要保证两个数据集的格式一致,输出和输入格式一致
Connect 合并两种或多种不同类型的数据集-合并后混合数据类型保留了数据集的数据类型
Join
滑动窗口关联 滚动窗口关联 会话窗口关联 间隔关联
流拆分:
Split 算子 + select
03.物理分区操作
Random Partitioning
Roundobin Partitioning
Rescaling Partitioning
Custom Partitioning
BroadCasting
3.DataSinks数据输出
基本数据输出
第三方数据输出
1.组件
Flink中Job的提交、调度和执行流程
各个组件(client JobMaster TaskManager Dispatcher )
01.Client:Flink 作业在哪台机器上面提交,那么当前机器称之为Client
02.Dispatcher. The dispatcher accepts job submissions from clients and starts the jobs on their behalf on a cluster manager.
Dispatcher(Application Master)提供REST接口来接收client的application提交,它负责启动JM和提交application,同时运行Web UI
03.ResourceManager:一般是Yarn,当TM有空闲的slot就会告诉JM,没有足够的slot也会启动新的TM。kill掉长时间空闲的TM。
2.执行过程
Flink 集群启动后,首先会启动一个 JobManger 和一个或多个的 TaskManager
01.Jobs
02.JobManager :
接收任务,手机任务状态
管理TaskManger
调度Task
JobManager的High Availability:
使用JobManager High Availability,可以从JobManager的故障中恢复,从而消除单点故障SPOF
HighAvailabilityMode有三个枚举,分别是NONE、ZOOKEEPER、FACTORY_CLASS;
这些枚举有一个属性haActive,用于表示是否支持HighAvailability;
HighAvailabilityOptions定义了前缀为high-availability.zookeeper的配置项
03.TaskManager
执行计算逻辑
TaskManager 负责做数据传输。TaskManager的网络组件首先从缓冲buffer中收集records,然后再发送
04.TaskSlots
Slot槽位(Slot)
Task :task是最基本的调度单位,由一个线程执行,里面包含一个或多个operator
抽象图
Flink总共提供了三种图的抽象, StreamGraph JobGraph ExecutionGraph
01.生成 StreamGraph 。StreamNode和 StreamEdge,代表程序的拓扑结构,是从用户代码直接生成的图。
02.生成 JobGraph 。 JobGraph表示由算子(JobVertex)和中间结果(IntermediateDataSet)组成的数据流
以及JobEdge代表了job graph中的一条数据传输通道
JobGraph是要交给flink去生成task的图。
03.ExecutionGraph,是用于调度的基本数据结构
ExecutionJobVertex ExecutionVertex IntermediateResult IntermediateResultPartition ExecutionEdge Execution
根据 StreamGraph 生成 JobGraph ,然后将JobGraph发送到server端进行ExecutionGraph的解析,-> 物理执行
0. 架构:消息传输层-流处理层
1.消息传输层:
Kafka 的出现,直接解决了replayable的数据框架的问题。建造和分析分布式数据处理系统的思维体系 持久化:kafka文件存储
Pulsar 是pub-sub模式的分布式消息平台:为了解决吞吐等问题,Pulsar和Kafka一样,采用了分区(Partition)的机制
持久化-Pulsar通过 BookKeeper 来存储消息,保证消息不会丢失-服务和数据是分离的
Broker:提供发布和订阅的服务(Pulsar的组件)
Bookie:提供存储能力(BookKeeper的存储组件)
Time-to-Live(TTL)
2.流处理层:Flink SparkStreaming
原文:https://www.cnblogs.com/ytwang/p/13665258.html