文章目录

  • 前言
  • 一、负载均衡
  • 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的正常工作

二、该数据均衡算法每次迭代的逻辑

数据均衡过程的核心是一个数据均衡算法,该数据均衡算法将不断迭代数据均衡逻辑,直至集群内数据均衡为止。

hadoop负载均衡命令配置 hadoop集群负载均衡_sed

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组移动。四个组定义如下:

hadoop负载均衡命令配置 hadoop集群负载均衡_数据_02

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