四大机制:
(1)心跳机制:
<强>介绍强>:hdfs是主从架构,所有为了实时的得知dataNode是否存活,必须建立心跳机制,在整个hdfs运行过程中,dataNode会定时的向nameNode发送心跳报告已告知nameNode自己的状态。
<>强心跳内容强>:
——报告自己的存活状态,每次汇报之后都会更新维护的计数信息
——向nameNode汇报自己的存储的块列表信息
<>强心跳报告周期强>:
<代码> & lt; property> & lt; name> dfs.heartbeat.interval & lt; value> 3 & lt;/value>//单位秒 & lt;/property> 代码>
<强> nameNode判断一个dataNode宕机的基准强>:连续10次接收不到dataNode的心跳信息,和2次的检查时间。
<>强检查时间强>:表示在nameNode在接收不到dataNode的心跳时,此时会向dataNode主动发送检查
<代码> & lt; property> & lt; name> dfs.namenode.heartbeat.recheck-interval & lt; value> 300000 & lt;/value>//单位毫秒 & lt;/property> 代码>
<强>计算公式强>:2 dfs.heartbeat.interval dfs.namenode.heartbeat.recheck-interval + 10=3 300 10 + 2=630 s=10.5 min
(2)安全机制:
<强>介绍强>:hdfs在启动的时候,首先会进入的安全模式中,当达到规定的要求时,会退出安全模式。在安全模式中,不能执行任何修改元数据信息的操作。
<强> hdfs的元数据的介绍强>(三个部分):
-抽象目录树
-数据与块的对应关系(文件被切分成多少个块)
-块块存放的位置信息
<强> hdfs元数据的存储位置强>:
-内存:内存中存储了一份完整的元数据信息(抽象目录树,数据与块的对应关系,挡块存放的位置信息)
-硬盘:抽象目录树,数据与块的对应关系
<强>注意强>:其中内存中的元数据块的块存放的位置信息,是通过dataNode向nameNode汇报心跳时获取的,硬盘中的元数据,是因为内存中的元数据在机器宕机时就自动消失,所以需要将内存中的元数据持久化到硬盘
而硬盘中的元数据只有抽象目录树,数据与块的对应关系,没有块块存放的位置信息
<强> nameNode在启动的所作的操作强>:
集群的启动顺序:nameNode——》dataNode——》secondaryNameNode
将硬盘中的元数据信息加载内存,如果是第一次启动集群,此时会在本地生成一个fsimage镜像文件,接收dataNode汇报的心跳,将汇报中的块的位置信息,加载到内存。当然就在此时hdfs会进入安全模式。
<强>退出安全模式的条件强>:
——如果在集群启动时dfs.namenode.safemode.min.datanodes(启动的dataNode个数)为0时,并且,数据块的最小副本数dfs.namenode.replication.min为1时,此时会退出安全模式,也就是说,集群达到了最小副本数,并且能运行的dataNode节点也达到了要求,此时退出安全模式
——启动的dataNode个数为0时,并且所有的数据块的存货率达0.999到f时,集群退出安全模式(副本数达到要求)
<代码> & lt; property> & lt; name> dfs.namenode.safemode.threshold-pct & lt; value> 0.999 f & lt;/property> 代码>
<强>手动退出或者进入安全模式强>
<代码> hdfs dfsadmin -safemode输入进入 hdfs dfsadmin -safemode离开退出 hdfs dfsadmin -safemode得到查看代码>