HDFS编辑日志和镜像文件
HDFS非常重要的几个文件
namenode被格式化之后,将在hadoop.tmp.dir目录中产生如下文件:
edits_0000000000000000001-0000000000000000001 fsimage_0000000000000000258 fsimage_0000000000000000258.md5 seen_txid VERSION (1)Fsimage文件(镜像文件):HDFS文件系统元数据的一个永久性的检查点,其中包含HDFS文件系统的所有目录和文件idnode的序列化信息。 (2)Edits文件(编辑日志):存放HDFS文件系统的所有更新操作的路径,文件系统客户端执行的所有写操作首先会被记录到edits文件中。 (3)seen_txid文件保存的是一个数字,就是最后一个edits_的数字 (4)每次Namenode启动的时候都会将fsimage文件读入内存,并从00001开始到seen_txid中记录的数字依次执行每个edits里面的更新操作,保证内存中的元数据信息是最新的、同步的,可以看成Namenode启动的时候就将fsimage和edits文件进行了合并。
VERSION文件:
$ cat VERSION #Thu Mar 05 09:08:20 CST 2020 namespaceID=2134024206 clusterID=CID-e7391405-290e-4dd6-8c3b-493bbaca6502 cTime=0 storageType=NAME_NODE blockpoolID=BP-112428611-10.0.0.31-1583325452737 layoutVersion=-60
文件内容剖析:
(1)namespaceID:是文件系统的唯一标识符,在文件系统首次格式化之后生成的; (2)storageType:说明这个文件存储的是什么进程的数据结构信息(如果是DataNode,storageType=DATA_NODE); (3)cTime:表示NameNode存储时间的创建时间,由于我的NameNode没有更新过,所以这里的记录值为0,以后对NameNode升级之后,cTime将会记录更新时间戳; (4)layoutVersion:表示HDFS永久性数据结构的版本信息, 只要数据结构变更,版本号也要递减,此时的HDFS也需要升级,否则磁盘仍旧是使用旧版本的数据结构,这会导致新版本的NameNode无法使用; (5)clusterID:是系统生成或手动指定的集群ID,在-clusterid选项中可以使用它;如下说明: - 使用如下命令格式化一个Namenode: $HADOOP_HOME/bin/hdfs namenode -format [-clusterId <cluster_id>] a、选择一个唯一的cluster_id,并且这个cluster_id不能与环境中其他集群有冲突。如果没有提供cluster_id,则会自动生成一个唯一的ClusterID。 b、使用如下命令格式化其他Namenode:$HADOOP_HOME/bin/hdfs namenode -format -clusterId <cluster_id> c、升级集群至最新版本。在升级过程中需要提供一个ClusterID,例如:$HADOOP_PREFIX_HOME/bin/hdfs start namenode --config $HADOOP_CONF_DIR -upgrade -clusterId <cluster_ID> 如果没有提供ClusterID,则会自动生成一个ClusterID。 (6)blockpoolID:是针对每一个Namespace所对应的blockpool的ID
seen_txid
存放transactionId的文件,format之后是0,它代表的是namenode里面的edits_NUM文件的尾数,namenode重启的时候,会按照seen_txid的数字,循序从头跑edits_0000001~到seen_txid的数字。
所以当你的hdfs发生异常重启的时候,一定要比对seen_txid内的数字是不是你edits最后的尾数,不然会发生建置namenode时metaData的资料有缺少,导致误删Datanode上多余Block的信息。
文件中记录的是edits滚动的序号,每次重启namenode时,namenode就知道要将哪些edits进行加载edits
fsimage_0000000000000000258.md5
该文件是镜像文件的MD5校验文件,这个文件是为了判断镜像文件是否被修改。
edits_inprogress_0000000000000000311
当前正在使用的编辑日志文件,同一时刻只能有一个这样的文件被打开。
镜像文件和编辑日志的查看方式:https://www.cnblogs.com/zh-dream/articles/12416899.html
手动滚动编辑日志

$ ll total 7232 -rw-rw-r-- 1 hdfs hdfs 1048576 Mar 4 21:11 edits_0000000000000000001-0000000000000000001 -rw-rw-r-- 1 hdfs hdfs 42 Mar 4 21:13 edits_0000000000000000002-0000000000000000003 -rw-rw-r-- 1 hdfs hdfs 1048576 Mar 4 21:13 edits_0000000000000000004-0000000000000000004 -rw-rw-r-- 1 hdfs hdfs 1048576 Mar 4 21:51 edits_0000000000000000005-0000000000000000005 -rw-rw-r-- 1 hdfs hdfs 42 Mar 4 21:57 edits_0000000000000000006-0000000000000000007 -rw-rw-r-- 1 hdfs hdfs 1224 Mar 4 22:57 edits_0000000000000000008-0000000000000000023 -rw-rw-r-- 1 hdfs hdfs 1048576 Mar 4 23:41 edits_0000000000000000024-0000000000000000089 -rw-r--r-- 1 root root 1048576 Mar 5 09:40 edits_0000000000000000090-0000000000000000097 -rw-rw-r-- 1 hdfs hdfs 3355 Mar 5 10:01 edits_0000000000000000098-0000000000000000176 -rw-rw-r-- 1 hdfs hdfs 268 Mar 5 11:01 edits_0000000000000000177-0000000000000000181 -rw-rw-r-- 1 hdfs hdfs 5875 Mar 5 12:01 edits_0000000000000000182-0000000000000000255 -rw-rw-r-- 1 hdfs hdfs 83 Mar 5 13:01 edits_0000000000000000256-0000000000000000258 -rw-rw-r-- 1 hdfs hdfs 1048576 Mar 5 13:49 edits_0000000000000000259-0000000000000000303 -rw-rw-r-- 1 hdfs hdfs 42 Mar 5 14:01 edits_0000000000000000304-0000000000000000305 -rw-rw-r-- 1 hdfs hdfs 413 Mar 5 15:01 edits_0000000000000000306-0000000000000000310 -rw-rw-r-- 1 hdfs hdfs 1048576 Mar 5 15:01 edits_inprogress_0000000000000000311 -rw-rw-r-- 1 hdfs hdfs 2252 Mar 5 14:01 fsimage_0000000000000000305 -rw-rw-r-- 1 hdfs hdfs 62 Mar 5 14:01 fsimage_0000000000000000305.md5 -rw-rw-r-- 1 hdfs hdfs 2182 Mar 5 15:01 fsimage_0000000000000000310 -rw-rw-r-- 1 hdfs hdfs 62 Mar 5 15:01 fsimage_0000000000000000310.md5 -rw-rw-r-- 1 hdfs hdfs 4 Mar 5 15:01 seen_txid -rw-rw-r-- 1 hdfs hdfs 201 Mar 5 09:08 VERSION $ hdfs dfsadmin -rollEdits Successfully rolled edit logs. New segment starts at txid 313 $ ll total 8196 -rw-rw-r-- 1 hdfs hdfs 1048576 Mar 4 21:11 edits_0000000000000000001-0000000000000000001 -rw-rw-r-- 1 hdfs hdfs 42 Mar 4 21:13 edits_0000000000000000002-0000000000000000003 -rw-rw-r-- 1 hdfs hdfs 1048576 Mar 4 21:13 edits_0000000000000000004-0000000000000000004 -rw-rw-r-- 1 hdfs hdfs 1048576 Mar 4 21:51 edits_0000000000000000005-0000000000000000005 -rw-rw-r-- 1 hdfs hdfs 42 Mar 4 21:57 edits_0000000000000000006-0000000000000000007 -rw-rw-r-- 1 hdfs hdfs 1224 Mar 4 22:57 edits_0000000000000000008-0000000000000000023 -rw-rw-r-- 1 hdfs hdfs 1048576 Mar 4 23:41 edits_0000000000000000024-0000000000000000089 -rw-r--r-- 1 root root 1048576 Mar 5 09:40 edits_0000000000000000090-0000000000000000097 -rw-rw-r-- 1 hdfs hdfs 3355 Mar 5 10:01 edits_0000000000000000098-0000000000000000176 -rw-rw-r-- 1 hdfs hdfs 268 Mar 5 11:01 edits_0000000000000000177-0000000000000000181 -rw-rw-r-- 1 hdfs hdfs 5875 Mar 5 12:01 edits_0000000000000000182-0000000000000000255 -rw-rw-r-- 1 hdfs hdfs 83 Mar 5 13:01 edits_0000000000000000256-0000000000000000258 -rw-rw-r-- 1 hdfs hdfs 1048576 Mar 5 13:49 edits_0000000000000000259-0000000000000000303 -rw-rw-r-- 1 hdfs hdfs 42 Mar 5 14:01 edits_0000000000000000304-0000000000000000305 -rw-rw-r-- 1 hdfs hdfs 413 Mar 5 15:01 edits_0000000000000000306-0000000000000000310 -rw-rw-r-- 1 hdfs hdfs 42 Mar 5 15:23 edits_0000000000000000311-0000000000000000312 -rw-rw-r-- 1 hdfs hdfs 1048576 Mar 5 15:23 edits_inprogress_0000000000000000313 -rw-rw-r-- 1 hdfs hdfs 2252 Mar 5 14:01 fsimage_0000000000000000305 -rw-rw-r-- 1 hdfs hdfs 62 Mar 5 14:01 fsimage_0000000000000000305.md5 -rw-rw-r-- 1 hdfs hdfs 2182 Mar 5 15:01 fsimage_0000000000000000310 -rw-rw-r-- 1 hdfs hdfs 62 Mar 5 15:01 fsimage_0000000000000000310.md5 -rw-rw-r-- 1 hdfs hdfs 4 Mar 5 15:23 seen_txid -rw-rw-r-- 1 hdfs hdfs 201 Mar 5 09:08 VERSION
hdfs重启时,namenode会将编辑日志和镜像文件合并,自动滚动编辑日志。
手动保存镜像文件(需要在安全模式进行)
$ ll |grep fsimage
-rw-rw-r-- 1 hdfs hdfs 2252 Mar 5 14:01 fsimage_0000000000000000305
-rw-rw-r-- 1 hdfs hdfs 62 Mar 5 14:01 fsimage_0000000000000000305.md5
-rw-rw-r-- 1 hdfs hdfs 2182 Mar 5 15:01 fsimage_0000000000000000310
-rw-rw-r-- 1 hdfs hdfs 62 Mar 5 15:01 fsimage_0000000000000000310.md5
$ hdfs dfsadmin -saveNamespace saveNamespace: Safe mode should be turned ON in order to create namespace image. $ hdfs dfsadmin -safemode enter Safe mode is ON $ hdfs dfsadmin -saveNamespace Save namespace successful
$ ll |grep fsimage
-rw-rw-r-- 1 hdfs hdfs 2182 Mar 5 15:01 fsimage_0000000000000000310
-rw-rw-r-- 1 hdfs hdfs 62 Mar 5 15:01 fsimage_0000000000000000310.md5
-rw-rw-r-- 1 hdfs hdfs 2255 Mar 5 15:29 fsimage_0000000000000000314
-rw-rw-r-- 1 hdfs hdfs 62 Mar 5 15:29 fsimage_0000000000000000314.md5
Fsimage文件
每个fsimage文件都是文件系统元数据的一个完整的永久性检查点。后缀的数字表示镜像文件的最后一个事务ID。不是每个写操作都会更新该文件。如果namenode发生故障,
最近的fsimage文件将被载入到内存用来重构元数据的最近状态,再从相关点开始向前执行编辑日志中的记录。
HDFS启动过程
https://www.cnblogs.com/zh-dream/p/12437145.html
posted on 2020-03-05 23:27 hopeless-dream 阅读(737) 评论(0) 收藏 举报