Hadoop-3.1.3(三)Edits 文件和 Fsimage

2021-07-22  本文已影响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. 上传文件底层会拆分如下事务过程:
  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加载和写入时都按照该格式进行。

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

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

MD5校验

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

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

上一篇下一篇

猜你喜欢

热点阅读