Hadoop2.6 Balance运行速度优化

    Hadoop的HDFS集群非常容易出现机器与机器之间磁盘利用率不平衡的情况,比如集群中添加新的数据节点。当HDFS出现不平衡状况的时候,将引发很多问题,比如MR程序无法很好地利用本地计算的优势,机器之间无法达到更好的网络带宽使用率,机器磁盘无法利用等等。

    随着HDFS集群规模的不断增大,默认的配置参数,不能满足快速balancer的要求,需要对参数进行调优。

一、修改hdfs-site.xml配置文件

1.修改dfs.datanode.max.transfer.threads = 8192 (默认值4096),指定用于在DataNode间传输block数据的最大线程数;

2.修改dfs.datanode.balance.max.concurrent.moves = 50(默认值5),指定DataNode上同时用于balance待移动block的最大线程个数.

二、调整Balancer带宽限制

根据机器带宽调整Balancer带宽限制,执行以下命令,限制单机带宽为200MB:

hdfs dfsadmin -setBalancerBandwidth 209715200

三、执行balancer

hdfs balancer -threshold 20 &>> /tmp/balancer_`date +%F`.log &

-threshold 默认设置:10,参数取值范围:0-100,参数含义:判断集群是否平衡的目标参数,每一个datanode存储使用率和集群总存储使用率的差值都应该小于这个阀值 ,理论上,该参数设置的越小,整个集群就越平衡,但是在线上环境中,hadoop集群在进行balance时,还在并发的进行数据的写入和删除,所以有可能无法到达设定的平衡参数值。

四、验证

查看日志:/tmp/balancer_`date +%F`.log
过滤出以下信息,能看出balancer的速度

Aug 14, 2019 4:29:18 PM           1              7.74 GB           100.57 GB              10 GB
Aug 14, 2019 4:36:37 PM           2             11.91 GB            95.10 GB              10 GB
Aug 14, 2019 4:41:16 PM           3             14.55 GB            90.28 GB              10 GB
Aug 14, 2019 4:51:25 PM           4             20.59 GB            87.62 GB              10 GB
Aug 14, 2019 4:52:13 PM           5             30.70 GB            82.40 GB              10 GB
Aug 14, 2019 4:52:56 PM           6             40.81 GB            72.21 GB              10 GB
Aug 14, 2019 4:53:46 PM           7             50.82 GB            62.02 GB              10 GB
Aug 14, 2019 4:54:35 PM           8             60.85 GB            51.94 GB              10 GB
Aug 14, 2019 4:55:25 PM           9             70.92 GB            41.83 GB              10 GB
Aug 14, 2019 4:56:06 PM          10             80.95 GB            31.12 GB              10 GB
Aug 14, 2019 4:56:45 PM          11             88.53 GB            21.02 GB              10 GB
Aug 14, 2019 4:57:28 PM          12             98.58 GB            13.37 GB              10 GB
Aug 14, 2019 4:58:05 PM          13            108.60 GB             3.24 GB              10 GB
Aug 14, 2019 4:58:14 PM          14            108.60 GB                 0 B               -1 B
Aug 14, 2019 4:58:15 PM  Balancing took 42.461133333333336 minutes

以上方法并不能提高性能,还需要代码级的优化:参考Hdfs-13813\Hdfs-9412\HDFS-8824以及hadoop3.1代码优化hdfs balancer:将getDatanodeStorageReport和getblocks的请求发送到Namenode standby以及忽略小数据块。

Hdfs-site.xml中添加 

  
    dfs.namenode.balancer.request.standby
    true
  

  
    dfs.balancer.getBlocks.min-block-size
    10485760
  

你可能感兴趣的:(hadoop)