分享

请问各位 hadoop balancer 的问题

desehawk 发表于 2014-4-13 15:20:19 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 1 12768
请问各位 hadoop balancer 的问题

问题点就是平衡没有达到预计的目标,预计要移动600多G的数据,可是才一开始就因为5轮没有移动数据退出了,见out日志

启动命令
./bin/start-balancer.sh -threshold 6 > ./logs/balancer.log 2>&1 &
out日志 logs/hadoop-mysql-balancer-YUNWEI-HADOOP-MASTER.out
  1. Time Stamp               Iteration#  Bytes Already Moved  Bytes Left To Move  Bytes Being Moved
  2. Mar 06, 2014 21:28:30 AM          0                 0 KB            614.5 GB              20 GB
  3. Mar 06, 2014 21:28:31 AM          1                 0 KB            614.5 GB              20 GB
  4. Mar 06, 2014 21:28:32 AM          2               443 KB            614.5 GB              20 GB
  5. Mar 06, 2014 21:28:33 AM          3               443 KB            614.5 GB              20 GB
  6. Mar 06, 2014 21:28:34 AM          4            891.85 KB            614.5 GB              20 GB
  7. Mar 06, 2014 21:28:35 AM          5            891.85 KB            614.5 GB              20 GB
  8. Mar 06, 2014 21:28:36 AM          6            891.85 KB            614.5 GB              20 GB
  9. Mar 06, 2014 21:28:37 AM          7            891.85 KB           614.49 GB              20 GB
  10. Mar 06, 2014 21:28:38 AM          8            891.85 KB           614.49 GB              20 GB
  11. No block has been moved for 5 iterations. Exiting...
  12. Balancing took 10.023 seconds
复制代码

最后我把均衡debug日志打开来,得到了如下的信息
2014-03-10 11:03:49,613 DEBUG org.apache.hadoop.ipc.RPC: Call: complete 10
2014-03-10 11:03:49,614 DEBUG org.apache.hadoop.ipc.Client: IPC Client (47) connection to /192.168.100.178:8020 from mysql sending #197
2014-03-10 11:03:49,629 DEBUG org.apache.hadoop.ipc.Client: IPC Client (47) connection to /192.168.100.178:8020 from mysql got value #197
2014-03-10 11:03:49,629 DEBUG org.apache.hadoop.ipc.RPC: Call: delete 15
2014-03-10 11:03:49,631 DEBUG org.apache.hadoop.hdfs.DFSClient: Wait for lease checker to terminate
2014-03-10 11:03:49,632 DEBUG org.apache.hadoop.hdfs.DFSClient: LeaseChecker@DFSClient[clientName=DFSClient_1056585640, ugi=mysql (auth:SIMPLE)]: java.lang.Throwable: for testing
        at org.apache.hadoop.hdfs.DFSClient$LeaseChecker.toString(DFSClient.java:1474)
        at java.lang.String.valueOf(String.java:2838)
        at java.lang.StringBuilder.append(StringBuilder.java:132)
        at org.apache.hadoop.hdfs.DFSClient$LeaseChecker.run(DFSClient.java:1463)
        at java.lang.Thread.run(Thread.java:679)
is interrupted.
java.lang.InterruptedException: sleep interrupted
        at java.lang.Thread.sleep(Native Method)
        at org.apache.hadoop.hdfs.DFSClient$LeaseChecker.run(DFSClient.java:1460)
        at java.lang.Thread.run(Thread.java:679)








已有(1)人评论

跳转到指定楼层
pig2 发表于 2014-4-13 15:25:26
首先看一下集群之间的磁盘空间是否一致,如果不一致肯定是不平衡的,这是由Balance程序的开发原则导致的,(在执行数据重分布的过程中,必须保证数据不能出现丢失,不能改变数据的备份数,不能改变每一个rack中所具备的block数量。)
解决方案:
1 继续使用现有的Balancer程序,但是修改集群中的机器分布。将磁盘空间小的机器分叉到不同的rack中去。
2 修改Balancer程序,允许改变每一个rack中所具备的block数量,将磁盘空间告急的rack中存放的block数量减少,或者将其移动到其他磁盘空间富余的rack中去。
详细可看:
HADOOP HDFS BALANCER介绍及经验总结


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条