借鉴: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. ABP 基于DDD的.NET开发框架 学习(二)创建实体

    1.创建模型类打开.Core项目,新建新建一个项目文件夹(Demo);为了演示表关联及外键的使用,创建两个类:创建类ClothesCategoty.csusing Abp.Domain.Entitie ...

  2. css 垂直方向 margin 边距 重合

    1:控制两个相邻边盒子之间的距离,在A或者B盒子上用margin控制,就可以控制距离了. 2:父子级之间的元素,常规文档流中,只要垂直外边距直接接触就会发生合并.比如在写header标签时,想移动he ...

  3. c# 串行化事件

  4. 《Python编程:从入门到实践》第二章 变量和简单数据类型 习题答案

    #2.1 print("Hello world!"); #2.2 message="Hello,Python!"; print(message); #2.3 n ...

  5. Linux常用命令【1】

    打包和压缩文件 : cd /home 进入 '/ home' 目录' cd .. 返回上一级目录 cd ../.. 返回上两级目录 cd 进入个人的主目录 cd ~user1 进入个人的主目录 cd ...

  6. MySQL进阶19--函数的创建(举例)/设置mysql的创建函数的权限/查看(show)/删除(drop) / 举4个栗子

    /*MySQL进阶19 函数 存储过程和函数:都类似于java中的方法; 存储过程和函数通用好处: 1.提高代码的重用性 2.简化操作 好处: 减少操作次数,减少了编译次数,减少了和服务器的连接次数, ...

  7. C# String 字符拼接测试(“+”、string.Format、StringBuilder 比较)

    对于字符串的拼接自己一直有疑问,在何时该用什么方法来拼接?哪种方法更好.更适合. 几种方法 1.“+” 拼接字符串 现在在 C# 中,字符串进行拼接,可以直接用 “+” 而且可以直接用于数字类型的而不 ...

  8. SecureCRT中解决乱码的问题

    SecureCRT中文乱码的问题,解决方法如下: 打开Option菜单,点击Session Options-     在Appearance外观这里,选择编码--UTF-8     一定要记得先保存! ...

  9. JS获取当前年份月

    //获取完整的日期 var date=new Date; var year=date.getFullYear();  var month=date.getMonth()+1; month =(mont ...

  10. NOSQL数据库简介

    什么是NoSQL?泛指非关系型的数据库不支持SQL语法存储结构跟传统关系型数据库中的那种关系表完全不同,nosql中存储的数据都是Key-Value(即键值对关系)形式NoSQL的世界中没有一种通用的 ...