前言
上一篇文章(Ozone SCM的Pipeline状态转化分析)里,笔者对SCM的Pipeline的状态转化做了一定的分析。本文笔者将对SCM中另外一个重要概念Container做详细的分析。Container作为Ozone SCM提供服务的存储单元,SCM内部在Container级别进行数据的Replication,心跳汇报操作等等。这点类似于HDFS内的NameNode对于Block的处理。本文笔者主要介绍Container的状态转化,至于Container内部的数据组织形式,笔者在前面介绍SCM Datanode的文章中已经介绍过,这里就不展开篇幅阐述了。
SCM和Datanode之间的Container处理过程
因为Ozone SCM提供存储数据的单位是Container,因此中心服务SCM和其下管理的Datanode节点是基于Container Report进行心跳汇报的。
这其中涉及的处理过程如下所示:
1)Datanode获取本地最新Container状态报告,心跳方式发送给SCM服务。
2)SCM服务接受到Datanode的Container报告后,对比自身内存维护的Container信息,进行相关Container状态的更新,同时处理副本数不足以及miss掉的Container副本。
3)SCM内部ReplicationManager服务同时会定期检查Container副本状态信息,进行Container副本的处理,例如副本多余,不足的情况以及Cont