hadoop mapreduce 优化
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 实战》–机械工业出版社