美文网首页
Hadoop-3.1.3(三)Edits 文件和 Fsimage

Hadoop-3.1.3(三)Edits 文件和 Fsimage

作者: _大叔_ | 来源:发表于2021-07-22 09:52 被阅读0次

    知识点

    1. 当执行格式化指令时,会在指定的目录下,生成 /dfs/name 目录。此目录时 namenode 服务存储元数据的目录。
    2. 当格式化后,启动 HDFS 前,会生成一个 fsimage_000000000000000000000 文件
    3. 启动后生成 dfs/data 目录,这是 datanode 节点存储数据块的目录。
    4. 启动后生成 dfs/name/in_use.lock 这个文件的作用是防止在同一台服务器上启动多个 namenode
    5. 启动后生成 dfs/name/current/edits_000000000000000000001-000000000000000000002 等文件,该文件记录了事务的生成。可以用以下命令格式化输出到别的文件查看。
    hdfs oev -i edits_000000000000000000001-000000000000000000002 -o a.xml
    
    1. 没生成一个新得Edits文件,文件中都会以START LOG开头,当一个Edits文件写完后,会议END LOG结尾。即在START LOG 到
      END LOG 存储的是这个Edits 文件所有的事务记录。
    2. 每当HDFS接收一个事务操作(mkdir put mv),都会分配事务ID,然后挟到Edits文件中。
    3. 启动后生成 dfs/name/current/edits_inprogress_000000000000000000003,只包含了START LOG,他的作用是记录当前正在执行的事务文件 。后面的编号是以上一次Txid+1来名命。
    4. 初次使用HDFS时,有一个默认的Edits(edits_inprogress_000000000000000000001)和Fsimage,他们合并后得到edits_000000000000000000001-000000000000000000002,合并周期为(1分钟),以后在使用HDFS的过程中,edits_inprogress合并的条件:1.达到合并周期(3600s),2. 执行手动合并指令,3. 停止HDFS在启动HDFS
    5. 上传文件底层会拆分如下事务过程:
    • OP_ADD 将文件加入到指定的HDFS文件目录下,并以 .Copyging结尾,表示此文件还未写完
    • ALLOCATE_BLOCK_ID 为文件分配块ID
    • SET_GENSTAMP_V2 生成时间戳版本号,全局唯一,每一块不同
    • ADD_BLOCK 写块数据
    • OP_CLOSE 表示块数据写完
    • OP_RENAME_OLD 将文件重命名以表示写完
    1. 当停止HDFS在启动HDFS,执行一个新事物后,会触发END LOG事务,生成新得Edits文件。
    2. seen_txid 记录最新 edits_inprogress 的事务ID
    3. Fsimage_N 文件存储的N号事务前的所有元数据信息
    4. Fsimage_N.md5 存储的是Fsimage的校验和

    Fsimage介绍

    把文件和目录的元数据信息持久地存储到fsimage文件中,每次启动时从中将元数据加载到内存中构建目录结构树,之后的操作记录在edits log中,定期将edits log与fsimage合并刷到fsimage中。

    loadFSimage(File curFile)用于从fsimage中读入namenode持久化的信息。fsimage中保存的元数据信息格式如下,hdfs加载和写入时都按照该格式进行。

    • imageVersion:Fsimage 文件的版本号,每生成一个新得Fsimage文件,就会有一个版本号
    • NameSpaceID:namenode的名命空间id,用于表示namenode,每当执行一次格式化命令时,就会生成新的。
    • NumFiles:整个HDFS存储的文件数
    • genStamp:目录创建的时间戳,块生成的时间戳
    • path:文件路径
    • BlockNums:文件的块的数量
    • mtime:上传时间
    • atime:访问时间
    • BlockID:块编号
    • BlockSize:切块大小(128M)
    • BlockNumBytes:块实际大小
    • StorgeInfo:块存储的datanode节点信息
    • nsquota:目录的名命空间大小配额,默认是-1 表示目录可以无限制存储
    • dsquota:目录的磁盘空间存储配额,默认是-1
    • username:目录的创建者
    • groupname:目录的所属组
    • permission:目录的权限

    fsimage是一个二进制文件,当中记录了HDFS中所有文件和目录的元数据信息。

    HDFS启动时,会将这些信息读入内存之后,构建一个文件目录结构树,将表示文件或目录的节点填入到结构中。

    MD5校验

    MD5 校验和(checksum)通过对接收的传输数据执行散列运算来检查数据的正确性。

    一个MD5校验和 通过对接收的传输数据执行散列运算来检查数据的正确性。计算出的散列值拿来和随数据传输的散列值比较。如果两个值相同,说明传输的数据完整无误、没有被篡改过(前提是散列值没有被篡改),从而可以放心使用。

    相关文章

      网友评论

          本文标题:Hadoop-3.1.3(三)Edits 文件和 Fsimage

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