Apache Flink 作业提交流程

目录

高层级抽象视角

独立模式 Standalone

YARN 集群

 应用(Application)模式


高层级抽象视角

        Flink 的提交流程,随着部署模式、资源管理平台的不同,会有不同的变化。首先我们从一个高层级的视角,来做一下抽象提炼,看一看作业提交时宏观上各组件是怎样交互协作的。

具体步骤如下:

(1)一般情况下,由客户端(App)通过分发器提供的REST接口,将作业提交给JobManager;

(2)由分发器启动 JobMaster,并将作业(包含 JobGraph)提交给 JobMaster;

(3)JobMaster 将 JobGraph 解析为可执行的 ExecutionGraph,得到所需的资源数量,然后向资源管理器请求任务槽资源(slots);

(4)资源管理器判断当前是否由足够的可用资源;如果没有,启动新的 TaskManager;

(5)TaskManager 启动之后,向 ResourceManager 注册自己的可用任务槽(slots);

(6)资源管理器通知 TaskManager 为新的作业提供 slots;

(7)TaskManager 连接到对应的 JobMaster,提供 slots; 

(8)JobMaster 将需要执行的任务分发给 TaskManager;

(9)TaskManager 执行任务,互相之间可以交换数据。

        如果部署模式不同,或者集群环境不同(例如 Standalone、YARN、K8S 等),其中一些步骤可能会不同或被省略,也可能有些组件会运行在同一个 JVM 进程中。比如我们在上一章实践过的独立集群环境的会话模式,就是需要先启动集群,如果资源不够,只能等待资源释放,而不会直接启动新的 TaskManager。

接下来我们就具体介绍一下不同部署环境下的提交流程。

独立模式 Standalone

        在独立模式(Standalone)下,只有会话模式和应用模式两种部署方式。两者整体来看流程是非常相似的:TaskManager 都需要手动启动,所以当 ResourceManager 收到 JobMaster 的请求时,会直接要求 TaskManager 提供资源。而 JobMaster 的启动时间点,会话模式是预先启动,应用模式则是在作业提交时启动

YARN 集群

        接下来我们再看一下有资源管理平台时,具体的提交流程。我们以 YARN 为例,分不同的部署模式来做具体说明。

 会话(Session)模式

        在会话模式下,我们需要先启动一个 YARN session,这个会话会创建一个 Flink 集群。

        这里只启动了 JobManager,而 TaskManager 可以根据需要动态地启动。在 JobManager 内部,由于还没有提交作业,所以只有 ResourceManager 和 Dispatcher 在运行。

接下来就是真正提交作业的流程:

(1)客户端通过 REST 接口,将作业提交给分发器;

(2)分发器启动 JobMaster,并将作业(包含 JobGraph)提交给 JobMaster;

(3)JobMaster 向资源管理器请求资源(slots);

(4)资源管理器向 YARN 的资源管理器请求 container 资源;

(5)YARN 启动新的 TaskManager 容器;

(6)TaskManager 启动之后,向 Flink 的资源管理器注册自己的可用任务槽;

(7)资源管理器通知 TaskManager 为新的作业提供 slots;

(8)TaskManager 连接到对应的 JobMaster,提供 slots;

(9)JobMaster 将需要执行的任务分发给 TaskManager,执行任务。

单作业(Per-Job)模式

        在单作业模式下,Flink 集群不会预先启动,而是在提交作业时,才启动新的 JobManager。

(1)客户端将作业提交给 YARN 的资源管理器,这一步中会同时将 Flink 的 Jar 包和配置上传到 HDFS,以便后续启动 Flink 相关组件的容器;

(2)YARN 的资源管理器分配容器(container)资源,启动 Flink JobManager,并将作业提交给 JobMaster。这里省略了 Dispatcher 组件;

(3)JobMaster 向资源管理器请求资源(slots);

(4)资源管理器向 YARN 的资源管理器请求容器(container);

(5)YARN 启动新的 TaskManager 容器;

(6)TaskManager 启动之后,向 Flink 的资源管理器注册自己的可用任务槽;

(7)资源管理器通知 TaskManager 为新的作业提供 slots;

(8)TaskManager 连接到对应的 JobMaster,提供 slots;

(9)JobMaster 将需要执行的任务分发给 TaskManager,执行任务。

 应用(Application)模式

        应用模式与单作业模式的提交流程非常相似,只是初始提交给 YARN 资源管理器的不再是具体的作业,而是整个应用。一个应用中可能包含了多个作业,这些作业都将在 Flink 集群中启动各自对应的 JobMaster。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值