flinkFlink学习

Flink学习笔记之一Flink Runtime

2019-03-18  本文已影响3人  天火燎原_e548

一.Flink Runtime

1.运行时架构

Client

JobManager(master节点)

TaskManager(Salve节点)

角色通信(Akka)

数据传输(Netty)

每个Woker(TaskManager)是一个JVM进程,有一个或多个子任务,通过task slot控制。

一个TaskManager通过Slot(任务槽)来控制它上面可以接受多少个task(仅限内存托管,目前CPU未做隔离),Slot均 分TaskManager所托管的内存。

同一个TaskManager中的task共享TCP连接(通过多路复用)和心跳消息。它们还可以共享数据集和数据结构,从而减少每个任务的开销。                                                                                       

 TaskManger有N个槽位,只能接受N个Task吗?不是,有共享槽位。

2.Operator Chain

如上图Flink会把Source和map合并成一个Operator Chain。

Operator Chain优点和组成条件

编程改变Operator Chain行为

3.共享槽位

Flink运行subtasks共享slot,资源更充分利用,Flink集群需要的Task Slot与作业中使用的最高并行度正好相同(前提保持默认SlotSharingGroup)

4.SlotSharingGroup

根据上游决定,如果设置group,后续都会变。

ColocationGroup

强制保证并行度一样的subtask在一个slot里面,用于迭代流(机器学习)

5.Slot与Parallelism并行关系

Source=3

Map=4

Sink=4

所以task slot 使用是4

设置并行度,10+ Map之后的Group(test)的Max是20 = 30

上一篇下一篇

猜你喜欢

热点阅读