hdfs fsimage和editlog


hdfs fsimage和editlog

fsimage,namenode的元数据镜像文件,保存在磁盘

editlog,namenode操作日志

fstime,最近一次的checkpoint时间

metadata,一个文件存储在哪些DataNode节点的哪些位置的元数据信息

datanode上存储文件名一般为blk……

打开/usr/local/hadoop/etc/hadoop路径下的 hdfs-site.xml文件,查看其中的dfs.namenode.name.dir的配置值,并打开对应路径,就能看到

其中FSImage文件则是不同时间的元数据检查点,记录了在对应时间节点下HDFS文件系统的目录和文件信息。

对于文件来说包括了数据块描述信息、修改时间、访问时间等;

对于目录来说包括修改时间、访问权限控制信息(目录所属用户,所在组)等。

上图中editlog_inprogress_0000000000000000002文件则代表此状态下fsimage已经加载到了编号为0000000000000000001的文件

经过部分操作后:

假设editlog_inprogress文件的后缀编号为0000000000000091059,则代表启动HDFS的时候只需要读入edits_inprogress_0000000000000091059日志文件和fsimage­_0000000000000091058镜像文件。

当editlog越来越多,越来越大,在加载fsimage后就需要再加载editlog,就会影响启动的速度。因此fsimage和editlog在满足到达一定条件(一定时间或者一定的txns)后就会出发checkpoint机制进行合并。

合并步骤

1、SNN告诉NN滚动inprogress editlog文件,这样新的操作都会写到新的editlog文件,同事,NN更新seen_txid

2、SNN通过http get方式从NN获取最新的fsimage和editlog

3、SNN将fsimage加载到内存,并从editlog中读取每一次事务,应用到fsimage,这样就产生了一个新的fsimage

4、SNN将新的fsimage通过http put的方式发送到NN,NN将fsimage保存为临时fsimage.ckpt文件中

5、NN将fsimage.ckpt文件重命名,此完成了fsimage和editlog的同步

通过hdfs oiv -i fsimage_xxxxxxxxxxxxx指令就能查看fsimage文件内容

还可以用 hdfs oev -i edits_xxxxxxxxxxx -o xxx.xml导出editlog文件至xml文件进行查看

部分内容如下!


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM