@app
运行Job.waitForCompletion()
,先使用JobSubmitter
提交Job,在提交以前,会在Job的做业目录中生成如下文件:
job.split
:当前Job的切片信息,有几个切片对象
job.splitmetainfo
:切片对象的属性信息
job.xml
:job全部的属性配置线程
本地模式:
LocalJobRunner
进行提交,若是是HDFS,使用了yarn,则是YARNJobRunner
建立一个LocalJobRunner.Job()
job启动:Job.start()
code
Map阶段xml
MapTask
对象Mapper
Mapper.run()
key-value
阶段定义
若是有ReduceTask,MapTask运行期间,分为 map(67%)---sort(33%) 两部分
若是没有ReduceTask,MapTask运行期间,只有map(100%)
map: 使用RecordReader
将切片中的数据读入到Mapper.map(),直至写出:context.write(key,value)
对象
Reduce阶段blog
ReduceTask
对象Reducer
part-r-000x
文件,保存ReduceTask输出的全部的key-value
,即最后结果阶段定义排序
shuffle
线程拷贝MapTask指定分区的数据