1.1 JobManager 作业管理器
1.2TaskManager 任务管理器
1.3 ResourceManager 资源管理器
1.4 Dispatcher 分发器(yarn模式提交流程没有分发器)
2.1抽象版
此处ResourceManager不是Yarn的
2.2总结四大组件
4.1 简介
4.2并行度优先级
5.1简介
5.2 TaskManager和Slot的关系
5.3 共享组的理解
5.4 共享组简介和好处
flink默认是可以前后发生的不同子任务放到同一个slot里边,即前后子任务共享同一个资源.因为他们在用一个共享组里边
这样的好处是1.一个slot里边可以保存整个作业运行的管道(pipeline).如果没有设计数据重分区的话,数据在一个pipeline全部完成所有操作.就不会有数据跨slot,taskManager间传输,即减少了IO.–效率提升
2.假如某个slot挂了,只想当于减少了并行度,别的slot仍然可以完成任务.–健壮性提升
如下图所示.这种没有设置共享组,所有算子在同一个default共享组里边
但是我们可以通过设置共享组,使前后发生的任务不在同一个slot中. 因为flink只允许同一个共享组中的任务在同一个slot中.不同共享组的任务不能在同一个slot中.
如下图所示:
共享组代码:
执行计划如下:占用5个slot 1+2+2
5.5 并行任务Slot个数计算
怎么实现并行运算?
不同的任务分配到不同的线程(每个线程跑在slot上)上执行,从而实现并行计算.
并行任务:需要占用多少slot?
答:每个共享组的最大slot个数相加. 如果没有设置共享组,则所有算子在同一个default共享组中.(即算子最大并行度)
要是多个流呢?slot个数怎么算呢?
答:一个slot可以读取多个流数据.相当于多流占用同一个slot.一个线程处理A流中数据,空闲了也可以处理C流中数据.
如下图所示:C流箭头----->并不向下游广播,而是表示C中数据可以发往下游D中任意一个.
6.1 执行图
6.2 Operator Chains(任务链)
6.2.0 算子间数据传输数据的形式
6.2.1任务链简介
•同一个共享组、相同并行度的 one-to-one 操作,Flink 这样相连的算子链接在一起形成一个 task,原来的算子成为里面的 subtask
•同一个共享组、并行度相同、并且是 one-to-one 操作,三个条件缺一不可
6.2.2任务链的好处
6.2.3 断开任务链
6.2.4 计算job中的任务
一个流处理程序,到底包含多少个任务?
在StreamGraph中每个算子是一个任务,此时并没有合并.
client会对其按照(Operator Chains)任务链规则进行合并得到JobGraph(如下图所示).
本文地址:http://www.tpjde.com/quote/1215.html 推平第 http://www.tpjde.com/ , 查看更多