借鉴: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]

(转)hadoop balancer(重新平衡)的更多相关文章

  1. 优化Hadoop Balancer运行速度

    (如果运行hbase的话建议为16384),指定用于在DataNode间传输block数据的最大线程数,老版本的对应参数为dfs.datanode.max.xcievers 2.修改dfs.datan ...

  2. hadoop balancer

    一.balancer是当hdfs集群中一些datanodes的存储要写满了或者有空白的新节点加入集群时,用于均衡hdfs集群磁盘使用量的一个工具.这个工具作为一个应用部署在集群中,可以由集群管理员在一 ...

  3. Hadoop hadoop balancer配置

    hadoop版本:2.9.2 1.带宽的设置参数: dfs.datanode.balance.bandwidthPerSec   默认值 10m 2.datanode之间数据块的传输线程大小:dfs. ...

  4. Hadoop Balancer源代码解读

    前言 近期在做一些Hadoop运维的相关工作,发现了一个有趣的问题,我们公司的Hadoop集群磁盘占比数值參差不齐,高的接近80%.低的接近40%.并没有充分利用好上面的资源,可是balance的操作 ...

  5. hadoop balancer 二

    1.每次迭代一个datanode会移动不超过如下两者中较小的一个的数据量 1)10G 2)能力阈值 dfs.datanode.balance.bandwidthPerSec 每次迭代时间不会超过20分 ...

  6. HADOOP命令介绍

    一.用户命令1.archive命令 (1).什么是Hadoop archives?Hadoop archives是特殊的档案格式.一个Hadoop archive对应一个文件系统目录. Hadoop ...

  7. Hadoop 2.0命令手册

    1.       FS Shell 1.1     简介 调用文件系统(FS)Shell命令应使用 bin/hadoop fs <args>的形式. 所有的的FS shell命令使用URI ...

  8. 大数据测试之hadoop命令大全

    1.列出所有Hadoop Shell支持的命令 $ bin/hadoop fs -help2.显示关于某个命令的详细信息 $ bin/hadoop fs -help command-name3.用户可 ...

  9. hadoop shell 详解

    概述  所有的hadoop命令均由bin/hadoop脚本引发.不指定参数运行hadoop脚本会打印所有命令的描述.  用法: hadoop [--config confdir] [COMMAND] ...

随机推荐

  1. SqlServer2008 / SqlServer2012 禁用windows登录,sa忘记密码或密码过期如何登陆

    以管理员身份运行cmd 1.cmd 下  停止SqlServer服务,net stop mssqlserver: 2.新建windows账号test,加入administrators组里,授予管理员权 ...

  2. 基于【 bug解决】一 || mysql的ONLY_FULL_GROUP_BY导致的sql语句错误

    一.Mysql错误: In aggregated query without GROUP BY, expression #1 of SELECT list contains nonaggregated ...

  3. 【转载】C#通过StartWith和EndWith方法判断字符串是否以特定字符开始或者结束

    C#开发过程中针对字符串String类型的操作是常见操作,有时候业务需要判断某个字符串是否以特定字符开头或者特定字符结束,此时就可使用StartsWith方法来判断目标字符串是否以特定字符串开头,通过 ...

  4. 开始Swift学习之路

    Swift出来好几个月了,除了同事分享点知识外,对swift还真没有去关心过.GitHub上整理的学习Swift资料还是很不错的,目前也推出了电子书和PDF格式. Swift的语法和我们平常开发的语言 ...

  5. MySQL基础篇

    数据库基础知识 以MySQL为基础 数据库事务 :数据库中一组原子性的SQL操作,彼此状态一致.具有ACID特性. 事务 ACID 特性: 原子性:数据库事务是一个整体,其中的SQL操作要么全部提交成 ...

  6. TestNG并发执行用例详解和范例

    前言 TestNG有多种并发方式支持,方法的并发,class级的并发,test级的并发等:根据实际应用可以灵活的配置和使用,下面分别对几种并发方法进行说明: 一.方法级并发 方法级并发即method级 ...

  7. c# 接口使用

  8. 用js刷剑指offer(连续子数组的最大和)

    题目描述 HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学.今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决.但是,如果向量 ...

  9. DotnetCore下Grpc的简单使用(基于3.0版本)

    目录: 一.简单介绍DotnetCore3.0如何将.proto文件生成对应的服务端和客户端类 二.介绍如何在服务端使用Grpc,以及Grpc需要的条件(HTTP2.TLS) 三.介绍如何创建Grpc ...

  10. markdown demo 学习

    ## <center>2019-05-08 12:05 DDoS攻击检测报告</center> ## - **MME ID**: 1123424 - **DDoS攻击类型**: ...