文章目录
- 前言
- 一、负载均衡
- 1.数据平衡不能导致数据块减少,数据块备份丢失
- 2.管理员可以中止数据平衡进程
- 3.每次移动的数据量以及占用的网络资源,必须是可控的
- 4.数据均衡过程,不能影响namenode的正常工作
- 二、该数据均衡算法每次迭代的逻辑
- 1.数据均衡服务(Rebalancing Server)首先要求 NameNode 生成 DataNode 数据分布分析报告,获取每个DataNode磁盘使用情况
- 2 Rebalancing Server汇总需要移动的数据分布情况,计算具体数据块迁移路线图。数据块迁移路线图,确保网络内最短路径
- 3 开始数据块迁移任务,Proxy Source Data Node复制一块需要移动数据块
- 4 将复制的数据块复制到目标DataNode上
- 5 删除原始数据块
- 6 目标DataNode向Proxy Source Data Node确认该数据块迁移完成
- 7 Proxy Source Data Node向Rebalancing Server确认本次数据块迁移完成。然后继续执行这个过程,直至集群达到数据均衡标准
- 三、DataNode分组
- 1.Over组:此组中的DataNode的均满足
- DataNode_usedSpace_percent > Cluster_usedSpace_percent + threshold
- 2.Above组:此组中的DataNode的均满足
- Cluster_usedSpace_percent + threshold > DataNode_ usedSpace _percent > Cluster_usedSpace_percent
- 3.Below组:此组中的DataNode的均满足
- Cluster_usedSpace_percent > DataNode_ usedSpace_percent > Cluster_ usedSpace_percent – threshold
- 4.Under组:此组中的DataNode的均满足
- Cluster_usedSpace_percent – threshold > DataNode_usedSpace_percent
- 四、HDFS 数据自动平衡脚本使用方法
- 1.start-balancer.sh –threshold
- 2.dfs.balance.bandwidthPerSec
- 3.stop-balancer.sh
- 五、hdfs-site.xml文件中设置数据均衡占用的网络带宽限制
- 六、以定时任务来实现定时的负载均衡
前言
老师上课的笔记
提示:以下是本篇文章正文内容,下面案例可供参考
Hadoop的HDFS集群非常容易出现机器与机器之间磁盘利用率不平衡的情况,例如:当集群内新增、删除节点,或者某个节点机器内硬盘存储达到饱和值。当数据不平衡时,Map任务可能会分配到没有存储数据的机器,这将导致网络带宽的消耗,也无法很好的进行本地计算。 当HDFS负载不均衡时,需要对HDFS进行数据的负载均衡调整,即对各节点机器上数据的存储分布进行调整。从而,让数据均匀的分布在各个DataNode上,均衡IO性能,防止热点的发生。进行数据的负载均衡调整,必须要满足如下原则:
一、负载均衡
1.数据平衡不能导致数据块减少,数据块备份丢失
2.管理员可以中止数据平衡进程
3.每次移动的数据量以及占用的网络资源,必须是可控的
4.数据均衡过程,不能影响namenode的正常工作
二、该数据均衡算法每次迭代的逻辑
数据均衡过程的核心是一个数据均衡算法,该数据均衡算法将不断迭代数据均衡逻辑,直至集群内数据均衡为止。
1.数据均衡服务(Rebalancing Server)首先要求 NameNode 生成 DataNode 数据分布分析报告,获取每个DataNode磁盘使用情况
2 Rebalancing Server汇总需要移动的数据分布情况,计算具体数据块迁移路线图。数据块迁移路线图,确保网络内最短路径
3 开始数据块迁移任务,Proxy Source Data Node复制一块需要移动数据块
4 将复制的数据块复制到目标DataNode上
5 删除原始数据块
6 目标DataNode向Proxy Source Data Node确认该数据块迁移完成
7 Proxy Source Data Node向Rebalancing Server确认本次数据块迁移完成。然后继续执行这个过程,直至集群达到数据均衡标准
三、DataNode分组
在第2步中,HDFS会把当前的DataNode节点,根据阈值的设定情况划分到Over、Above、Below、Under四个组中。在移动数据块的时候,Over组、Above组中的块向Below组、Under组移动。四个组定义如下:
1.Over组:此组中的DataNode的均满足
DataNode_usedSpace_percent > Cluster_usedSpace_percent + threshold
2.Above组:此组中的DataNode的均满足
Cluster_usedSpace_percent + threshold > DataNode_ usedSpace _percent > Cluster_usedSpace_percent
3.Below组:此组中的DataNode的均满足
Cluster_usedSpace_percent > DataNode_ usedSpace_percent > Cluster_ usedSpace_percent – threshold
4.Under组:此组中的DataNode的均满足
Cluster_usedSpace_percent – threshold > DataNode_usedSpace_percent
四、HDFS 数据自动平衡脚本使用方法
**不怕数据大,怕数据倾斜。 **
1.start-balancer.sh –threshold
-threshold:默认设置:10,参数取值范围:0-100
参数含义:判断集群是否平衡的阈值。理论上,该参数设置的越小,整个集群就越平衡
2.dfs.balance.bandwidthPerSec
默认设置:1048576(1M/S)
参数含义:Balancer运行时允许占用的带宽
3.stop-balancer.sh
五、hdfs-site.xml文件中设置数据均衡占用的网络带宽限制
<property>
<name>dfs.balance.bandwidthPerSec</name>
<value>1048576</value>
</property>
六、以定时任务来实现定时的负载均衡
00 22 * * 5 hdfs balancer -Threshold 5 >>/home/logs/balancer_`date +"\%Y\%m\%d"`.log 2>&1