zoukankan      html  css  js  c++  java
  • (转)hadoop balancer(重新平衡)

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

    参考文档:

    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]





  • 相关阅读:
    算法训练 表达式计算
    基础练习 十六进制转十进制
    基础练习 十六进制转十进制
    基础练习 十六进制转十进制
    New ways to verify that Multipath TCP works through your network
    TCP的拥塞控制 (Tahoe Reno NewReno SACK)
    Multipath TCP Port for Android 4.1.2
    How to enable ping response in windows 7?
    NS3
    Multipath TCP Port for Android
  • 原文地址:https://www.cnblogs.com/yjt1993/p/10412708.html
Copyright © 2011-2022 走看看