9、HDFS核心设计--心跳机制、安全模式、副本存放策略、负载均衡

1、HADOOP 心跳机制(heartbeat) 

1、 Hadoop 是 主从(Master/Slave )结构,Master 中包括 NameNode 和 ResourceManager,Slave 中包括 Datanode 和 NodeManager 。

2、 Master 启动的时候会启动一个 IPC(Inter-Process Comunication,进程间通信)server 服务,等待 slave 的连接 。

3、 Slave 启动时,会主动连接master 的 ipc server 服务,并且每隔 3 秒链接一次 master(这个间隔时间是可以调整的,参数为 dfs.heartbeat.interval),这个每隔一段时间去连接一次的机制,我们形象的称为心跳。Slave 通过心跳汇报自己的信息给 master,master 也通过心跳给slave下达命令 。

4、 NameNode 通过心跳得知 Datanode 的状态, ResourceManager 通过心跳得知 NodeManager 的状态 。

5、 如果 master 长时间都没有收到 slave 的心跳,就认为该 slave 挂掉了。

*** hdfs getconf -confkey dfs.heartbeat.interval  #查看心跳机制频次(默认3秒)

*** hdfs getconf -confKey heartbeat.recheck.interval   #复查心跳机制的时间(默认300000毫秒=300秒=5分钟)

           -- hdfs getconf -confKey dfs.namenode.heartbeat.recheck-interval  ##复查心跳机制的时间(更新命令)

*** Namenode 感知到 Datanode 掉线死亡的时长计算: 

公式:timeout  = 2 * heartbeat.recheck.interval + 10 * dfs.heartbeat.interval 
默认:timeout = 2*300 + 10*3 = 630秒 = 10分钟30秒

*** dfs.heartbeat.interval 和 dfs.namenode.heartbeat.recheck-interval 配置文件修改默认时间

    ---- vim hdfs-site.xml (cd /home/hadoop/hadoop-2.7.7/etc/hadoop目录下)

<configuration>
        <property>
                <name>dfs.namenode.name.dir</name>
                <value>/home/hadoop/hadoopdata/name</value>
        </property>
        <property>
                <name>dfs.datanode.data.dir</name>
                <value>/home/hadoop/hadoopdata/data</value>
        </property>
        <property>
                <name>dfs.secondary.http.address</name>
                <value>hadoop03:50090</value>
        </property>
        <property>
                <name>dfs.heartbeat.interval</name>
                <value>4</value>
        </property>
        <property>
                <name>dfs.namenode.heartbeat.recheck-interval</name>
                <value>400000</value>
        </property>
</configuration>

***  测试

      hadoop-daemon.sh stop datanode  #关闭一下namenode等待10分30秒后才会判定为namenode掉线死亡。

      访问http://hadoop01:50070看状态

2、安全模式safemode

***1、safemode的概率

  • safemode是namenode的一种状态(namenode的三种模式:active/standby/safemode)。进入safemode后,集群中的文件不能被操作(自我保护),只能查看。

***2、进入safemode的状况

  • hdfs getconf -confkey dfs.namenode.safemode.threshold-pct   #查看安全模式界定值(默认值0.999f),当然界定值是可以修改的,默认block块丢失率达到0.1%后进入安全模式safemode。

***3、退出safemode

  • ---修复宕机的节点(推荐),自动退出

  • ---强制退出safemode(没有解决问题,有可能再次出现数据丢失)

***4、集群冷启动先进入safemode,然后又会自动推出安全模式。

  • block所在的datanode的信息存在于内存中,而不在磁盘中,所以冷启动时,刚开始找不到block所在的节点的。

原理:namenode 的内存元数据中,包含文件路径、副本数、blockid,及每一个 block 所在 datanode 的信息,而 fsimage 中,不包含 block 所在的 datanode 信息,那么,当 namenode 冷启动时,此时内存中的元数据只能从 fsimage 中加载而来,从而就没有 block 所在的 datanode 信息——>就会导致 namenode 认为所有的 block 都已经丢失——>进入安全模式— —>datanode 启动后,会定期向 namenode 汇报自身所持有的 blockid 信息,——>随着 datanode 陆续启动,从而陆续汇报 block 信息,namenode 就会将内存元数据中的 block 所 在 datanode 信息补全更新——>找到了所有 block 的位置,从而自动退出安全模式

***5、安全模式常用操作命令: 

  • --- hdfs dfsadmin -safemode get  #获取当前的safemode状态

  • --- hdfs dfsadmin -safemode enter  #进入safemode状态

  • --- hdfs dfsadmin -safemode leave   #退出safemode状态

  • --- hdfs dfsadmin -safemode wait   #等待

3、HDFS副本存放策略

*** 1、作用: 数据分块存储和副本的存放,分散冗余存储,保证可靠性和高性能
*** 2、方法: 将每个文件的数据进行分块存储,每一个数据块又保存有多个副本,这些数据块 副本分布在不同的机器节点上

***3、修改副本数:

---修改集群文件 hdfs-site.xml    #方法1:vim hdfs-site.xml  (cd /home/hadoop/hadoop-2.7.7/etc/hadoop目录下)

<property>
   <name>dfs.replication</name>
   <value>2</value> 
</property> 

---bin/hadoop fs -setrep -R 2 /    #方法2:命令设置可以指定某个文件修改

4、负载均衡

***1、节点的磁盘利用率尽可能的均等

***2、如果出现节点宕机或者新添加节点,都可能导致出现负载不均衡(节点中负载时动态)

***3、如何实现负载均衡

  --- 按照默认移动速度启动:在cd /home/hadoop/hadoop-2.7.7/sbin/目录下执行

start-balancer.sh: 实现负载均衡,默认移动速度1M/s(带宽考虑,还有其他读写操作)

start-balancer.sh -t 15%: 负载最高的节点和最低节点之间的数据差距比例在15% 范围内

  ---修改移动速度

hdfs dfsadmin -setBalanacerBandwidth 10485760  #用命令修改移动速度为10485760 =10M/s

 vim hdfs-site.xml #配置文件中设置(cd /home/hadoop/hadoop-2.7.7/etc/hadoop目录下)

<property>
 <name>dfs.balance.bandwidthPerSec</name>
 <value>10485760</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
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值