Job提交源码解读

发布时间 2023-06-01 01:20:59作者: 郭培鑫同学

Job提交源码解读

Job整体流程

流程:在Driver类中,最终Job对象会调用waitForCompletion()完成提交。深入源码其实是调用commit()方法完成提交。

commit()方法具体做了哪些事呢?

  • 首先调用connect()方法建立连接。
  • 最后通过JobSubmiter实例化对象调用submitJobInternal()完成提交任务。

那么connect()方法又调用了什么实现连接呢?

  • 首先是通过代理类Cluster先判断当前程序是在yarn集群上还是当地主机上,再由此选择是否要不要提交jar包。

通过源码知道,submitJobInternal()方法里做了以下几个核心操作:

  1. 创建了stag路径,用与提交数据的路径;
  2. 获得了jobId,用于唯一标识;
  3. 将jar包打包到集群上,这里当地主机无须此步;
  4. 计算切片大小,规划生成的数据文件;
  5. 向stag路径写入xml配置文件;

当然还有提交任务啦!!!

切片规划

  1. 切片是以文件为单元进行切割的,比如文件1有250M数据,文件2有100M数据,如果以每块128M为大小,则需要分( 2 + 1 )切片。