标签:
Hadoop性能调优
Hadoop在处理任务时性能是否足够好,这里的性能主要包括时间和空间两个指标。调优一般要注意以下几个方面:
1. 输入文件尽可能的大
HDFS的默认块文件的大小为64M,假如有1000,个文件,每个文件的大小都是2.3m,那么存储这些文件需要占用1000个块,那么一共会占用64000M大小的空间,如果将这些文件合并大小为2.2G,只有36个块,占用空间会小很多。而1000个文件会产生1000个map任务,么个map任务都会造成一定的性能损失,这对以上数据如果合并成一个大文件那么执行时间是4分钟,而不合并的执行时间为33分钟。
2. 压缩文件
分布式系统中各节点的数据交换是影响整体性能的一个重要因素。Hadoop在map阶段先将数据放在缓冲区,如果数据过大则会写入磁盘,等map任务结束再从磁盘中取出复制到reduce任务节点,如果数据量较大会花费很长时间。
一个有效的办法就是对map输出进行压缩,这样可以减少存储空间,加快在局域网传输速度,减少内存和磁盘io时间,可以设置maperd.compress.map.output=true来设置是否压缩,通过maperd.map.output.compression.condec设置压缩格式。
3. 过滤数据
在海量数据输入作业时将其中无用的数据,噪声数据和异常数据清掉,降低数据的处理规模。
4. 修该作业属性
属性mapred.tasktracker.map.tasks.maximum和mapred.tasktracker.map.tasks.maximum,这两个属相的默认值均为2,也就是说每个节点运行状态的map和reduce任务数为2,而较为理想的是在10-100个之间。通过设置一个较大数值,增加map和reduce的任务数来提高性能。
标签:
原文地址:http://blog.csdn.net/mapengbo521521/article/details/43851383