Apache Flink 进阶(一):Runtime 核心机制剖析( 十 )
基于上述 Slot 管理和分配的逻辑 , JobManager 负责维护作业中 Task执行的状态 。 如上文所述 , Client 端会向 JobManager 提交一个 JobGraph , 它代表了作业的逻辑结构 。 JobManager 会根据 JobGraph 按并发展开 , 从而得到 JobManager 中关键的 ExecutionGraph 。 ExecutionGraph 的结构如图 5 所示 , 与 JobGraph 相比 , ExecutionGraph 中对于每个 Task 与中间结果等均创建了对应的对象 , 从而可以维护这些实体的信息与状态 。
图6.Flink 中的 JobGraph 与 ExecutionGraph 。 ExecutionGraph 是 JobGraph 按并发展开所形成的 , 它是 JobMaster 中的核心数据结构 。
在一个 Flink Job 中是包含多个 Task 的 , 因此另一个关键的问题是在 Flink 中按什么顺序来调度 Task 。 如图 7 所示 , 目前 Flink 提供了两种基本的调度逻辑 , 即 Eager 调度与 Lazy From Source 。 Eager 调度如其名子所示 , 它会在作业启动时申请资源将所有的 Task 调度起来 。 这种调度算法主要用来调度可能没有终止的流作业 。 与之对应 , Lazy From Source 则是从 Source 开始 , 按拓扑顺序来进行调度 。 简单来说 , Lazy From Source 会先调度没有上游任务的 Source 任务 , 当这些任务执行完成时 , 它会将输出数据缓存到内存或者写入到磁盘中 。 然后 , 对于后续的任务 , 当它的前驱任务全部执行完成后 , Flink 就会将这些任务调度起来 。 这些任务会从读取上游缓存的输出数据进行自己的计算 。 这一过程继续进行直到所有的任务完成计算 。
推荐阅读
- 第五人格|梦幻西游:担心的事发生了,大佬进阶110选错召唤兽,白花了2000块
- 盲僧|英雄联盟手游:打野玩家的进阶选择,盲僧,高机动性带来的直接收益
- 我的世界|剑网3药宗版本pve装备进阶路线,从大侠到新赛季毕业
- 盲僧|LOL手游盲僧是英雄代表?灵药再推进阶教学,双区王者的经验
- 进阶|永劫无间:胡桃只是奶妈?法神开发胡桃进阶打法,化身团战关键手
- 德鲁伊|魔兽怀旧服:TBC德鲁伊进阶宏,熊德无缝吃药,奶德一键迅捷治疗
- 进阶|梦幻西游:两次就进阶110灵性成功!难道中途的转折起了关键作用
- 进阶|梦幻西游手游:萌新的福利?新NPC开启测试,进阶不再问老玩家!
- 明日方舟|三国志战略版:冲桃园扫麒麟,虎臣弓进阶虎臣爆头骑指南
- 和平精英|和平精英核电站打法进阶教学,KS小雪吖提供详细攻略,吃鸡稳了