美文网首页
Datandoe数据节点

Datandoe数据节点

作者: 小小少年Boy | 来源:发表于2018-07-26 17:16 被阅读0次
    • Datanode以存储数据块(Block)的形式保存HDFS文件
    • 同时Datanode还会响应HDFS客户端读、写数据块的请求
    • Datanode会周期性地向Namenode上报

    心跳信息、
    数据块汇报信息(BlockReport )、
    缓存数据块汇报信息(CacheReport)
    增量数据块块汇报信息。

    • Namenode会根据块汇报的内容,修改Namenode的命名空间(Namespace),同时向Datanode返回名字节点指令。Datanode会响应Namenode返回的名字节点指令,如创建、删除和复制数据块指令等。

    HDFS联邦机制(Federation)

    1.X的缺点导致引入了联邦机制

    HDFSl.x架构使用一个Namenode来管理文件系统的命名空间以及数据块信息,这虽然使得HDFS的实现非常简单,但是单一的Namenode会导致以下缺点。

    • 由于Namenode在内存中保存整个文件系统的元数据,所以Namenode内存的大小直接限制了文件系统的大小。
    • 由于HDFS文件的读写等流程都涉及与Namenode交互,所以文件系统的吞吐量受限于单个Namenode的处理能力。
    • Namenode作为文件系统的中心节点,无法做到数据的有效隔离。
    • Namenode是集群中的单一故障点,有可用性隐患
    • Namenode实现了数据块管理以及命名空间管理功能,造成这两个功能高度耦合,难以让其他服务单独使用数据块存储功能。

    考虑到上述缺点,为了能够水平扩展Namenode,HDFS2.X引入了联邦机制,提供了Federation架构:

    为了能够水平扩展Namenode,HDFS 2.X提供了Federation架构。如图4-3所示, Federation架构的HDFS集群可以定义多个Namenode/Namespace,这些Namenode之间是相互独立的, '它们各自分工管理着自己的命名空间。

    HDFS Federation架构图

    HDFS Federation两个新的概念:

    • 块池:BlockPool。一个块池由属于同一个命名空间的所有数据块组成,这个块池中的数据块可以存储在集群中的所有Datanode上,而每个Datanode都可以存储集群中所有块池的数据块。这里需要注意的是,每个块池都是独立管理的,不会与其他块池交互。所以一个Namenode出现故障时,并不会影响集群中的Datanode服务于其他的Namenode;

    • 命名空间卷:NamespaceVolume。一个Namenode管理的命名空间以及它对应的块池一起被称为命名空间卷,当一个Namenode/Namespace被删除后,它对应的块池也会从集群的Datanode上删除。需要特别注意的是,当集群升级时,每个命名空间卷都会作为一个基本的单元进行升级

    HDFS Federation架构相对于HDFS 1.X架构具有如下优点:

    • 支持Namenode/Namespace的水平扩展性,同时为应用程序和用户提供了命名空间卷级别的隔离性。
    • Federation架构实现起来比较简单, Namenode (包括Namespace)的实现并不需要太大的改变,只需更改Datanode的部分代码即可。例如将BlockPool作为数据块存储的一个新层次,以及更改Datanode内部的数据结构等。

    后续:
    可以分离Block storage层,有一下的优势:

    解耦合Namespace管理以及Block Storage管理;
    绕过Namenode/Namespace直接管理数据块,例如:Hbase可直接使用数据块;
    可以在Block Storage上构建新文件系统(non-HDFS)


    Boy-20180726

    相关文章

      网友评论

          本文标题:Datandoe数据节点

          本文链接:https://www.haomeiwen.com/subject/chwbmftx.html