Job的运行过程
Job的具体运行过程
a) 运行mapred程序
b) 本次运行将生成一个Job,于是JobClient向JobTracker(ResourceManager)申请一个JobId以标识这个Job
c) JobClient将Job所需要的资源提交到HDFS中一个以JOBID命名的目录中。这些资源包括JAR包,配置文件,InputSplit等
d) JobClient向JobTracker(ResourceManager)提交这个Job
e) JobTracker初始化该Job
f) JobTracker从HDFS中获取该Job的Split信息
g) JobTracker向TaskTracker分配任务
h) TaskTracker(NodeManager)从HDFS上获取到该Job的相关资源
i) TaskTracker(NodeManager)开启一个新的JVM
j) TaskTracker用一个新的JVM来执行Map或者Reducer。
运行原理解析
class JobSubmitter {
//这里的maps是分片的个数
int maps = writeSplits(job, submitJobDir);
//从这里可以看出,map函数的调用次数取决于maps的个数,是一对一的关系
conf.setInt(MRJobConfig.NUM_MAPS, maps);
//把所有的信息写入到配置文件中。JobFile
writeConf(conf, submitJobFile);
}