为了不遗忘和可以速查源码,准备重新读一遍Hadoop的MapReduce部分的源码,记录下来,尽量详细点。如要转载,请标明出处。
写MapReduce程序首先接触的是Job类,Job类是管理一个集群作业的类,包含了一个作业的所有信息和向集群提交作业的方法。
如图所示,它有以上一些方法,我们写程序是调用waitForCompletion()方法,方法实现如下:
它调用了submit向集群提交作业,下面看下submit()方法:
jobClient是在初始化时候建立的。
JobClient类 建立了一个代理,用于连接JobTracker(集群上的master结点),
这个代理会检查mapred.job.tracker 这个属性有没有建立,默认值是local,如果建立了,则建立一个连接JobTracker的代理。这个代理负责上传作业的配置和作业内容到集群中。
发现他实现了JobSubmissionProtocol接口的一个对象
总之,Job类使用了一个实现了JobSubmissionProtocol接口的一个代理,这个代理对象可以用来和集群通信,job类的一些方法也可以用来帮助我们对集群和任务的进展情况进行查看。