本文共 3142 字,大约阅读时间需要 10 分钟。
flink架构体系
JobManager处理器
也称之为Master,用于协调分布式执行,它们用来调度task,协调检查点(CheckPoint),协调失败时恢复等。
负责资源申请,任务分发,任务调度执行,checkpoint的协调执行;
Flink运行时至少存在一个master处理器,如果配置高可用模式则会存在多个master处理器,它们其中有一个是leader,而其他的都是standby。
TaskManager处理器
flink的程序结构
source
读取数据transformation
用对数据流进行转换操作sink
将处理后的数据输出到下游 flink的并行数据流
Flink程序在执行的时候,会被映射成一个Streaming Dataflow
,一个Streaming Dataflow
是由一组Stream
和Transformation Operator
组成的。在启动时从一个或多个Source Operator
开始,结束于一个或多个Sink Operator
。
stream dataflow
是并行化的 Source Operator
可以有两个并行度,这两个并行度在flink里面会有两个subtask
来处理Stream
可以被分成多个Stream
的分区,也就是Stream Partition
。Operator
也可以被分为多个Operator Subtask
。 Operator Subtask
。Operator Subtask
都是在不同的线程当中独立执行的。Operator Subtask
的个数。上图Source的并行度为2。数据在两个operator之间传递的时候有两种模式:
One to One 模式
stream partition
中数据的分区和排序,传递给下游某个分区;没有类似shuffle的操作。Redistributing (重新分配)模式
keyby
操作,会从不同的subtask
里来拉取数据Task和Operator chain(操作链)
Flink的所有操作都称之为Operator,客户端在提交任务的时候会对Operator进行优化操作;
能进行合并的Operator(one to one
模式的Operator
)会被合并为一个Operator,合并后的Operator称为Operator chain
,实际上就是一个执行链
source
和map
操作会合并成一个task
,如果这个时候是两个task
,可能在不同的taskManager
上,此时可能会有数据的分散,把他们合并之后,相当于在一个task上,数据就在一个线程上,这样就避免了数据的远程发送,提高了效率每个执行链会在TaskManager
上一个独立的线程中执行。
流程图如下
具体流程
1)当Flink执行executor会自动根据程序代码生成DAG数据流图
2)ActorSystem创建Actor将数据流图发送给JobManager中的Actor
3)JobManager会不断接收TaskManager的心跳消息,从而可以获取到有效的TaskManager
3)JobManager接收到数据之后就会进行数据的并行化、合并成操作链等优化操作,最后将每个operator chain
的suntask
再分发给TaskManager
4)JobManager通过调度器在TaskManager中调度执行Task(在Flink中,最小的调度单元就是task,对应就是一个线程)
TaskManager
里面有一个slot
的概念,slot
是真正负责任务的执行 TaskManager
,每个TaskManager
里有三个slot,那么flink的最大task并行数量就是6角色介绍
job client
是用户编写的代码,将flink的客户端封装好的提交任务的客户端;
主要作用:
stream dataflow
,提交给jobmanager
,接收任务的执行结果并返回给客户;jobmanager
checkpoint coordinator
(ck协调器)来完成TaskManager
slot(任务槽)
slot是flink中从资源层面进行调度的单位
特点:slot是会平均划分当前TaskManager中内存
flink程序的最大并行度就是所有TaskManager中的slot的数量(我们flink控制可以接收的任务数量就是通过slot数量来实现)
slot数量如何确定:保持和TaskManager中的cpu核数一样,保证任务执行的性能。
slot实际是任务执行的真正角色。
slot sharing
subtask
,有6个slot
,如果不允许槽共享,那么第一行的6个subtask
就已经把6个slot占满了,其他的subtask
例如keyBy()
就没地方放了转载地址:http://lhrzi.baihongyu.com/