hdfs的四大机制和两大核心

  

四大机制:

  

(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得到查看 
  

(3)机架策略(副本存放策略):

  

 hdfs的四大机制和两大核心”> <br/>    第一个副本,放置在离客户端最近的那个机架的任意节点,如果客户端是本机,那就存放在本机(保证有一个副本数),第二个副本,放置在跟第一个副本不同机架的任意节点上,第三个副本,放置在跟第二个副本相同机架的不同节点上。<br/>    <>强修改副本的方法</强>:<br/>     1. 修改配置文件:</p>
  <pre> <代码> & lt; property>
  & lt; name> dfs.replication</name>
  & lt; value> 1 & lt;/value>
  & lt;/property> </代码> </pre>
  <p>     2. 命令设置:hadoop fs -setrep 2 - r dir </p>
  <h4>(4)负载均衡:</h4>
  <p>   &emsp hdfs的负载均衡:表示每一个dataNode存储的数据与其硬件相匹配,即占用率相当<h2 class=hdfs的四大机制和两大核心