zoukankan      html  css  js  c++  java
  • 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文件系统中
  • 相关阅读:
    洛谷P3886 [JLOI2009]神秘的生物(插头dp)
    Leetcode 842 将数组拆分成斐波那契序列
    Leetcode 08.07 无重复字符串的排列组合
    Leetcode131 分割回文串
    Leetcode 516 最长回文子序列
    Leetcode08.12 N皇后
    Leetcode 813 最大平均值和分组
    Leetcode 79 单词搜索 二维平面上的回溯
    题解 洛谷 P4694 【[PA2013]Raper】
    跳表的基本认识
  • 原文地址:https://www.cnblogs.com/Zeng02/p/11716036.html
Copyright © 2011-2022 走看看