一、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
1.转换 Fsimage 文件
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
2.转换 Edits 文件
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 默认每隔一小时执行一次
查看默认配置:
2.以次数为准
dfs.namenode.checkpoint.txns 10000 作次数到达一万次就发起合并 dfs.namenode.checkpoint.check.period 600 每间隔10分钟检查一次操作次数是否到达