HDFS四大机制

本文介绍了HDFS的核心机制,包括心跳机制、安全模式的详细流程,以及机架策略和负载均衡的重要性。在安全模式中,NameNode加载元数据并等待集群稳定。负载均衡涉及副本的智能分布和数据迁移,确保集群高效运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

1 心跳机制

2 安全模式

3 机架策略

4 负载均衡

负载均衡算法:一共有七步

阈值管理​

负载均衡操作


1 心跳机制

 hdfs启动之前,要做集群的时间同步

datanode每三秒向namenode发送心跳包,可配置,在hdfs-default.xml中配置,heartbeat.interval

namenode如果有10次没有收到心跳包,就发起检查,一次检查5分钟(可配置,heartbeat.recheck),

如果两次之后还不通,认为dn挂掉了,一共 是 3 s*10+5min*2=630s

2 安全模式

先讲一下元数据的组成:

     a 抽象目录树 b 数据与块之间的关系 c 数据块的存储位置

    内存存储: a b c

    磁盘中存储 a b

 

集群启动时,处于安全模式,这个时候 nn在做以下的事情

1 把磁盘中的 ab加载到内存中

2 接受dn的心跳,心跳中包含有 c ,把c也放到内存中

3 启动secondaryNN

 

安全模式下:

  可用操作的是查询类的:get  cat ls 等

  不可操作修改元数据类的:mkdir put等

 

安全模式的命令 

    hdfs dfsadmin -safemode    enter :进入安全模式

                                                leave: 离开安全模式

                                               get  : 获取状态  on/off

                                              wait : 等待自行退出

3 机架策略

图是网上抄的:

1、第一个副本放在和Client相同机架的节点上(如果Client不在集群范围,第一个Node是随机选取不太满或者不太忙的节点,离上传Client最近的节点(减少网络传输的时间))
2、第二个副本放在与第一个机架不同的机架中的任意节点上
3、第三个副本放在与第二个节点所在机架的不同的节点.

hdfs-site.xml中 dfs.replication 来配置副本的 个数

4 负载均衡

产生负载不均衡的原因可能有:

 1 新增或者删除节点

2 总是把某个节点当客户端

3 某些主机硬盘较小

 

负载不均衡的危害:

1 map任务会被分配到没有数据的节点,导致计算变慢

 

搞负载均衡时不能影响集群的正常运行

 

负载均衡算法:一共有七步

Balanceré»è¾

1 RS向nn获取node的数据报告

2 RS汇总数据的分布情况,计算好 数据图,以及迁移的最佳路径

3 开始迁移,PSDN开始复制数据

4 PSDN把数据再次复制到 目标的DN上

5 PSDN告知NN已经好了,NN通知删除原来的数据块

6 目标DN向 PSDN确认已经迁移

7 PSDN告知RS本次迁移成功!

 

阈值管理
HDFSGroup

假如threshold=20,此时集群的平均使用是40

那么over组:>60

Above组 40-60

below组  20-40

under组 <20

集群会把 上面两个数据,往下面的两个迁移

这么看来: threshold设置得约低,集群就越均衡

 

  • Over组:此组中的DataNode的均满足

DataNode_usedSpace_percent > Cluster_usedSpace_percent + threshold

  • Above组:此组中的DataNode的均满足

Cluster_usedSpace_percent + threshold > DataNode_ usedSpace _percent >Cluster_usedSpace_percent

  • Below组:此组中的DataNode的均满足

Cluster_usedSpace_percent > DataNode_ usedSpace_percent > Cluster_ usedSpace_percent – threshold

  • Under组:此组中的DataNode的均满足

Cluster_usedSpace_percent – threshold > DataNode_usedSpace_percent

 

负载均衡操作

#启动数据均衡,默认阈值为 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>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值