(转)hadoop balancer(重新平衡)

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

参考文档:

http://blog.csdn.net/chilianyi/article/details/50946818

https://www.cloudera.com/documentation/enterprise/5-10-x/topics/admin_hdfs_balancer.html     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

时间: 2024-10-11 05:23:10

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

hadoop balancer

balancer是当hdfs集群中一些datanodes的存储要写满了或者有空白的新节点加入集群时,用于均衡hdfs集群磁盘使用量的一个工具.这个工具作为一个应用部署在集群中,可以由集群管理员在一个live的cluster中执行. 语法: To start: start-balancer.sh 用默认的10%的阈值启动balancer hfs dfs balancer -threshold 3 start-balancer.sh -threshold 3 指定3%的阈值启动balancer To

hadoop balancer hbase balancer

Hadoop 均衡器 Hadoop在运行过程中,其datanode的块会越来越不平衡,不平衡的集群会导致部分datanode相对更繁忙. Hadoop的均衡器是一个守护进程.它会重新分配块,将块从忙碌的datanode移到相对空闲的datanode.同时坚持复本策略,将复本分散到不同机架,以降低数据损坏率. 集群均衡标准:每个datanode的使用率和集群的使用率非常接近,差距不超过给定的阀值. datanode使用率:该节点上已使用的空间与空间总量之间的比率: 集群的使用率:集群中已使用的空间

hadoop balancer配置

hadoop版本:2.9.2 1.带宽的设置参数: dfs.datanode.balance.bandwidthPerSec   默认值 10m 2.datanode之间数据块的传输线程大小:dfs.datanode.max.transfer.threads 默认值4096 3.修改dfs.datanode.balance.max.concurrent.moves ,指定DataNode上同时用于balance待移动block的最大线程个数,这个值默认是50 如果dfs.datanode.bal

Hadoop Balancer源码解读

前言 最近在做一些Hadoop运维的相关工作,发现了一个有趣的问题,我们公司的Hadoop集群磁盘占比数值参差不齐,高的接近80%,低的接近40%,并没有充分利用好上面的资源,但是balance的操作跑的也是正常的啊,所以打算看一下Hadoop的balance的源代码,更深层次的去了解Hadoop Balance的机制. Balancer和Distpatch 上面2个类的设计就是与Hadoop Balance操作最紧密联系的类,Balancer类负载找出<source, target>这样的起

一步一步跟我学习hadoop(3)----hadoop命令手册

上节我们学习了hadoop的eclipse插件安装和wordcount程序的运行,本篇对hadoop命令进行一个系统的了解 hadoop的命令通过HADOOP_HOME\bin\hadoop命令触发,我们可以在命令行执行 hadoop --help 来提示用户的命令输入. hadoop命令分为两大类:用户命令和管理命令,以下是hadoop命令的详细解读 本篇博客是摘自官网http://hadoop.apache.org/docs/r1.0.4/cn/commands_manual.html 0概

Hadoop内部的限流机制

前言 文章标题一開始提及到了一个令人感到有些抽象又显得有些非常"大"的词,限流.事实上这个词语在非常多行业都能够用到,比方近期春运,各大主要城市,火车站,地铁站都要做到限流吧,避免人流量过大造成事故或间接事故,这叫人流量限流,同理也能够用在车流量上.假设基于这个背景,把这里的人群和车辆抽象为数据,对数据进行限流,就是本篇文章的主题了.可能就有人疑惑了,数据为什么要做限流,怎么做限流,有什么优点呢,带着这个疑问,细致的阅读下文的分析吧. 数据的限流 数据的限流更让人理解的称呼应该是&qu

Hadoop学习笔记(3)——分布式环境搭建

Hadoop学习笔记(3) ——分布式环境搭建 前面,我们已经在单机上把Hadoop运行起来了,但我们知道Hadoop支持分布式的,而它的优点就是在分布上突出的,所以我们得搭个环境模拟一下. 在这里,我们采用这样的策略来模拟环境,我们使用3台ubuntu机器,1台为作主机(master),另外2台作为从机(slaver).同时,这台主机,我们就用第一章中搭建好的环境来. 我们采用与第一章中相似的步骤来操作: 运行环境搭建 在前面,我们知道,运行hadoop是在linux上运行的.所以我们单机就在

hadoop 常用命令

转自:http://blog.csdn.net/huoyunshen88/article/details/9055973 启动Hadoop 进入HADOOP_HOME目录. 执行sh bin/start-all.sh 关闭Hadoop 进入HADOOP_HOME目录. 执行sh bin/stop-all.sh 1.查看指定目录下内容 hadoop dfs –ls [文件目录] eg: hadoop dfs –ls /user/wangkai.pt 2.打开某个已存在文件 hadoop dfs –

Hadoop shell

常用管理命令  Hadoop管理员的常用命令. 启动Hadoop 进入HADOOP_HOME目录. 执行sh bin/start-all.sh 关闭Hadoop 进入HADOOP_HOME目录. 执行sh bin/stop-all.sh balancer  运行集群平衡工具.管理员可以简单的按Ctrl-C来停止平衡过程.参考Rebalancer了解更多. 用法:hadoop balancer [-threshold <threshold>] 命令选项 描述 -threshold <thr