• Hadoop(10)-HDFS的DataNode详解


    1.DataNode工作机制

    1)一个数据块在DataNode上以文件形式存储在磁盘上,包括两个文件,一个是数据本身,一个是元数据包括数据块的长度,块数据的校验和,以及时间戳。

    2)DataNode启动后向NameNode注册,通过后,周期性(1小时)的向NameNode上报所有的块信息。

    3)心跳是每3秒一次,心跳返回结果带有NameNode给该DataNode的命令如复制块数据到另一台机器,或删除某个数据块。如果超过10分钟没有收到某个DataNode的心跳,则认为该节点不可用。

    4)集群运行中可以安全加入和退出一些机器

    2 数据完整性

    如果电脑磁盘里面存储的数据是控制高铁信号灯的红灯信号(1)和绿灯信号(0),但是存储该数据的磁盘坏了,一直显示是绿灯,是否很危险?

    同理DataNode节点上的数据损坏了,却没有发现,是否也很危险,那么如何解决呢?

    如下是DataNode节点保证数据完整性的方法。

    1)当DataNode读取Block的时候,它会计算CheckSum。

    2)如果计算后的CheckSum,与Block创建时值不一样,说明Block已经损坏。

    3)Client读取其他DataNode上的Block。

    4)DataNode在其文件创建后周期验证CheckSum

     DataNode的校验法用的是crc校验,感兴趣的同学可以百度一下~

    3.DataNode掉线时限

    需要注意的是hdfs-site.xml 配置文件中的heartbeat.recheck.interval的单位为毫秒,dfs.heartbeat.interval的单位为秒。

    <property>
        <name>dfs.namenode.heartbeat.recheck-interval</name>
        <value>300000</value>
    </property>
    
    <property>
        <name>dfs.heartbeat.interval</name>
        <value>3</value>
    </property>
  • 相关阅读:
    12.使用正则表达式
    12/12
    thinkphp 5 及一下或php项目里实现模糊查询
    mysql中文乱码--存入mysql里的中文变成问号的解决办法
    ATOM使用的一点心得与技巧——在一个窗口打开多个项目
    php里的$this的 含义
    pycharm2017.3专业版激活注册码
    thinkphp3.2.3的使用心得之i方法(零)
    thinkphp3.2.3的使用心得(零)
    linux系统下phpstudy里的mysql使用方法
  • 原文地址:https://www.cnblogs.com/duoduotouhenying/p/10093643.html
Copyright © 2020-2023  润新知