希望多多指导,qq 86497564 。

© 天行自息
Powered by LOFTER

fsimage 和 editlog 的解释和原理


    fsimage保存来最新的元数据检查点,包含来整个hdfs文件系统的所有目录和文件的信息。对于文件来说包括了数据块描述信息,修改时间,访问时间等,对于目录老说包括修改时间,访问权限控制信息(目录所属用户,所在组)等。Fimage就是在某一时刻,整个hdfs的快照,就是这个时刻的hdfs上所有的文件块和目录,分别的状态,位于哪些个datanode,各自的权限,各自的副本个数。

    editlog主要是在Namenode已经启动情况下对hdfs进行的各种更新操作进行记录,hdfs客户端执行所有的写操作都会被记录到editlog中。客户端对hdfs所有的更新操作,比如说移动数据,或者删除数据,都会记录在editlog中。为了避免editlog不断增大,secondary namenode 会周期性合并fsimage和deits 合并成新的fsimage新的操作记录会写入新的editlog中,这个周期可以自己设置(editlog到达一定大小或者定时)。

    

    第一步:将hdfs更新记录写入一个新的文件--edit.new

    第二步:将fsimage和editlog通过http协议发送至secondary namenode

    第三步:将fsimage与editlog合并,生成一个新的文件--fsimage.ckpt。这步之所以在secondary namenode中进行,是因为比较耗时,如果在namenode进行,或导致整个系统卡顿。

    第四步:将生成的fsimage.ckpt通过http协议发送至namenode。

    第五步:重命名fsimage.ckpt为fsimage,edits.new为edit。

    

评论
热度 ( 2 )