MapReduce简介

MapReduce:

概念:MapReduce主要是分布式编程的一个编程模型

优势:

1、允许我们处理输入输出的限制

2、他是个无共享架构,每个节点可以并行处理该节点上的数据, 无需包含其他节点的运行情况

3、他能高效处理可能因为硬件问题造成的各种执行故障

4、数据局部性,就是说代码找到数据所在节点,并在该节点对数 据进行处理

5、他是从开发人员那里提炼分布是分层的一种办法。在编写程序时,不需要编写多线程程序。mapreduce确保代码能够获得不同节点上的数据,同时并行无间断的处理数据

mapreduce流的六个阶段:

1、input:mapper读取数据块

2、split:mapper从基于记录的数据块中将每条记录传递给map函数(对记录的识别非常重要)

3、mapping:mapper的业务逻辑会构成一张图

4、shuffling:把多个节点上的具有相同key的mapper输出数据被聚合起来,重新排序,传送给一个单独的reducer

5、reduceing:做最后的聚合工作,并将数据存储回HDFS

6、final result:

例如

1、输入数据块

hbase pig oozie

hive hive oozie

hbase hive pig

2、执行split操作,生成key-value键:

k1=0,v1=hbase pig oozie

k2=16,v2=hive hive oozie

k3=32,v3=hbase hive pig

3、key-value建传输给mapper,生成list(k,v)

【注意:mapper的执行结果写回执行处理程序的本地节点上,而不是写到HDFS上】

4、根据key值,数据聚合,表达形式k,list(v)

5、对结果继续执行聚集,聚集结果写进RDFS。

 

原文地址:https://www.cnblogs.com/chenyaling/p/5517353.html