Ozone Manager

Ozone Manager(OM)是 Ozone 的命名空间管理器。
这意味着,当你想要写入数据时,需要向 Ozone Manager 申请一个数据块,Ozone Manager 会把数据块分配给你并记录下该信息。当你需要读取该文件时,需要找到数据块的地址,Ozone Manager 会将其返回给你。
Ozone Manager 还允许用户将键组织在卷和桶之下。卷和桶是命名空间的一部分,由 Ozone Manager 进行管理。
每个 Ozone 卷都是 OM 下一个独立命名空间的根。这与提供单一根文件系统的 HDFS 非常不同。
Ozone 的命名空间是若干卷的集合,也就是一片森林,而不是像 HDFS 那样只有一棵单根树。这一特性使得部署多个 OM 以实现扩展变得容易(尚待后续开发)。
Ozone Manager 元数据
OM 维护着卷、桶和键的列表。对于每个用户,它维护该用户的卷列表;对于每个卷,维护桶列表;对于每个桶,维护键列表。
Ozone Manager 将使用 Apache Ratis(一种 Raft 协议实现)来复制 Ozone Manager 的状态,从而确保 Ozone Manager 的高可用性。
Ozone Manager 与 Storage Container Manager
要理解 Ozone Manager 与 Storage Container Manager(SCM)之间的关系,最好的方式是追踪一次键写入和键读取过程中发生的事情。
键写入

- 要向 Ozone 写入一个键,客户端会告知 Ozone Manager,它希望将键写入某个特定卷中的某个桶。一旦 Ozone Manager 确认你被允许向指定的桶写入键,OM 就需要为客户端分配一个数据块用于写入数据。
- 为了分配数据块,Ozone Manager 会向 Storage Container Manager(SCM)发送请求;SCM 是数据节点的管理者。SCM 选出三个数据节点,供客户端向其写入数据。SCM 分配该数据块,并将数据块 ID 返回给 Ozone Manager。
- Ozone Manager 将此数据块信息记录在其元数据中,并把数据块以及数据块令牌(一种允许向该数据块写入数据的安全凭据)返回给客户端。
- 客户端使用数据块令牌来证明自己被允许向该数据块写入数据,然后向数据节点写入数据。
- 一旦数据节点上的写入完成,客户端将更新 Ozone Manager 上的数据块信息。
键读取

- 读取键的操作更简单,客户端向 Ozone Manager 请求块列表。
- Ozone Manager 将返回块列表和块令牌,客户端凭此从数据节点读取数据。
- 客户端连接到数据节点,出示块令牌并从该数据节点读取数据。
Ozone Manager 的主要组件
为了详细了解 Ozone Manager,本节对其提供的网络服务和存储的持久化数据作简要概述。
Ozone Manager 提供的网络服务
Ozone 为客户端和管理命令提供了网络服务。主要的服务调用包括:
键、桶、卷 / CRUD(增删改查)
分片上传(初始化、完成……)
- 支持分多个步骤上传超大文件
文件系统相关调用(针对层级式查询进行了优化,而非扁平的 ObjectStore 命名空间)
- GetFileStatus、CreateDirectory、CreateFile、LookupFile
ACL 相关
- 如果使用原生 ACL 而非 Ranger ACL,则用于管理 ACL
委托令牌(获取 / 续期 / 取消)
- 用于安全机制
管理 API
- 获取 S3 密钥
- ServiceList(用于服务发现)
- DBUpdates(供 Recon 下载快照使用)
持久化状态
以下数据持久化存储在 Ozone Manager 侧的一个特定 RocksDB 目录中:
卷 / 桶 / 键 表
- 这是 OM 的主要职责
- 键元数据包含块 ID(其中含容器 ID),用于定位数据
OpenKey 表
- 用于存放已创建但尚未提交的键
委托令牌表
- 用于安全机制
PrefixInfo 表
- 特定的索引表,用于存储目录级 ACL,并为层级式查询提供更好的性能
S3 密钥表
- 用于 S3 密钥管理
分片上传信息表
- 跟踪正在进行中的上传
Deleted 表
- 跟踪需要从数据节点中删除的块
常用配置
| 配置项 | 默认值 | 说明 |
|---|---|---|
ozone.om.address | 0.0.0.0:9862 | OM 的 RPC 地址,客户端必需。 |
ozone.om.http-address | 0.0.0.0:9874 | HTTP 服务器的默认端口。 |
ozone.metadata.dirs | 无 | 用于存储持久化数据(RocksDB)的目录。 |
评论
登录后参与评论
KnowForge