关于Hadoop性能调优的总结

来源:爱站网时间:2022-11-01编辑:网友分享
今天所分享的关于Hadoop性能调优的总结内容希望能在工作中帮你处理问题,需要的朋友可以看看爱站技术频道小编收集的文章,能让你从中获取精彩的知识内容。

最近看了些Hadoop性能调优的文章,现总结如下。

1、关于集群物理机器:

配置noatime选项。(配置方式:/etc/fstab)(相关知识点:atime,ctime,mtime。)

对于datanode/tasktracker机器,不需要配置raid或lvm。

尽量避免使用到tasktracker的swap。

磁盘问题会导致task重试,降低效率。在blacklist中的node大多是因为磁盘问题,smart monitor 在磁盘资源。

2、使用数据压缩配置:

在mapred的中间结果(map输出)或有后续任务的mapred任务的输出,使用压缩配置选项。(mapred.compress.map.output,mapred.output.compress)

增加一部分的CPU开销,减少IO开销(包括网络IO和磁盘IO)

3、合理的设置task的数目:

任务的input过大时,split的数量很多,会导致过多的map task。可以通过加大hdfs block size来减小maptask的数量。( hadoop distcp -Ddfs.block.size=$[256*1024*1024] /path/to/inputdata /path/to/inputdata-with-largeblocks)

如果任务数多且小,比如在一分钟之内完成,减少task数量以减少任务初始化的消耗。可以通过配置JVM重用选项减少task的消耗。(mapred.job.reuse.jvm.num.tasks表示一个job的task可利用相同的JVM顺序执行多少个)

任务数和集群slot数目之间应满足一定的关系。比如slot的数量是100个,那么最好不要有101个mapper(类似于图中的关键路径的理念,不论你那100个mapper多快,最后一个不做完,reduce就不能起,也就是说,近似相当于调度两轮map的时耗)。reduce task的数量有两种方案推荐,比如0.95*reduce slot。一轮reduce完成,预留的reduce task是用作重做的。或1.75*reduce slot,同样道理,只不过调度两轮reduce,负载更均衡

4、合理的利用combiner:

首先,从业务场景出发,reduce的结果应该不受影响。其次,combiner所带来的性能消耗要远小于网络传输和排序所带来的消耗。这个的判断可以从几个方面来:shuffle的数据量;spill的counter。(理解shuffle sort的过程)

5、使用合理的数据类型:

非文本类型的数据可选择非Text类型的二进制writable类型,避免类如数值类型转换到string的CPU性能消耗。可根据自己的业务特点定义高效的writable类型。

采用intwritable或者longwritable时,若数值大小差异很大,可以采用变长的类型,减少磁盘和IO消耗。

6、在map或reduce中注意重用writable对象

linux

不知道朋友们看明白了关于Hadoop性能调优的总结内容没有,还有哪些地方需要爱站技术频道小编指导的,欢迎来网站留言,小编提供了不少内容给大家,需要可以关注下。

上一篇:Linux搭建Samba的详细步骤

下一篇:Hadoop添加和删除节点的详细介绍

您可能感兴趣的文章

相关阅读

热门软件源码

最新软件源码下载