Flink运行组件及原理

包括:JobManager(作业管理器),TaskManager(任务管理器),ResourceManager(资源管理器),Dispatcher(分发器)。TaskManager将自己的插槽注册到ResourceManager上,JobManager向ResourceManager申请资源时就是申请插槽。Dispatcher为上层应用提供REST服务接口,似乎不是必须的,使用WEBUI时会用到。

Task:一个阶段多个功能相同的subTask的集合,类似Spark的TaskSet。

Slot:一个Slot可以运行多个SubTask,但是这些SubTask必须是来自同一个application的不同阶段的subTask。

提交作业时启动一个新的JobManager,每个JobManager管理一个作业。JobManager能够分析出需要的slots数量。ResourceManager收到申请后根据申请数量启动一定数量的TaskManager(ResourceManager知道每个TaskManager配置的slots数量),TaskManager注册slots,ResourceManager向TaskManager索要slots,然后TaskManager将slots提供给JobManager,JobManager将任务提交到slots中执行。

JobManager会计算出该作业执行图分配给TaskManager,TaskManager拿到图之后开始执行。TaskManager报告心跳包括任务状态统计等信息。JobManager负责部署停止取消任务,负责检查点的指令发送。TaskManager之间做数据传输。这些和Spark的Driver和Executor比较类似。因为流式处理是持续不断的,并行度对应的slot信息变得重要,也成为静态的。流的并行度以最大的子任务(一个或多个算子组合)并行度。一个TaskManager中的多个slot对应多个线程,有独享资源和共享资源,一个TaskManager至少有一个slot,有几个slot表示该TaskManager的最大并行度。JobManager和TaskManager都是JVM进程。一个slot里可以运行时序有先后顺序的多个子任务,这样的好处是一个slot里保存作业的整个管道,也就是不涉及跨slot甚至跨TaskManager的数据传输,这里Flink也提供设置方式,具体见代码slotSharingGroup使用。

Flink程序分成三部分:Source(数据源),Transformation(利用各种算子加工处理),Sink(输出)。运行时,Flink程序会被映射成逻辑数据流图(DataFlow),每个DataFlow以一个或多个Source开始,以一个或多个Sink结束,DataFlow类似任意的DAG。大部分情况下,Transformation跟DataFlow中的算子(Operator)是对应的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值