NameNode概念及SecondaryNameNode作用

NameNode概念

namenode需要管理datanode,namenode中存储管理信息—元数据metadata — FileName replicas block-Ids id2host:
a. 记录文件存储位置 /node01/a.txt
b. 记录文件切的块数
c. 文件块存储的datanode的地址

fsimage:存储元数据。但是注意fsimage中的元数据和内存中并不一致,也就意味着fsimage中的数据并不是实时数据
edits:存储HDFS的操作
fstime:记录上一次的更新时间

NameNode概念及SecondaryNameNode作用

触发更新条件:

  1. 文件大小—根据配置文件设置的edits log大小fs.checkpoint.size 默认64MB
  2. 定时更新 — 根据配置文件设置的时间间隔:fs.checkpoint.period 默认3600秒
  3. 重启hdfs的时候也会触发更新 — 在合并过程中,HDFS不对外提供写服务,只提供读服务 — 重启hdfs的时候进行的更新阶段 — 安全模式

SecondaryNameNode合并过程:

NameNode概念及SecondaryNameNode作用

  1. 将edits和fsimage文件通过网络拷贝到Secondarynamenode上
  2. 在namenode产生一个edits.new记录合并期间的操作
  3. 拷贝完成之后,fsimage就会将其中的数据存到secondarynamenode的内存中
  4. 将edits操作更新到secondnarynamenode的内存中
  5. 通过网络将fsimage.ckpt文件中
  6. 将fsimage.ckpt重命名为fsimage,并且将edits.new也重命名为edits

Secondarynamenode只负责进行数据的合并,不是namenode的热备,但是也会起到一定的备份作用,会产生数据的丢失。