HDFS基础知识

作者: MrCui_bd74 | 来源:发表于2019-03-09 22:50 被阅读0次

    HDFS基础架构与核心概念

    HDFS架构图
    hdfs架构图
    HDFS核心概念

    Active NameNode(文件系统的管理节点)
    一个集群中只有一个Master(Active NameNode)用来管理HDFS文件系统的命名空间(HDFS和Linux文件系统很类似也是通过文件和目录来管理的,所有的文件和目录层级关系也是树状结构,以 " / " 为根目录)。

    NameNode元数据文件(内存中存储)
    Edits编辑日志,客户端对目录和文件的写操作首先被记录到Edits中,如:创建文件,删除文件等。
    Fsimage:文件系统元数据检查点保存了文件系统中所有的文件和目录信息,如:一个文件下有哪些子目录,字文件,文件名,文件副本数,文件由那些块组成。
    NameNode定期将内存中新增的edits和fsimage合并保存到磁盘中。

    NameNode维护文件系统的所有文件和目录,这些信息是以命名空间镜像文件的形式(edits和fsimage)保存在磁盘中。但是为了快速访问在集群运行的时候,会把命名空间里这些信息加载到内存中。

    NameNode管理的副本策略默认为3个。
    NameNode负责处理客户端的读写请求。

    standby NameNode
    HDFS为了实现NameNode的高可用还会启用一个备用节点standby NameNode,它是Active NameNode的备用节点,会周期性同步Edits编辑日志,定期合并fsimage与Edits至本地磁盘。当Active NameNode出现故障时可以快速切换为新的Active。

    DataNode(文件系统的工作节点)
    DataNode是HDFS分布式文件系统的工作节点负责客户端的读写请求操作,Slave工作节点可以启动多个,通过心跳机制定期向NameNode汇报运行状态和所有块列表信息,在集群启动时DataNode向NameNode提供存储的block块列表信息。

    Block数据块(HDFS中最小的存储单位)
    文件写入HDFS会被写分成若干的block块分别存储到不同的DataNode上,数据块大小固定,默认大小为128M(HDFS在2.0版本之前默认大小为64M)可自定义修改,如果一个块的大小小于数据块设置的大小,则不会占用整个块的空间,默认情况下每个block有三个副本。

    Client(HDFS客户端)
    Client为HDFS的客户端负责上传文件的文件切分,与NameNode交互获取文件元数据的信息,与DataNode交互读取或写入数据,管理HDFS。

    了解HDFS核心概念之后还需要明白的是HDFS不适合存储小文件
    因为元数据信息是存储在NameNode内存中的,内存大小是有限的,NameNode存储Block数目也是有限的,一个Block元信息大约消耗150Byte内存,如果存储1亿个Block,大约就需要20G的内存。如果一个文件大小为10KB,则一亿个文件大小仅有1TB,却消耗了NameNode内存大约20GB内存(如果这样的话显然是不合理的)另外存储小文件会消耗大量的磁盘寻道时间。

    相关文章

      网友评论

        本文标题:HDFS基础知识

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