做Hadoop集群维护大概有4年多了,其中有小三年都在维护cdh版本的集群,下面就千节点集群的HDFS调优写一下个人心得,大家可以给我指正错误的地方。
1、dfs.block.size, dfs.blocksize
该参数在5.13.1版本的cdh的默认块大小为128M,此参数事需要根据输入文件的大小以及计算是生产的map来总和考量。一般来说,文件大,集群数量少,还是建议将block size设置大一些的好。目前我维护的千节点集群设置是1GB。
2、balance参数
由于每天的数据较大,并且伴有坏盘或者下线的机器,还有新增的机器也会很频繁,所以集群基本每天都在做balance,偏差值我设置了5%也涉及了同时移动副本数,以及平衡带宽,目前看状态还可以。
3、单个节点balance
hdfs-site.xml的高级代码段里增加dfs.disk.balancer.enabled 值设置为true
hdfs diskbalancer -plan cdh3(需要均衡的机器) 会生成一个*.plan.json的文件
hdfs diskbalancer -execute /system/diskbalancer/2017-Jun-26-10-10-14/cdh04.plan.json
hdfs diskbalancer -query cdh04
DONE的时候表示已经执行完毕
4、并行移动块数
maximum concurrent moves 这个参数编写的数值一定要考虑好自己现有集群的带宽,还有自己设置的副本大小,大了容易拥堵网络,小了速度又太慢。
5、平衡带宽数
dfs.balance.bandwidth.persec
dfs.datanode.balance.bandwidth.persec</