Apache Flink 进阶(一):Runtime 核心机制剖析( 五 )
基于上述结构 , 当用户提交作业的时候 , 提交脚本会首先启动一个 Client进程负责作业的编译与提交 。 它首先将用户编写的代码编译为一个 JobGraph , 在这个过程 , 它还会进行一些检查或优化等工作 , 例如判断哪些 Operator 可以 Chain 到同一个 Task 中 。 然后 , Client 将产生的 JobGraph 提交到集群中执行 。 此时有两种情况 , 一种是类似于 Standalone 这种 Session 模式 , AM 会预先启动 , 此时 Client 直接与 Dispatcher 建立连接并提交作业即可 。 另一种是 Per-Job 模式 , AM 不会预先启动 , 此时 Client 将首先向资源管理系统 (如Yarn、K8S)申请资源来启动 AM , 然后再向 AM 中的 Dispatcher 提交作业 。
当作业到 Dispatcher 后 , Dispatcher 会首先启动一个 JobManager 组件 , 然后 JobManager 会向 ResourceManager 申请资源来启动作业中具体的任务 。 这时根据 Session 和 Per-Job 模式的区别 , TaskExecutor 可能已经启动或者尚未启动 。 如果是前者 , 此时 ResourceManager 中已有记录了 TaskExecutor 注册的资源 , 可以直接选取空闲资源进行分配 。 否则 , ResourceManager 也需要首先向外部资源管理系统申请资源来启动 TaskExecutor , 然后等待 TaskExecutor 注册相应资源后再继续选择空闲资源进程分配 。 目前 Flink 中 TaskExecutor 的资源是通过 Slot 来描述的 , 一个 Slot 一般可以执行一个具体的 Task , 但在一些情况下也可以执行多个相关联的 Task , 这部分内容将在下文进行详述 。 ResourceManager 选择到空闲的 Slot 之后 , 就会通知相应的 TM “将该 Slot 分配分 JobManager XX ” , 然后 TaskExecutor 进行相应的记录后 , 会向 JobManager 进行注册 。 JobManager 收到 TaskExecutor 注册上来的 Slot 后 , 就可以实际提交 Task 了 。
推荐阅读
- 第五人格|梦幻西游:担心的事发生了,大佬进阶110选错召唤兽,白花了2000块
- 盲僧|英雄联盟手游:打野玩家的进阶选择,盲僧,高机动性带来的直接收益
- 我的世界|剑网3药宗版本pve装备进阶路线,从大侠到新赛季毕业
- 盲僧|LOL手游盲僧是英雄代表?灵药再推进阶教学,双区王者的经验
- 进阶|永劫无间:胡桃只是奶妈?法神开发胡桃进阶打法,化身团战关键手
- 德鲁伊|魔兽怀旧服:TBC德鲁伊进阶宏,熊德无缝吃药,奶德一键迅捷治疗
- 进阶|梦幻西游:两次就进阶110灵性成功!难道中途的转折起了关键作用
- 进阶|梦幻西游手游:萌新的福利?新NPC开启测试,进阶不再问老玩家!
- 明日方舟|三国志战略版:冲桃园扫麒麟,虎臣弓进阶虎臣爆头骑指南
- 和平精英|和平精英核电站打法进阶教学,KS小雪吖提供详细攻略,吃鸡稳了