查看当前的数据分布情况:
hdfs dfsadmin -report
现象一:
集群上经常会增添新的DataNode节点,或者人为干预将数据的副本数降低或者增加。
会造成datanode数据存储不均衡,一个datanode使用了70%,而有一个只使用了30%.
解决:
通过执行hadoop提供的balancer,来进行datanode之间数据balance。
步骤:
1、命令行设置宽带(如果在启动Hadoop集群前已优化该参数则不需要执行此步骤)
参数:
10M/s速度命令行设置:
hdfs dfsadmin -setBalanacerBandwidth 10485760
2、设置允许的磁盘容量的百分比,默认10%,设置5,也就是容忍datanode数据的差距是5%
sbin/start-balancer.sh -threshold 5
注:也可以选择需要进行数据balance的个别datanode进行执行
注:建议找一个比较空闲的的Datanode执行,建议不要在NameNode执行
sbin/start-balancer.sh -threshold 5 -include dn1,dn2,dn3
1,2,3进行负载均衡
sbin/start-balancer.sh -threshold 5 -exclude dn1,dn2,dn3
1,2,3之外的节点进行
负载均衡
现象二:
datanode内磁盘之间的数据不均衡。datanode上挂载多个磁盘。
01磁盘使用率是70% 02磁盘使用率30%
解决:
这种情况下balancer就不能处理数据平衡,需要使用diskbalancer来平衡磁盘之间的数据。hadoop3.0才开始支持
步骤命令:
可以通过运行 plan 命令在给定的datanode上运行:
hdfs diskbalancer -plan {主机名}
查询从datanode获取磁盘平衡器的当前状态:
hdfs diskbalancer -query {主机名}
执行execute:
hdfs diskbalancer -execute {/system/diskbalancer/XXXXX/{主机名}.plan.json}
取消命令取消正在运行的计划:(最好不使用)
hdfs diskbalancer -cancel {/system/diskbalancer/XXXXX/{主机名}.plan.json}
版权归原作者 还会再见吗烨子 所有, 如有侵权,请联系我们删除。