zoukankan      html  css  js  c++  java
  • NameNode和DataNode间的联系

    本文内容还是转载自--吴超沉思录里的,还是挺佩服吴超老师的O(∩_∩)O~

    以下介绍NameNode和DataNode所扮演的角色:

    (1)NameNode

    NameNode的作用是管理文件目录结构,是管理数据节点的。NameNode维护两套数据:一套是文件目录与数据块之间的关系,另一套是数据块与节点间的关系前一套是静态的,是存放在磁盘上的,通过fsimage和edits文件来维护;后一套数据是动态的,不持久化到磁盘,每当集群启动的时候,会自动建立这些信息

    (2)DataNode

    DataNode是HDFS中真正存储数据的。HDFS中有个信息叫Block(数据块)。假设文件大小是100GB,从字节位置0开始,每(3)部署情况

    集群中的一个专门机器用来运行NameNode,集群中的其他机器各运行一个DataNode。(当然,也可以在运行NameNode的机器上同时运行DataNode,或者一个机器行运行多个DataNode)。

    (4)HDFS中的数据存放

    1.冗余备份:

    HDFS将每个文件存储成一系列的数据块(Block),默认快大小为64MB(可以自定义设置)。为了容错,文件的多有数据块都可以死有副本(默认为3个,这个可以自定义设置,但一般3个是最佳选择了,个人认为)。当DataNode启动的时候,它会遍历本地文件系统,产生一份HDFS数据块和本地文件对应关系的列表,并把这个报告发送给NameNode,这就是报告块(BlockReport),报告块包含了DataNode上所有块的列表。

    2.副本存放:

    HDFS集群一般运行在多个机架上,不同机架上机器的通信需要交换机。通常情况下,副本的存放策略较关键,机架内节点之间的带宽比跨机架之间的带宽要大,它能影响HDFS的可靠性和性能。HDFS采用一种称为机架感知(Rack-aware)的策略来改进数据的可靠性、可用性和网络带宽的利用率。一般情况下:HDFS的存放策略是将一个副本存放在本地机架节点上,一个副本存放在同一个机架的另一个节点上,最后一个副本存放在不同机架的节点上。这种策略减少了机架间的数据传输,提高了写操作的效率。机架的错误远远比节点的错误少,所以这种策略不会影响到数据的可靠性和可用性。

    3.心跳检测:

    NameNode周期性地从集群中的每个DataNode接受心跳包和块报告,NameNode可以根据这个报告验证映射和其他文件系统元数据。烧到心跳包,说明该DataNode工作正常。如果DataNode不能发送心跳信息,NameNode会标记最近没有心跳的DataNode为宕机,并不会给他们发送任何I/O请求。

  • 相关阅读:
    Codevs 2296 仪仗队 2008年省队选拔赛山东
    Codevs 1535 封锁阳光大学
    Codevs 1069 关押罪犯 2010年NOIP全国联赛提高组
    Codevs 1218 疫情控制 2012年NOIP全国联赛提高组
    Codevs 1684 垃圾陷阱
    洛谷 P1108 低价购买
    Vijos P1325桐桐的糖果计划
    Codevs 3289 花匠 2013年NOIP全国联赛提高组
    Codevs 2611 观光旅游(floyed最小环)
    C语言基础之彩色版C语言(内含linux)
  • 原文地址:https://www.cnblogs.com/judylucky/p/4305114.html
Copyright © 2011-2022 走看看