0


Flink1.19 JobSubmitHandler源码解析

文章目录

概要

JobGraph在客户端生成后,需要发送到服务端,首先会被JobSubmitHandler(WebMonitor内处理http请求的处理类)接收处理,然后会发送到Dispatcher进一步处理

整体架构流程

首先会进入JobSubmitHandler对象的handleRequest方法

有两个参数:

request:封装了Http请求的对象

gateway:dispatcher的网关对象,处理结束后,将JobGraph发送到dispatcher

nameTofile对象:上面我用方框标注了,圆圈圈起来的就是他的值,可以看到就是一个map,里面封装了jar包,jobgraph二进制文件,缓存文件a.txt(这个是我在我们flink程序中定义的),以及他们对应的存储路径

1.loadJobGraph()方法

这个方法主要就是做了JobGraph对象的获取,通过CompletableFuture异步IO流读取jobgraph文件转换为jobgraph对象

2.getJarFilesToUpload()方法

这个方法什么好说的,将jar包路径String类型转换为Path类型

3.getArtifactFilesToUpload()方法

这个和上面的同理,这里贴出他的代码实现

4.uploadJobGraphFiles()方法

该方法目的是将jobgraph,jar包,缓存文件地址上传到blobserver中存储起来

5.gateway.submitJob()方法

gateway是入参之一,dispatcher的网关对象

接下来会调用到dispatcher对象的submitJob方法,进一步处理JobGraph

Dispatcher的submitJob()方法

中间这一大长串就是做一些异常的判断,比如Job任务是终止状态,jobid已经注册过了等等,这些都属于提交任务异常,不会继续往下走任务提交

如果一切正常,会跳用最底下的internalSubmitJob()方法

internalSubmitJob()方法

重点是return后面的异步编排:

waitForminatingJob():提交任务

handle():处理异常,作业成功,什么也不处理;作业失败,handleTermination()处理异常

thencompose():返回CompletableFuture结果,没有做什么额外处理

whenComplete()方法:无论作业成功与否,调用该方法,从set集合中移除刚才添加的jobid

persistAndRunJob()方法

putJobGraph():jobgraph存储

initJobClientExpiredTime():注册JobGraph超时时间

runJob():运行JobGraph

其中的createJobMasterRunner()是启动JobMasterRunner,并在后续启动JobMaster进一步处理JobGraph

标签: flink

本文转载自: https://blog.csdn.net/m0_73904819/article/details/141161457
版权归原作者 BigDataLover520 所有, 如有侵权,请联系我们删除。

“Flink1.19 JobSubmitHandler源码解析”的评论:

还没有评论