最近在搞balance优化,借此机会,打算整理总结一下balance的机制。
1、先看balance 的命令:
$HADOOP_HOME/sbin/start-balancer.sh -h
Usage: java Balancer
[-policy <policy>] the balancing policy: datanode or blockpool
[-threshold <threshold>] Percentage of disk capacity
含义比较明显,默认使用的datanode policy,用的时候一般设置一下 threshold 就行,这个参数是触发进行balance的阈值,默认是10,意思是集群中datanode空间使用率差了10%就开始balance
2、如何限制balance时所占用的带宽
打开balance的时候,需要加上一个额外的命令,限制balance操作挪动数据块所占的带宽:
$HADOOP_HOME/bin/hdfs dfsadmin -setBalancerBandwidth 5388608
上面命令表示设置balance带宽5M,可以根据集群繁忙程度动态调制
3、balance 流程
先获取namenode连接,主要的操作都需要跟namenode交互: