Hadoop系列——MapReduce过程简版

来源:互联网 发布:淘宝客服电话人工接听 编辑:程序博客网 时间:2024/06/02 21:19

借助一位大牛的图:



我们可以看到图中的几大步骤(大致上分成6步):


Map: Split[拆解] —— Partition[分区] —— Sort[排序] —— Combine[初次整合]——Copy[拷贝下载]——Reduce:Merge[二次整合] 


Split:将文件中的行信息分拆成若干split,再将行信息打散成独立部分,以信息内容为key,以“1”为value;每个输入片的大小是固定的。默认情况下,输入片(InputSplit)的大小与数据块(Block)的大小是相同的。如果数据块(Block)的大小是默认值64MB,输入文件有两个,一个是32MB,一个是72MB。那么小的文件是一个输入片,大文件会分为两个数据块,那么是两个输入片。一共产生三个输入片每一个输入片由一个Mapper进程处理

         (ex:如两行数据,第一行 a b c d a b c d  ;  

                                          第二行a b c d a b c d  ;

经过Split后为Split0:Partition1 a 1,a  1 ,b 1,b 1    

                                  Partition2 c 1,c 1 , d  1,d  1

                     Split2:Partition1 a 1,a 1 ,b 1,b 1   

                                  Partition2 c 1,c 1 , d  1,d  1 )

Partition:用hash将key散列为若干区,方便后面的拷贝下载;默认是只有一个区分区的数量就是Reducer任务运行的数量

          (ex:将Split0中的数据分成Partition1、Partition2,                    

                     将Split1中的数据分成Partition1、Partition2

Sort:将key排序;

Combine:将key相同的整合,并更新value为其出现频率,其实质是压缩数据,方便后续数据的传输;

                 (ex:整合后的Split0:Partition1 a 2 ,b 2    Partition2 c 2 , d  2;

                                           Split1:Partition1 a 2 ,b 2   Partition2 c 2 , d  2;

Copy:由不同的Reduce节点下载各自分区的数据;

                (ex:Reduce1节点 下载 Split0中的Partition1和Split1中的Partition1 ,

                          由Reduce2节点 下载 Split0中的Partition2和Split1中的Partition2 

Merge:将各个Reduce节点中的Partition整合,有相同的key的就合并,并更新value值为其频率;当然Merge完了之 后也会进行一次排序;最后生成HDFS文件。

             (ex:整合后的Reduce1:Partition1 a 4,b 4  

                                      Reduce2: Partition2 c 4 ,d 4 





0 0
原创粉丝点击