HDFS负载均衡器
Posted ItStar
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HDFS负载均衡器相关的知识,希望对你有一定的参考价值。
Hadoop的HDFS集群非常容易出现机器与机器之间磁盘利用率不平衡的情况,例如:当集群内新增、删除节点,或者某个节点机器内硬盘存储达到饱和值。当数据不平衡时,Map任务可能会分配到没有存储数据的机器,这将导致网络带宽的消耗,也无法很好的进行本地计算。
当HDFS负载不均衡时,需要对HDFS进行数据的负载均衡调整,即对各节点机器上数据的存储分布进行调整。从而,让数据均匀的分布在各个DataNode上,均衡IO性能,防止热点的发生。进行数据的负载均衡调整,必须要满足如下原则:
1. 数据平衡不能导致数据块减少,数据块备份丢失
2. 管理员可以中止数据平衡进程
3. 每次移动的数据量以及占用的网络资源,必须是可控的
4. 数据均衡过程,不能影响namenode的正常工作
使用HDFS自动负载均衡脚本
在Hadoop中,包含一个start-balancer.sh脚本,通过运行这个工具,启动HDFS数据均衡服务。该工具可以做到热插拔,即无须重启计算机和 Hadoop 服务。Hadoop/bin目录下的start−balancer.sh脚本就是该任务的启动脚本。启动命令为:
bin/start-balancer.sh –threshold
影响Balancer的几个参数:
-threshold
默认设置:10,参数取值范围:0-100
参数含义:判断集群是否平衡的阈值。理论上,该参数设置的越小,整个集群就越平衡
dfs.balance.bandwidthPerSec
默认设置:1048576(1M/S)
参数含义:Balancer运行时允许占用的带宽
示例如下:
#启动数据均衡,默认阈值为 10%
$Hadoop_home/bin/start-balancer.sh
#启动数据均衡,阈值 5%
bin/start-balancer.sh -threshold 5
#停止数据均衡
$Hadoop_home/bin/stop-balancer.sh
在hdfs-site.xml文件中可以设置数据均衡占用的网络带宽限制
<property>
<name>dfs.balance.bandwidthPerSec</name>
<value>1048576</value>
<description> Specifies the maximum bandwidth that each datanode can utilize for the balancing purpose in term of the number of bytes per second. </description>
</property>
测试:
现有3个节点:
新增加一个节点:
启动负载均衡后的日志:
启动负载均衡的web页面:
END
以上是关于HDFS负载均衡器的主要内容,如果未能解决你的问题,请参考以下文章