• NameNode和DataNode介绍


    名称节点的数据结构 

    • 在HDSFS中,名称节点(namenode)负责管理分布式文件系统的命名空间(Namespace),保存了两个核心的数据结构,即FsImage和EditLog。
    • 名称节点记录了每个文件中各个块所在的数据节点的位置信息。

    FsImage用于维护文件系统树以及文件树中所有的文件和文件夹的额元数据

    EditLog操作日志中记录了所有针对文件的创建、删除、重命名等操作

    FsImage文件

    •  FsImage文件包含文件系统中所有目录和文件inode的序列化形式。每个inode是一 个文件或目录的元数据的内部表示,并包含此类信息:文件的复制等级、修改和访问 时间、访问权限、块大小以及组成文件的块。对于目录,则存储修改时间、权限和配 额元数据 

    • FsImage文件没有记录块存储在哪个数据节点。而是由名称节点把这些映射保留在 内存中,当数据节点加入HDFS集群时,数据节点会把自己所包含的块列表告知给名 称节点,此后会定期执行这种告知操作,以确保名称节点的块映射是最新的

    名称节点的启动

    • 在名称节点启动的时候,它会将FsImage文件中的内容加载到内存中,之后再执行 EditLog文件中的各项操作,使得内存中的元数据和实际的同步,存在内存中的元数 据支持客户端的读操作。
    • 一旦在内存中成功建立文件系统元数据的映射,则创建一个新的FsImage文件和一个 空的EditLog文件
    • 名称节点起来之后,HDFS中的更新操作会重新写到EditLog文件中,因为FsImage 文件一般都很大(GB级别的很常见),如果所有的更新操作都往FsImage文件中添 加,这样会导致系统运行的十分缓慢,但是,如果往EditLog文件里面写就不会这样 ,因为EditLog 要小很多。每次执行写操作之后,且在向客户端发送成功代码之前, edits文件都需要同步更新
    • 在名称节点运行期间,HDFS的所有更新操作会直接写到EditLog中,长久下去导致文件变大,会使得名称节点启动操作非常慢,而在这段时间内HDFS系统处于 安全模式,一直无法对外提供写操作,影响了用户的使用,所以就会有第二个名称节点(SecondaryNameNode)的使用。

    数据节点(DataNode) 

    • 数据节点是分布式文件系统HDFS的工作节点,负责数据的存储和读取,会根据客 户端或者是名称节点的调度来进行数据的存储和检索,并且向名称节点定期发送自己 所存储的块的列表(
    • 每个数据节点中的数据会被保存在各自节点的本地Linux文件系统中
  • 相关阅读:
    慕课网-安卓工程师初养成-3-2 Java中的算术运算符
    慕课网-安卓工程师初养成-3-1 什么是运算符
    慕课网-安卓工程师初养成-2-13 练习题
    慕课网-安卓工程师初养成-2-12 如何在Java中使用注释
    慕课网-安卓工程师初养成-2-11 Java常量
    慕课网-安卓工程师初养成-2-10 Java中的强制类型转换
    试把一个正整数n拆分为若干个
    求解两个给定正整数m、n的最大公约数(m、n)
    统计n!尾部零
    横竖折对称方阵
  • 原文地址:https://www.cnblogs.com/Zeng02/p/11716036.html
Copyright © 2020-2023  润新知