Flink作业提交(三)--- Job运行

Flink作业提交(三)--- Job运行,第1张

源码分析JobMaster如何run起来 介绍到了JobMaster.start方法,这个方法主要是启动rpc服务,并且运行job,接下来看下怎么run job?本文内容是基于Flink 1.9来讲解。

这里有两个重要的方法 startJobMasterServices()和 resetAndStartScheduler()  

这两个方法里涉及到的东西都比较多,分开来介绍。

2.1.1 startHeartbeatServices()

2.1.2 slotPool.start(getFencingToken(), getAddress(), getMainThreadExecutor())

2.1.3 scheduler.start(getMainThreadExecutor())

2.1.4 reconnectToResourceManager(new FlinkException("Starting JobMaster component."))

2.1.5 resourceManagerLeaderRetriever.start(new ResourceManagerLeaderListener())

该方法主要处理作业调度相关的工作,包括申请slot以及对Execution进行deploy。首先看下该方法源码

ExecutionGraph在构建的时候,通过ExecutionGraph成员变量列表可以看到,JobStatus默认是CREATED状态。因此resetAndStartScheduler方法首先走了if逻辑,然后是调用startScheduling,接下来看startScheduling方法逻辑。

会调用executionGraph.scheduleForExecution() -->SchedulingUtils.scheduleEager

重点看下SchedulingUtils.scheduleEager,这个方法主要做了两件事情

2.2.1 为每个 ExecutionVertex 申请slot

首先上源码,该源码在SchedulingUtils#scheduleEager方法中

底层真正申请slot的源码在SchedulerImpl#allocateSingleSlot方法中

slot申请流程总结如下:

2.2.2 deploy 所有的 Execution

当所有的ExecutionVertex节点申请到slot之后,就开始进行部署,首先看下源码,该源码在SchedulingUtils#scheduleEager方法中

deploy方法主要做了下面几件事情

至此,作业已经运行起来了

JobMaster启动作业,主要分成两个步骤

上一篇 一文搞定 Flink Job 提交全流程 ,我们知道每一个 operator chain 作为一个整体,提交 task 。

这里创建了一个 Task 对象并启动,我们来看一下 Task 启动的时候都做了什么

首先向 blobService、netWork 注册 job ,添加监控,将jar 等添加到分布式缓存中,然后就 invoke,这也是 task 真正开始执行的地方,我们以 StreamTask 为例

init 然后对于一些 Rich Function 会先执行其 open方法,然后开始 run,就开始真正的消费数据了。我们以 flatMap 为例

当执行 run 方法时,首先呢 OneInputStreamTask.run

这一块的逻辑可具体参考

一文搞定 Flink 消费消息的全流程 、 一文搞定 Flink Checkpoint Barrier 全流程 以及 一文搞懂 Flink 处理 Barrier 全过程

我们知道当往下游发送数据的时候

继续追踪下去到 StreamFlatMap.processElement

其他的类似,如果是 kafka source task 调用的是 headOperator.run(getCheckpointLock(), getStreamStatusMaintainer()),然后去消费 kafka 中的数据。然后跟前面 一文搞定 Flink Job 提交全流程 、 写给大忙人看的Flink 消费 Kafka 、 一文搞定 Flink 消费消息的全流程 以及 一文搞定 Flink Checkpoint Barrier 全流程 就可以串起来了。而 Flink 整体流程的分析,除了 restore 之外,也差不多可以告一段落了。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11356454.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存