先上图,文章以后再上

截图有先后 所以有些延迟,但是不耽误总体的理解(active-nn=a-nn=active-namenode; s-nn=standby-nn=standby-namenode; journalnode=jn;edits_log=elog ; fsimage=fsg )

一般认为journalnode有2n+1台,如果大于等于n+1台成功写入,就算写入jn成功。

standby-nn 会定时拉取3台jn节点(假设有3台jn)的edits_log(只拉取处于finalized状态的edits_log,in-progress并不会拉取因为他可能会改变),再与本地的fsimage元数据镜像文件做merge操作( s-nn 并不会同时把edits_log 写入到本地磁盘上。下图中磁盘有edits_log是因为他之前是active-nn(从最后修改时间也可以看出来)。合并操作是在standby-nn内存中完成,完成后会落地新fsimage文件如下图)。

当standby-nn merge完毕后,旧的fsimage不会立即删除而会保留一段时间等待被roll掉,当然版本号会比新merge的fsimage要小。与此同时standby-nn会把新merge的镜像文件推给active-nn ,active-nn旧的镜像也不会立即删除,也是等待被roll掉,新推过来的fsimage镜像也是要比旧的镜像编号要大。

注意:s-nn会比a-nn少一些元数据信息(少的是s-nn在拉取elog时处于in-progress的日志),所以当a-nn宕机或处于非健康状态时,s-nn在切换成a-nn之前要重新拉取大于本地fsg号的elog文件做merge操作,这样s-nn才是最新的元数据,可以切换成a-nn了。
(TODO:这里有个疑问,就是a-nn处于异常状态的那一刻会有elog处于in-progress,a-nn来不及处理这部分elog(比如a-nn突然宕机),s-nn是如何处理这部分elog的)
问题:主备切换时,s-nn从jn获取最新elog,在内存中回放(这时合并的最新fsimage会不会落地),目前看现象是不会落地(需看源码确认)

更多细节会贴源码介绍


最新文章

  1. 在Android中Intent的概念及应用(一)——显示Intent和隐式Intent
  2. ipv4理论知识2-分类编址、ip分类、网络标识、主机标识、地址类、地址块
  3. Android三种基本的加载网络图片方式(转)
  4. SQL_NO_CACHE
  5. Scrum项目3.0
  6. CS001: 清理浮动的几种方法以及对应规范说明
  7. netcat运行出错
  8. javascript常用代码大全
  9. 大数据学习之hadoop伪分布式集群安装(一)公众号undefined110
  10. Android Studio:Unable to add window android.view.ViewRootImpl$W@5e2d85a -- permission denied for this window 第一行代码
  11. 闲扯 Javascript 01 实现选项卡
  12. PAT (Advanced Level) 1017. Queueing at Bank (25)
  13. 邓_php面试【003】——完整版
  14. Linux文件系统的基本结构
  15. WPF腾讯视频通话开发
  16. 每日英语:Are Smartphones Turning Us Into Bad Samaritans?
  17. Sahi (2) —— https/SSL配置(102 Tutorial)
  18. Asp.Net Core App 部署故障示例 1
  19. Luogu 4433 [COCI2009-2010#1] ALADIN
  20. yarn的使用

热门文章

  1. Django 链接mysql
  2. 黄聪:TortoiseGit(乌龟git)保存用户名密码的方法
  3. PHP 获取url里文件的扩展名
  4. lucene 4.0 - Facet demo
  5. Hadoop错误集:Journal Storage Directory not formatted
  6. Java学习——this、this()、super 和 super()的使用
  7. 廖雪峰Java5Java集合-5Queue-1使用Queue
  8. mysql 意向锁的作用
  9. error while loading shared libraries: xxx.so
  10. 1118 Birds in Forest (25 分)