关于MapReduce

角色:

执行MapReduce任务的角色:JobTracker,TaskTracker,一个Hadoop集群只有一个JobTracker,JobTracker负责管理和调度工作,TaskTracker负责执行工作。

 

数据流:

                  

                          MapReduce工作的简易图                   

                一个Reduce任务的MapReduce数据流 

 

 

 

                      多个Reduce任务的MapReduce数据流

                     

 

                    无Reduce任务的MapReduce数据流

 

MapReduce任务优化:

MapReduce的任务优化自主集中在两个方面:1.计算性能方面的优化 2.I/O操作方面的优化,主要包含六项内容:

1.任务调度

  Hadoop总会将优先任务分配给空闲的机器,使所有任务公平地分享系统资源

  Hadoop会尽量将Map任务分配给InputSplit所在的机器以减少I/O操作。

2.数据预处理与InputSplit的大小

  Hadoop擅长处理少量的大数据,而非大量的小数据。提交MapReduce job前进行预处理,合并数据以提高执行效率。

3.Map和Reduce任务的数量

  合理设置Map任务和Reduce任务的数量对提高效率也使非常重要的。

  MapReduce任务槽:MapReduce任务槽就是这个集群能够运行的最大任务量。

  设置Map数量主要参考Map的运行时间,Reduce任务参考任务槽的数量即可,一般为任务槽的0.95或1.75倍

4.Combine函数

  combine是一个本地合并数据的函数。MapReduce框架运行用户写的combine函数用于本地合并,减少网络I/O操作消耗

5.压缩

  对Map的输出和最终的输出结果进行压缩,减少网络数据传输量。

6.自定义comparator

  自定义数据类型,实现更复杂的目的。

 

Hadoop流:

Hadoop流就是UNIX标准流,不具体介绍。

 

 

posted on 2013-10-17 17:35  大 T  阅读(204)  评论(0编辑  收藏  举报