前言
在HDFS的世界中,所有涉及元数据相关的操作都是在NameNode内完成的,真实进行文件读写和删除操作是在DataNode节点上完成的,完成好之后,再通过心跳的方式将结果汇报给NameNode。这种处理方式要比完全同步的方式好很多,尤其高吞吐数据量规模的情况下时,走同步的方式会很快遇到瓶颈的。当然了,HDFS NameNode这套机制相关文章已经写了很多了,本文笔者来介绍一个比较新的服务设计:HDFS对象存储的Ozone的块删除服务。Ozone在块删除服务的设计上要比现有的NameNode的块删除操作要复杂一些,因为它所涉及的不同服务之间的调用会更多一些。
Ozone块删除操作的相关服务
首先,我们先要知道Ozone的块删除操作,会涉及到哪些服务的操作调用,这个如果不清楚,后面就会比较难理解(这里提醒一下博友们,HDFS Ozone会要求比较多的上下文知识,如果不了解的可以阅读笔者之前写的Ozone相关的文章)。下面是相关的服务:
第一个KSM(Key Space Manager)服务,Ozone的KSM可以理解为HDFS中的NameNode,作为元数据的管理服务。在块删除服务内,它所要做的事情主要有2个:1.进行元数据的更新;2.与SCM服务通信,将要删除的块通知给SCM。
第二个SCM(Storage Container Manager)服务,SCM是一个中间人的角色,它会同时于KSM和DataNode进行通信。SCM在这里要做的事情是拿到KSM里要删除的块,并从自己维护的container信息里找到删除块对应所属的contain容器&