MapReduce:Job
0.术语
MapTask : map任务
Reduce : task
1.编程模型
map(映射) + reduce (化简)
2.
Stage
- 1.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//main()
job.waitForCompletion();
//提交作业给cluster,并等待完成
org.apache.hadoop.mapreduce.job
submit(){
1.确保状态
2.使用新型API
3.connect() //创建cluster对象
4.创建JobSubmitter
5.JobSubmitter.submitJobInternal()
} - 2.
1
2
3
4
5
6
7
8
9
10
11
12
13org.apache.hadoop.mapreduce.JobSubmitter
submitJobInternal{
1.检查输出目录
2.确立hdfs的临时目录
3.取得本地ip
4.创建JobID
5.copyAndConfigureFiles //使用命令行参数设置conf信息
6.int maps = writeSplites() //在临时目录下创建切片文件
7.setConf(maps.map)
8.writeConf() //提交job.xml到提交目录
9.LocalJobRunner.submitJob() //通过执行器提交作业
} - 3.
1
2
3
4
5
6mapred.LocalJobRunner
submitJob(){
1.创建LocalJobRunner.Job内部类对象
2.setXxxxx...
} - 4.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
LocalJobRunner.Job
Job(){
1.通过临时目录下job.xml创建JobConf对象
2.this.start() // ###启动Job线程
}
// 看看Job的run方法
run(){
1.得到切片信息 SplitTaskMetaInfo[]
2.得到Reduce任务数
3.mapRunnables=getMapTaskRunnables(..)
// 得到mapper对应的runnable [Runner.Job.MapTaskRunnable]
4.mapService
//创建供mapper阶段使用的线程池
5.runTask(mapRunnables,mapService,"map")
6.reduceRunnables=getReduceTaskRunnables(jobId, mapOutputFiles)
// 得到reduce对应的Runnable [Runner.Job.ReduceTaskRunnable]
7.reduceService
//创建供reducer阶段使用的线程池
8.runtask(reduceRunnables,reduceService,"reduce")
}
runtask(){
for (Runnable r : runnables){
service.submit(r);
}
}
What is going on after startting the Job?
- Map & Reduce
Phase.1 Map
1.
1
2
3
4
5
6
7
8
9LocalJobRunner.Job.MapTaskRunnable
run(){
1.创建MapAttemptId
2.创建map=MapTask(splitInfo,job.xml)
3.创建mapOutputFiles
4.map.setXxx
5.map.run()
}2.
1 | org.apache.hadoop.mapred.MapTask |
- 3.
1 | MyMaxTempMapper |
Phase 2 Reduce
1.
1
2
3
4
5
6
7
8LocalJobRunner.Job.ReduceTaskRunnable
run(){
1.创建ReduceAttemptId
2.创建reduce=ReduceTask(systemJobFile(结果集输出路径),taskId,mapId.size(映射结果个数),numSlotsRequire(默认:1))
3.创建mapOutputFiles
4.reduce.setXxx
5.reduce.run()
}2.
1 | org.apache.hadoop.mapred.ReduceTask |
- 3.
1 | MyMaxTempReducer |
能否参与评论,且看个人手段。