文章目录
概要
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
版权归原作者 BigDataLover520 所有, 如有侵权,请联系我们删除。