Flink学习笔记之一Flink Runtime

一.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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容