NameNode 与 SecondaryNameNode 的工作机制
阅读原文时间:2024年09月30日阅读:1

一、NameNode、Fsimage 、Edits 和 SecondaryNameNode 概述

NameNode:在内存中储存 HDFS 文件的元数据信息(目录)

如果节点故障或断电,存在内存中的数据会丢失,显然只在内存中保存是不可靠的
实际在磁盘当中也有保存:Fsimage 和 Edits,一个 NameNode 节点在重启后会根据这磁盘上的这两个文件来恢复到之前的状态

Fsimage(镜像文件) 和 Edits(编辑日志):记录内存中的元数据

如果每次对 HDFS 的操作都实时的把内存中的元数据信息往磁盘上传输,这样显然效率不够高,也不稳定
这时就出现了 Edits 文件,用来记录每次对 HDFS 的操作,这样在磁盘上每次就只用做很小改动(只进行追加操作)
当 Edits 文件达到了一定大小或过了一定的时间,就需要把 Edits 文件转化 Fsimage 文件,然后清空 Edits
这样的 Fsimage 文件不会和内存中的元数据实时同步,需要加上 Edits 文件才相等

SecondaryNameNode:负责 Edits 转化成 Fsimage

SecondaryNameNode 不是 NameNode 的备份
SecondaryNameNode 会定时定量的把集群中的 Edits 文件转化为 Fsimage 文件,来保证 NameNode 中数据的可靠性

二、NameNode 工作机制

磁盘上的元数据文件

三、查看 Edits 与 Fsimage

Edits 和 Fsimage 并非明文存储,需要转换后才能查看,使用 hdfs 命令进行转换

# 部分命令参数
Usage: hdfs [--config confdir] [--loglevel loglevel] COMMAND
where COMMAND is one of:

转换 fsimage 文件

oiv apply the offline fsimage viewer to an fsimage

转换旧版 fsimage 文件

oiv_legacy apply the offline fsimage viewer to an legacy fsimage

转换 edits 文件

oev apply the offline edits viewer to an edits file

hdfs oiv:查看参数

部分参数说明

Usage: bin/hdfs oiv [OPTIONS] -i INPUTFILE -o OUTPUTFILE

-i 要转换的文件
-o 转换后文件路径
-p 转换格式 (XML|FileDistribution|ReverseXML|Web|Delimited)

转换文件

hdfs oiv -p XML -i ./fsimage_0000000000000000326 -o ./fsimage.xml

转换后的文件,记录了文件信息


-63 1 Unknown 1803101069 1000 1015 0 1073741839 326 16400 11 16385 DIRECTORY 1555218314075 root:supergroup:0755 9223372036854775807 -1 16388 FILE javafx-src.zip 2 1554996304962 15550 84059617 134217728 root:supergroup:0644 107 3741829 1005 5211154 0 16389 DIRECTORY 0529 1554999968472 root:supergroup:0755 -1 -1 16390 DIRECTORY mkmk 1555000275046 root:supergroup:0755 -1 -1 16391 DIRECTORY 10088 1555000763405 root:supergroup:0755 -1 -1 16394 FILE Writage-1.12.msi 3 1555086090236 155 5086085824 134217728 root:supergroup:0644 1 073741832 1008 12771328 0 16395 FILE hadoop-2.9.2-win10-64.tar.gz 3 1555086717860 1555086612935 134217728 root:supergroup:0644 1073741833 1009 134217728 1073741834 1010 134217728 1073741835 1011 43080138 0 16396 DIRECTORY Priority 1555219450567 root:supergroup:0755 -1 -1 16398 FILE AAA.msi 3 1555219070073 155521906501 6 134217728 root:supergroup:0644 1073741837 1013 12771328 0 16399 FILE BBB.msi 1 1555219285187 155521928012 9 134217728 root:supergroup:0644 1073741838 1014 12771328 0 16400 FILE CCC.msi 2 1555219455139 155521945056 7 134217728 root:supergroup:0644 1073741839 1015 12771328 0 0 0 16385 16389 16391 16396 16394 16395 16388 16390 16396 16398 16399 16400 0 0 0 0 1 0 0

hdfs oev:查看参数

参数与上面类似,-p 有些不同

-p binary (native binary format that Hadoop uses), xml (default, XML format), stats (prints statistics about edits file)

转换文件

hdfs oev -p xml -i ./edits_inprogress_0000000000000000329 -o ./edits.xml

转换后的文件,记录 hdfs 的操作记录


-63 OP_START_LOG_SEGMENT 16 OP_ADD 17 0 16386 /javafx-src.zip._COPYING_ 3 1554995796290 1554995796290 134217728 DFSClient_NONMAPREDUCE_1941526907_1 192.168.8.136 true root supergroup 420 5b80319d-463f-4591-b090-2d1462563e48 3 OP_ALLOCATE_BLOCK_ID 18 1073741825 OP_SET_GENSTAMP_V2 19 1001 OP_ADD_BLOCK 20 /javafx-src.zip._COPYING_ 1073741825 0 1001 -2 OP_UPDATE_BLOCKS 21 /javafx-src.zip._COPYING_ -2 OP_ALLOCATE_BLOCK_ID 22 1073741826 OP_SET_GENSTAMP_V2 23 1002 OP_ADD_BLOCK 24 /javafx-src.zip._COPYING_ 1073741826 0 1002 -2 OP_CLOSE 25 0 0 /javafx-src.zip._COPYING_ 3 1554995797095 1554995796290 134217728 false 1073741826 5211154 1002 root supergroup 420 OP_RENAME_OLD 26 0 /javafx-src.zip._COPYING_ /javafx-src.zip 1554995797102 5b80319d-463f-4591-b090-2d1462563e48 11 OP_DELETE 27 0 /javafx-src.zip 1554995877570 847eb009-9524-4f1c-a5a5-5253908ec1b5 3

四、CheckPoint 时间设置

1.以时间为准

dfs.namenode.checkpoint.period 3600

SecondaryNameNode 默认每隔一小时执行一次

查看默认配置:http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-hdfs/hdfs-default.xml

2.以次数为准

dfs.namenode.checkpoint.txns 10000 作次数到达一万次就发起合并
dfs.namenode.checkpoint.check.period 600 每间隔10分钟检查一次操作次数是否到达


http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-hdfs/HdfsEditsViewer.html

http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-hdfs/HdfsImageViewer.html

https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-hdfs/HdfsUserGuide.html#Secondary_NameNode

手机扫一扫

移动阅读更方便

阿里云服务器
腾讯云服务器
七牛云服务器