【Hadoop】MapReduce工作流程

MapReducer工作流程

请添加图片描述

读数据

1.客户端提交作业任务;

2.Job根据作业任务获取文件信息;

3.InputFormat将文件按照设定的切片大小(一般切片大小等于HDFS中的Block块大小)进行切片操作,并将切片的数据读入并生成一个MapTask任务;

Mapper

4.MapTask通过InputFormat获得RecordReader,从InputSplit中获取并解析出对应的key-value;

5.将解析的key-value经由编写的map()方法进行处理并产生新的key-value;

6.将生成的key-value进行第一次排序,排序后的数据将进行落盘操作;

Shuffle

7.由Map阶段生成的key-value首先进入(位于内存中的)一个环形缓冲区,该缓冲区的大小默认为100M;

8.当环形缓冲区中的数据大小达到整个缓冲区大小的80%时,缓冲区将会把数据溢出并进行分区和排序操作,之后将会进行第一次溢写操作,完成溢写后可以对数据进行合并(combiner);

9.此时数据可以进行再次的分区、排序、合并,之后将溢出到文件;

Reducer

10.ReducerTask将数据拷贝到本地磁盘,并进行归并排序操作;

11.按照key值将数据进行分组操作,相同的key的数据将会由一个reducer方法进行处理;

12.最后ReduceTask将汇总所有reducer()方法输出的结果;

写数据

13.OutputFormat从Reducer中获取数据并通过RecordWriter将数据写入文件。

你可能感兴趣的:(大数据,hadoop,mapreduce)