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

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值