1,首先Namenode需要和客户端进行交互 为了提高交互效率,Namenode需要把元数据放在内存中,但是为了防止断电数据丢失,元数据需要备份到磁盘(FsImage)
2,在Namenode与客户端交互的过程中需要对元数据进行操作,在交互的过程中,如果同步更新FsImage,那么效率就会非常低,
3,为了解决上述问题,因此引入Edits文件(此文件只进行追加操作)每当由元数据需要操作时,操作后的元数据追加到Edits中,这样即使断电,通过合并Edits和FsImage也可以进行数据保存。
4,那么如果一直不断电,并且集群一直运行,Edits文件就一直追加,导致文件越来越大,同样影响开发效率,而且合并时时间太长,
5,因此需要定时把Edits和FsImage合并,这个定时合并工作就有SeCondaryNamenode来完成,即checkPoint,
SeCondaryNamenode执行checkPoint操作需要两个条件,
一,定时一般为3600s,也就是一个小时
二,Edits文件存入一定数据,一般是操作数达到100万条数据时,
只要满足一个条件时就可以执行checkPoint操作
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/133857.html