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

  • 18
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值