赞
踩
start-balancer.sh -threshold 5
-threshold 默认设置:10,参数取值范围:0-100,参数含义:判断集群是否平衡的目标参数,每一个 datanode 存储使用率和集群总存储使用率的差值都应该小于这个阀值 ,理论上,该参数设置的越小,整个集群就越平衡,但是在线上环境中,hadoop集群在进行balance时,还在并发的进行数据的写入和删除,所以有可能无法到达设定的平衡参数值。
stop-balancer.sh
限制带宽,单位字节
hdfs dfsadmin -setBalancerBandwidth 104857600(100M)
-include
参数含义:要进行均衡的datanode列表
-exclude
参数含义:不想进行均衡的datanode列表
因为hadoop2.x还不能自动对磁盘进行均衡,我们在改节点的hdfs-site.xml中添加了几个参数用来改变数据存储的策略已达到均衡的目的,添加完参数后重启这个节点的datanode即可。
<property>
<name>dfs.datanode.fsdataset.volume.choosing.policy</name>
<value>org.apache.hadoop.hdfs.server.datanode.fsdataset.AvailableSpaceVolumeChoosingPolicy</value>
</property>
<property>
<name>dfs.datanode.available-space-volume-choosing-policy.balanced-space-threshold</name>
<value>10737418240</value>
</property>
<property>
<name>dfs.datanode.available-space-volume-choosing-policy.balanced-space-preference
fraction</name>
<value>0.85f</value>
</property>
参数解释
dfs.datanode.available-space-volume-choosing-policy.balanced-space-threshold 表示的是剩余容量最大的磁盘与最小的磁盘的容量之差(10G默认值)
dfs.datanode.available-space-volume-choosing-policy.balanced-space-preference-fraction 表示的是如果当前副本的大小大于lowAvailableVolumes里面所有的磁盘最大的可用空间,那么会存放到highAvailableVolumes里面,除此之外的情况会以85%的概率存放到highAvailableVolumes,15%的概率存放到lowAvailableVolumes。
注意:
这个对于已经存储到磁盘上面的数据是无效的,只针对后续存储的数据有效,对于已经存储的数据使用均衡进行数据转移。
DiskBalancer内部提供了许多类别的命令操作,比如下面的查询命令
hdfs diskbalancer -query node.mycluster.com
我们也可以执行相应的plan命令来生成plan计划文件.
hdfs diskbalancer -uri hdfs://mycluster.com -plan node.mycluster.com
然后我们可以用生成好后的json文件进行DiskBalancer的执行
hdfs diskbalancer -execute /system/diskbalancer/nodename.plan.json
当然,如果我们发现我们执行了错误的plan,我们也可以通过cancel命令进行清除:
hdfs diskbalancer -cancel /system/diskbalancer/nodename.plan.json
或
hdfs diskbalancer -cancel -node
在DiskBalancer中会涉及到比较多的object-json的关系转换,所以你会看到一些带.json后缀的文件
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。