博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
(转)hadoop balancer(重新平衡)
阅读量:5902 次
发布时间:2019-06-19

本文共 2350 字,大约阅读时间需要 7 分钟。

借鉴:https://blog.csdn.net/mnasd/article/details/80369603?utm_source=blogxgwz2

参考文档:
 
     CDH官网文档

1.快速入门

当前存储集群的DN的空间占用率很不均衡,最大的使用率接近100%,最小的使用率不到35%。
为了平衡空间的占用率,我们在CDH上开启了“重新平衡”。
调用的脚本实际如下:
hdfs/hdfs.sh ["balancer","-threshold","10.0","-policy","DataNode”]
查看当前的进度条:
Successfully moved blk_1255414776_181709174 with size=134217728 from 172.16.16.66:50010:DISK to 172.16.16.39:50010:DISK through 172.16.16.219:50010
重新平衡并没有将空间占用率最高的DN优先执行。

2.命令行优化办法

查看hdfs balancer的命令如下:
[root@R720ip39 ~]# hdfs balancer -help
Usage: java Balancer
    [-policy <policy>]    the balancing policy: datanode or blockpool
    [-threshold <threshold>]    Percentage of disk capacity
    [-exclude [-f <hosts-file> | comma-sperated list of hosts]]    Excludes the specified datanodes.
    [-include [-f <hosts-file> | comma-sperated list of hosts]]    Includes only the specified datanodes.
为了更高效率的执行balancer操作,建议如下:
-threshold 30  设置越大,越快结束,并且优先解决DN占用率高的
参数含义:判断集群是否平衡的目标参数,每一个 datanode 存储使用率和集群总存储使用率的差值都应该小于这个阀值 ,理论上,该参数设置的越小,整个集群就越平衡,但是在线上环境中,hadoop集群在进行balance时,还在并发的进行数据的写入和删除,所以有可能无法到达设定的平衡参数值。
-include       包含如下的DN列表
dfs.balance.bandwidthPerSec  300MB(我们计算集群的设置)
参数含义:设置balance工具在运行中所能占用的带宽,设置的过大可能会造成mapred运行缓慢。
执行命令如下:
hdfs balancer -policy datanode -threshold 30 -include -f /tmp/hdfs-blancer.txt

3.CDH中优化balancer实例

在CDH中,balancer是通过如下实例实现的。

几个优化项:

优化一: Balancer 阈值越高,需要平衡的量越少,DN占用率不够均衡;阈值越低,需要平衡的量越大, DN占有率越均衡;
优化二:增大Balancer的Java堆大小
优化三:高级配置:
hdfs-site.xml 高级配置代码段(安全阀)
#在DataNode和balancer实例都需要配置
<property>
  <name>dfs.datanode.balance.max.concurrent.moves</name>
  <value>50</value>
</property>
#在balancer实例配置
<property>
  <name>dfs.balancer.moverThreads</name>
  <value>5000</value>
</property>
<property>
  <name>dfs.balancer.dispatcherThreads</name>
  <value>5000</value>
</property>
<property>
  <name>dfs.balancer.max-size-to-move</name>
  <value>53687091200</value>
</property>

均衡block,执行start-balancer.sh

这个会非常耗时,但启动后不中断datanode服务执行,会占用带宽和资源。可调整balance执行性能:
1)如果不balance,那么cluster会把新的数据都存放在新的node上,这样会降低mapred的工作效率
2)设置平衡阈值,默认是10G[dfs.datanode.available-space-volume-choosing-policy.balanced-space-threshold=10737418240]。该属性表示当各datanode的空闲空间差异达到10G时,就认为不平衡,将触发datanode之间的balance,将空闲空间少的datanode的block向空闲空间多的datanode迁移,直到差异处于10G范围内。
值越低各节点越平衡,但消耗时间也更长。例如:start-balancer.sh -threshold 5
3)设置balance的带宽,默认只有1M/s [dfs.datanode.balance.bandwidthPerSec=1048576]

转载于:https://www.cnblogs.com/yjt1993/p/10412708.html

你可能感兴趣的文章
如何做好基层技术管理工作?
查看>>
大数据和云计算的鞍马情-【软件和信息服务】2014.08
查看>>
苏州FreeNAS+ESXi5数据恢复案例
查看>>
rsync重要功能特性02
查看>>
WCF宿主与服务托管
查看>>
案例导学《系统集成项目管理工程师考试考点分析与真题详解》
查看>>
关于SIEM和LM产品形态的小调查
查看>>
【思想篇】要感谢那些曾经慢待你的人
查看>>
学习沟通技巧--- SOFTEN法则与SOLER法则
查看>>
Windows Server 2008 将计算机加入到指定组织单元
查看>>
Ubuntu系统(六)-安装SSH服务端和客户端及Telnet
查看>>
MongoDB经典面试题集锦
查看>>
四、System Center Virtual Machine Manager 2012 添加Citrix Xenserver 6.0主机
查看>>
Google Glass是工具不是玩具
查看>>
Asp.Net MVC4入门指南(10):第三方控件Studio for ASP.NET Wijmo MVC4 工具应用
查看>>
SharePoint 2010整合Silverlight 4应用 - 任务管理
查看>>
javascript 字符串操作 自定义函数
查看>>
安装配置vsftp
查看>>
手机辐射对人体健康没有危害
查看>>
AutoLISP查询椭圆的相关属性
查看>>