1。背景当我们的hadoop集群运行了一段时间后,各个DataNode上的数据分布不一定是均匀分布的。例如:我们向现有集群添加了一个新的DataNode。2.什么是平衡?这是我自己的简单理解。所谓平衡,就是每个DataNode的利用率与集群的利用率之差不超过给定的阈值百分比。这里的平衡指的是各个DataNode之间的平衡,同一个DataNode之间的磁盘是不会平衡的。2.1每个DataNode的Utilization计算DataNode的Utilization=dfs使用的空间/分配给dfs的空间。注意:分配给dfs的空间不是磁盘的总空间。2.2集群的利用率集群的利用率=每个datanodedfs使用的空间/每个datanode的总空间2.3平衡假设平衡阈值是5%,集群的利用率是37.5,那么利用率每个节点的32.5%到42.5%被认为是平衡的。也就是说,在极端情况下,DataNode的利用率变化幅度可达10%。3、hdfsbalancer语法[hadoopdeploy@hadoop01~]$hdfsbalancer--helpUsage:hdfsbalancer[-policy
datanode(默认):当每个DataNode都平衡时,集群就是平衡的。blockpool:当每个DataNode中的blockpool都平衡时,集群就平衡了。exclude不参与平衡的DataNode节点包含参与平衡的DataNode节点sourceonly选择指定的data节点作为源节点blockpoolsBalancer只在指定的blockpools中运行idleiterations退出前的连续空闲迭代次数(-1表示无限制)-runDuringUpgrade是否正在进行在HDFS升级期间运行平衡器。通常这不是必需的,因为这不会影响过度使用的计算机上的已用空间。-asService作为一个长期运行的服务运行4.运行一个简单的平衡案例4.1设置平衡数据传输带宽[hadoopdeploy@hadoop01~]$hdfsdfsadmin-setBalancerBandwidth10485760Balancer带宽设置为10485760[hadoopdeploy@hadoop01~]$当我们的集群负载需要降低这个值。当我们的集群负载较低时,可以适当增加这个值。4.2执行banalce[hadoopdeploy@hadoop01~]$hdfsbalancer-policydatanode-threshold52023-03-2614:10:09,785INFObalancer.Balancer:使用阈值5.02023-03-2614:10:09,786INFObalancer.Balancer:namenodes=[hdfs://hadoop01:8020]2023-03-2614:10:09,786INFObalancer.Balancer:parameters=Balancer.BalancerParameters[BalancingPolicy.Node,threshold=5.0,maxidleiteration=5,#excludednodes=0,#includednodes=0,#sourcenodes=0,#blockpools=0,在升级期间运行=false]2023-03-2614:10:09,786INFObalancer.Balancer:includednodes=[]2023-03-2614:10:09,786INFObalancer.Balancer:excludednodes=[]2023-03-2614:10:09,786INFObalancer.Balancer:sourcenodes=[]TimeStampIteration#BytesAlreadyMovedBytesLeftToMove正在移动的字节NameNode2023-03-2614:10:09,787INFObalancer.NameNodeConnector:getBlocks对hdfs://hadoop01:8020的调用将速率限制为每秒20个2023-03-2614:10:10,392INFObalancer.Balancer:dfs.namenode.get-blocks.max-qps=20(default=20)2023-03-2614:10:10,392INFObalancer.Balancer:dfs.balancer.movedWinWidth=5400000(default=5400000)2023-03-2614:10:10,392INFObalancer.Balancer:dfs.balancer.moverThreads=1000(default=1000)2023-03-2614:10:10,392INFObalancer.Balancer:dfs.balancer.dispatcherThreads=200(默认=200)2023-03-2614:10:10,392信息平衡器。平衡器:dfs.balancer.getBlocks.size=2147483648(默认=2147483648)2023-03-2614:10:10,392信息平衡器。平衡器:dfs。balancer.getBlocks.min-block-size=10485760(default=10485760)2023-03-2614:10:10,392INFObalancer.Balancer:dfs.datanode.balance.max.concurrent.moves=100(default=100)2023-03-2614:10:10,392信息平衡器。平衡器:dfs.datanode.balance.bandwidthPerSec=104857600(默认值=104857600)2023-03-2614:10:10,395信息平衡器。平衡器:dfs.balancer.max-size-to-move=10737418240(默认值=10737418240)2023-03-2614:10:10,395INFObalancer.Balancer:dfs.blocksize=134217728(默认=134217728)2023-03-2614:10:10,401INFOnet.NetworkTopology:添加新节点:/default-rack/192.168.121.141:98662023-03-2614:10:10,401INFOnet.NetworkTopology:添加新节点:/default-rack/192.168.121.140:98662023-03-2614:10:10,401INFOnet.NetworkTopology:添加新节点:/default-rack/192.168.121.142:98662023-03-2614:10:10,402INFObalancer.Balancer:0过度使用:[]2023-03-2614:10:10,402INFObalancer.Balancer:0未充分利用:[]2023-3-2614:10:1000B0B0B0hdfs://hadoop01:8020集群平衡。退出...2023-3-2614:10:10平衡耗时810.0毫秒[hadoopdeploy@hadoop01~]$5、参考文档1、https://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-hdfs/HdfsUserGuide.html#Balancer2、https://help.aliyun.com/document_detail/449686.html
