Ozone Manager
注意:本页面翻译的信息可能滞后,最新的信息请参看英文版的相关页面。
Ozone Manager(OM)管理 Ozone 的命名空间。
当向 Ozone 写入数据时,你需要向 OM 请求一个块,OM 会返回一个块并记录下相关信息。当你想要读取那个文件时,你也需要先通过 OM 获取那个块的地址。
OM 允许用户在卷和桶下管理键,卷和桶都是命名空间的一部分,也由 OM 管理。
每个卷都是 OM 下的一个独立命名空间的根,这一点和 HDFS 不同,HDFS 提供的是单个根目录的文件系统。
与 HDFS 中单根的树状结构相比,Ozone 的命名空间是卷的集合,或者可以看作是个森林,因此可以非常容易地部署多个 OM 来进行扩展。
Ozone Manager 元数据
OM 维护了卷、桶和键的列表。它为每个用户维护卷的列表,为每个卷维护桶的列表,为每个桶维护键的列表。
OM 使用 Apache Ratis(Raft 协议的一种实现)来复制 OM 的状态,这为 Ozone 提供了高可用性保证。
Ozone Manager 和 Storage Container Manager
为了方便理解 OM 和 SCM 之间的关系,我们来看看写入键和读取键的过程。
写入键
为了向 Ozone 中的某个卷下的某个桶的某个键写入数据,用户需要先向 OM 发起写请求,OM 会判断该用户是否有权限写入该键,如果权限许可,OM 分配一个块用于 Ozone 客户端数据写入。
OM 通过 SCM 请求分配一个块(SCM 是数据节点的管理者),SCM 选择三个数据节点,分配新块并向 OM 返回块标识。
OM 在自己的元数据中记录下块的信息,然后将块和块 token(带有向该块写数据的授权)返回给用户。
用户使用块 token 证明自己有权限向该块写入数据,并向对应的数据节点写入数据。
数据写入完成后,用户会更新该块在 OM 中的信息。
读取键
键读取相对比较简单,用户首先向 OM 请求该键的块列表。
OM 返回块列表以及对应的块 token。
用户连接数据节点,出示块 token,然后读取键数据。