概述
namenode如何获取哪一个datanode是可用的 哪一个datanode的可用空间?
datanode会定时的向namenode发送心跳报告 目的告诉namenode自己的存活状况以及可用空间
这个时间是多久?默认3s
<property>
<name>dfs.heartbeat.interval</name>
<value>3</value>
<description>Determines datanode heartbeat interval in seconds.</description>
</property>
每隔3s datanode会向namenode发送一次心跳报告
datanode向namenode发送心跳报告具体做什么?
1.向namenode汇报自己的存活状况以及可用空间
2.向namenode发送块报告
每一个datanode上存储的块的信息 向namenode做汇报
namenode存储元数据的时候,按照存储空间:
1.硬盘
/home/hadoop/data/hadoopdata/name/current
包含3部分内容:
1)抽象目录树
2)数据和块的对应关系
3)数据块的存储位置
2.内存:
真正的读写操作的时候操作的元数据
最初的内存中的元数据信息 只包含,抽象目录树 ,数据和块的对应关系
不包含块的存储位置的
用户读取的时候 需要块的存储位置的
块信息是datanode向namenode发送心跳报告(块报告) 的时候获取的
namenode 要想确认一个datanode是否宕机需要多久?
只经过1次心跳接受不到 判断datanode宕机 不合理的
默认连续10次心跳接受不到 连续10*3=30s 不间断
<property>
<name>dfs.namenode.handler.count</name>
<value>10</value>
<description>The number of server threads for the namenode.</description>
</property>
这10次中间只要有1次接受到了 重新记录心跳
namenode断定datanode可能宕机了
namenode主动向datanode发送检查 namenode会开启后台的守护(阻塞)进程 等待检查结果的
namenode检查datanode的时间:默认5min
<property>
<name>dfs.namenode.heartbeat.recheck-interval</name>
<value>300000</value>
<description>
This time decides the interval to check for expired datanodes.
With this value and dfs.heartbeat.interval, the interval of
deciding the datanode is stale or not is also calculated.
The unit of this configuration is millisecond.
</description>
</property>
默认检查2次 每次检查5min 连续2次检查(10min)都没有反应 确认datanode宕机了
namenode确认一个datanode宕机需要的总时间: 10*3s+300s*2=630s
最后
以上就是甜美小刺猬为你收集整理的HDFS四大机制之心跳机制的全部内容,希望文章能够帮你解决HDFS四大机制之心跳机制所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复