第三章 MapReduce

3.1 MapReduce基础

任务的分解与结果的汇总。

MapReduce框架负责分布式存储、工作调度、负载均衡、容错处理、网络通信.....复杂的任务有框架完成。



 

 

MapReduce集群行为:

1、任务调度与执行

MapReduce任务有JobTracker和TaskTracker两类节点控制。JT负责调度和管理TJ,TJ负责任务的并行计算。TaskTracker必须运行在DataNode上,DN即是数据节点,也是计算节点。

2、本地计算

“移动计算比移动数据更经济”!把计算节点和数据节点置于同一个节点上,这种方式减少了网络开销。split通常应小于或等于HDFS数据块大小,保证split不会跨越两台计算机存储。

3、Shuffle过程

Mapper的数据结果按照key划分为R(预先设定的Reducer数量)份,划分使用哈希函数,hash(key) mod R,保证一个范围内的key一定有某个Reduce处理

4、combine

将中间结果拥有相同key值的一组数据进行合并,合并后为<key,list<value>>。Combine是Mapper的一部分,在map函数后shuffle之前执行。保证combine执行多次,得到的结果应该是一样的。

5、读取中间结果

完成combine和shuffle后,通知JobTracker中间结果文件的存放位置,JK告诉Recuer到哪个Mapper节点上取数据。Mapper的输出结果写道本地磁盘,不是HDFS,Reducer结束后数据被删除。

6、任务管道

R个Reducer会产生R个结果,这个R结果可能被当成另一计算任务的输入,并开始另一个MapReduce任务。

3.2 样例分析:单词计数

 



 

 

 3.3 MapReduce 



 

 


 





 

 

 

 Map任务和Reduce任务执行时必须获得一个slot才能继续,否则只能等待,执行完成后释放slot。

slot分为Map Slots和Reduce Slots,分别对应可执行的Mapper数和Reducer数,mapred-site.xml可以设置。

3.4 倒排索引

 P74

猜你喜欢

转载自mvplee.iteye.com/blog/2226207