HDFS四大机制之心跳机制

namenode如何获取哪一个datanode是可用的  哪一个datanode的可用空间?
    datanode会定时的向namenode发送心跳报告 目的告诉namenode自己的存活状况以及可用空间
    这个时间是多久?默认3s
    
      dfs.heartbeat.interval
      3
      Determines datanode heartbeat interval in seconds.
    

    每隔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  不间断
    
      dfs.namenode.handler.count
      10
      The number of server threads for the namenode.
    

    这10次中间只要有1次接受到了   重新记录心跳
    namenode断定datanode可能宕机了
    namenode主动向datanode发送检查 namenode会开启后台的守护(阻塞)进程 等待检查结果的
    namenode检查datanode的时间:默认5min
    
      dfs.namenode.heartbeat.recheck-interval
      300000
      
        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.
      

    

    默认检查2次  每次检查5min    连续2次检查(10min)都没有反应  确认datanode宕机了
    namenode确认一个datanode宕机需要的总时间: 10*3s+300s*2=630s

你可能感兴趣的:(hadoop生态)