0


hadoop调优-HDFS集群数据不均衡处理

查看当前的数据分布情况:
hdfs dfsadmin -report

现象一:
集群上经常会增添新的DataNode节点,或者人为干预将数据的副本数降低或者增加。
会造成datanode数据存储不均衡,一个datanode使用了70%,而有一个只使用了30%.

解决:
通过执行hadoop提供的balancer,来进行datanode之间数据balance。

步骤:
1、命令行设置宽带(如果在启动Hadoop集群前已优化该参数则不需要执行此步骤)
参数:

<property> <name>dfs.datanode.balance.bandwidthPerSec</name> <value>10485760</value> </property>

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上挂载多个磁盘。

<property> <name>dfs.datanode.data.dir</name> <value>/export/grid/01/hadoop/hdfs/data,/export/grid/02/hadoop/hdfs/data,/export/grid/03/hadoop/hdfs/data,/export/grid/04/hadoop/hdfs/data,/export/grid/05/hadoop/hdfs/data,/export/grid/06/hadoop/hdfs/data,/export/grid/07/hadoop/hdfs/data,/export/grid/08/hadoop/hdfs/data,/export/grid/09/hadoop/hdfs/data,/export/grid/10/hadoop/hdfs/data,/export/grid/11/hadoop/hdfs/data,/export/grid/12/hadoop/hdfs/data</value> </property>

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}

标签: hadoop hdfs npm

本文转载自: https://blog.csdn.net/2201_75628103/article/details/142287325
版权归原作者 还会再见吗烨子 所有, 如有侵权,请联系我们删除。

“hadoop调优-HDFS集群数据不均衡处理”的评论:

还没有评论