mapreduce程序效率的瓶颈在于两点:

  1:计算机性能

  2:I/O操作优化

优化无非包括时间性能和空间性能两个方面,存在一下常见的优化策略:

  1:输入的文件尽量采用大文件

    众多的小文件会导致map数量众多,每个新的map任务都会造成一些性能的损失。所以可以将一些小文件在进行mapreduce操作前进行一些预处理,整合成大文件,或者直接采用ConbinFileInputFormat来作为输入方式,此时hadoop会考虑节点和集群的位置信息,已决定将哪些文件打包到同一个单元之中。

  2:合理分配map和reduce任务的数量

    通过属性mapred.tasktracker.map.tasks.maximum和mapred.tasktracker.reduce.tasks.maximum分别可以配置单个节点上map任务和reduce任务的最大数量。

  3:压缩中间数据,减少I/O

  4:在map后先进行combine处理,减少I/O

 

参考资料:《Hadoop 实战》–机械工业出版社

版权声明:本文为c840136原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/c840136/archive/2013/03/10/2952887.html