@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指定分區的數據