Hadoop HDFS NameNode

Hadoop HDFS NameNode

  • 工作机制
  • Fsimage/Edits
  • CheckPoint

介绍 :

  • FsImage : 磁盘中备份元数据
  • Edits : 元数据变化时,会追加操作
  • SecondaryNamenode : 定期合并 FsImage 和 Edits

解决点 :

  • FsImage : 避免元数据丢失
  • Edits : 提高更新元数据效率
  • SecondaryNamenode : 避免 Edits 文件过大 , 导致元数据恢复较长

工作机制

NameNode 机制 :

  1. 第一次启动 , 对 NameNode 格式化后, 创建 Fsimage 和 Edits 文件 ; 当非第一次启动,就加载编辑日志和镜像文件到内存
  2. 客户端请求对元数据进行增删改
  3. NameNode 记录操作日志 (Edits),更新滚动日志
  4. NameNode 在内存中对元数据进行增删改

Secondary NameNode 机制 :

  1. Secondary NameNode 询问 NameNode 是否要 CheckPoint。 直接带回 NameNode 是否检查结果
  2. Secondary NameNode 请求执行 CheckPoint
  3. NameNode 滚动正在写的 Edits 日志
  4. 将滚动前的编辑日志和镜像文件拷贝到 Secondary NameNode
  5. Secondary NameNode 加载编辑日志和镜像文件到内存,并合并
  6. 生成新的镜像文件 fsimage.chkpoint
  7. 拷贝 fsimage.chkpoint 到 NameNode
  8. NameNode 将 fsimage.chkpoint 重新命名成 fsimage

Hadoop HDFS NameNode_第1张图片

代码流程 :
Hadoop HDFS NameNode_第2张图片

Fsimage/Edits

NameNode 格式化后,Fsimage ,Edits 会在 .../hadoop-3.1.3/data/dfs/name/current

  • seen_txid : 最后个edits_ 的数字

文件如下 :
image.png

查看 Fsimage 内容 :

hdfs oiv -p 文件类型 -i 镜像文件 -o 转换后文件输出路径


hdfs oiv -p Delimited -i fsimage_xxxx -o fsimage_xxx.txt
目录路径   副本数          修改时间        访问时间     首选块大小         块的数量     文件大小   名称配额         空间配额  权限         用户     用户组
Path    Replication  ModificationTime   AccessTime  PreferredBlockSize BlocksCount FileSize    NSQUOTA        DSQUOTA  Permission  UserName  GroupName
 /               0       2022-05-19 14:47  1970-01-01 08:00      0             0          0   9223372036854775807    -1      drwxr-xr-x   hdfs     supergroup
/tmp             0       2022-05-19 09:10  1970-01-01 08:00      0             0          0          -1              -1      drwxrwxrwx   hdfs     supergroup
/tmp/hadoop-yarn 0       2022-05-06 10:14  1970-01-01 08:00      0             0          0          -1            -1      drwxrwxrwx     hdfs   supergroup

看 edits 内容 :

hdfs oev -p Delimited -i edits_xxx-xxx -o edits_xxx.txt

CheckPoint

hdfs-default.xml :

<property>
  <name>dfs.namenode.checkpoint.periodname>
  <value>3600svalue>
  <description>默认: SecondaryNameNode 每一小时执行一次description>
property>


<property>
  <name>dfs.namenode.checkpoint.txnsname>
  <value>1000000value>
  <description>操作动作次数description>
property>

<property>
  <name>dfs.namenode.checkpoint.check.periodname>
  <value>60svalue>
  <description> 1 分钟检查一次操作次数description>
property>

你可能感兴趣的:(Hadoop,prometheus,ambari,架构,大数据,服务器)