Hadoop0.21.0源码流程分析(1)-客户端提交作业

 

 

  •   流程图

 

  •   函数调用关系图

  •     JobConf

         JobConf 类继承 org.apache.hadoop.conf.Configuration 类,所有客户端程序中配置的信息和其他运行信息,都会保存在这个类里。

 

  • JobClient

        JobClient.runJob(job) 静态方法会实例化一个 JobClient 实例 , 然后用此实例的 submitJob(conf) 方法向 master 提交作业。此方法会返回一个 RunningJob 对象,它用来跟踪作业的状态。作业提交完毕后, JobClient 会根据此对象开始轮询作业的进度,直到作业完成。

submitJob(conf) 内部是通过 submitJobInternal(job) 方法完成实质性的作业提交。   submitJobInternal(job) 方法首先会向 hadoop 分布系统文件系统 hdfs 依次上传三个文件 : job.jar, job.splitjob.xml

job.xml: 作业配置,例如 Mapper, Combiner, Reducer 的类型,输入输出格式的类型等。

job.jar: jar, 里面包含了执行此任务需要的各种类,比如 Mapper,Reducer 等实现。

job.split: 文件分块的相关信息,比如有数据分多少个块,块的大小 ( 默认 64m ) 等。

         写完这三个文件之后 , 此方法会通过 RPC 调用 master 节点上的 JobTracker. submitJob( ) 方法,此时作业已经提交完成。

         JobClient 里面使用 使用 RPC 机制来构造一个实现 JobSubmissionProtocol 接口的 JobTracker 的 代理,然后利用远程发放直接执行 JobTracker 里的 submitJob

 

  • JobTracker

         JobClient 提交 job 后, JobTracker 会创建一个 JobInProgress 来跟踪和调度这个 job ,并把它添加到 job 队列里。 JobInProgress 会根据提交的 job jar 中定义的输入数据集(已分解成 FileSplit )创建对应的一批 TaskInProgress 用于监控和调度 MapTaskReduceTask

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值