Hadoop Balancer运行速度优化
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、循環執行,直到達到平衡標準
總結
以上是生活随笔為你收集整理的Hadoop Balancer运行速度优化的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: js的校验
- 下一篇: ORA-65096: 公用用户名或角色名