您的位置:首页 > 运维架构

Hadoop Balancer运行速度优化

2017-10-20 10:09 441 查看
1.修改dfs.datanode.max.transfer.threads = 4096 (如果运行hbase的话建议为16384),指定用于在DataNode间传输block数据的最大线程数,老版本的对应参数为dfs.datanode.max.xcievers

2.修改dfs.datanode.balance.bandwidthPerSec = 31457280 ,指定DataNode用于balancer的带宽为30MB,这个示情况而定,如果交换机性能好点的,完全可以设定为50MB,单位是Byte,如果机器的网卡和交换机的带宽有限,可以适当降低该速度,默认是1048576(1MB)

3.修改dfs.datanode.balance.max.concurrent.moves = 50,指定DataNode上同时用于balance待移动block的最大线程个数,这个值默认是5

4.如果配置没生效或者不合理的话,Balancer会有如下警告信息:

16/09/14 10:10:45 WARN balancer.Dispatcher: Failed to move blk_2056340845_2915024 with size=142227625 from 192.168.1.48:50010:DISK to 192.168.1.37:50010:DISK through 192.168.1.40:50010: Got error, status message opReplaceBlock BP-457606559-192.168.1.30-1258625319448:blk_2056340845_2915024 received exception java.io.IOException: Got error, status message Not able to copy block 1252320440 to /192.168.1.37:39630 because threads quota is exceeded., copy block BP-457606559-192.168.1.30-1258625319448:blk_2056340845_2915024 from /192.168.1.40:50010, block move is failed

5.运行balancer

su hdfs

hdfs dfsadmin -setBalancerBandwidth 104857600 #临时设置带宽

nohup hdfs balancer -threshold 10 & #10为各节点存储的浮动比例10%上下浮动

6.Hadoop Balancer的步骤:

1、从namenode获取datanode磁盘的使用情况

2、计算需要把哪些数据移动到哪些节点

3、分别移动,完成后删除旧的block信息

4、循环执行,直到达到平衡标准
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: