Apache Flink 进阶(一):Runtime 核心机制剖析( 六 )

TaskExecutor 收到 JobManager 提交的 Task 之后 , 会启动一个新的线程来执行该 Task 。 Task 启动后就会开始进行预先指定的计算 , 并通过数据 Shuffle 模块互相交换数据 。

以上就是 Flink Runtime 层执行作业的基本流程 。 可以看出 , Flink 支持两种不同的模式 , 即 Per-job 模式与 Session 模式 。 如图 3 所示 , Per-job 模式下整个 Flink 集群只执行单个作业 , 即每个作业会独享 Dispatcher 和 ResourceManager 组件 。 此外 , Per-job 模式下 AppMaster 和 TaskExecutor 都是按需申请的 。 因此 , Per-job 模式更适合运行执行时间较长的大作业 , 这些作业对稳定性要求较高 , 并且对申请资源的时间不敏感 。 与之对应 , 在 Session 模式下 , Flink 预先启动 AppMaster 以及一组 TaskExecutor , 然后在整个集群的生命周期中会执行多个作业 。 可以看出 , Session 模式更适合规模小 , 执行时间短的作业 。

图3. Flink Runtime 支持两种作业执行的模式 。

推荐阅读