===== 常见问题 ===== Hadoop的HDFS集群非常容易出现机器与机器之间磁盘利用率不平衡的情况,比如集群中添加新的数据节点。当HDFS出现不平衡状况的时候,将引发很多问题,比如MR程序无法很好地利用本地计算的优势,机器之间无法达到更好的网络带宽使用率,机器磁盘无法利用等等。可见,保证HDFS中的数据平衡是非常重要的。 ===== 执行命令 ===== 在Hadoop中,包含一个Balancer程序,通过运行这个程序,可以使得HDFS集群达到一个平衡的状态,使用这个程序的命令如下: sh $HADOOP_HOME/bin/start-balancer.sh –t 10% 这个命令中-t参数后面跟的是HDFS达到平衡状态的磁盘使用率偏差值。如果机器与机器之间磁盘使用率偏差小于10%,那么我们就认为HDFS集群已经达到了平衡的状态。 ===== Rebalance程序执行过程 ===== - Rebalance Server从Name Node中获取所有的Data Node情况:每一个Data Node磁盘使用情况。 - Rebalance Server计算哪些机器需要将数据移动,哪些机器可以接受移动的数据。并且从Name Node中获取需要移动的数据分布情况。 - Rebalance Server计算出来可以将哪一台机器的block移动到另一台机器中去。 - 需要移动block的机器将数据移动的目的机器上去,同时删除自己机器上的block数据。 - Rebalance Server获取到本次数据移动的执行结果,并继续执行这个过程,一直没有数据可以移动或者HDFS集群以及达到了平衡的标准为止。 Hadoop现有的这种Balancer程序工作的方式在绝大多数情况中都是非常适合的。