简介
Ozone是适用于Hadoop的可扩展,冗余和分布式对象存储。具有易扩展和冗余存储的特点。
Ozone 不仅能存储数十亿个不同大小的对象,还支持在容器化环境(比如 Kubernetes)中运行。
Apache Spark、Hive 和 YARN 等应用无需任何修改即可使用 Ozone。Ozone 提供了 Java API、S3 接口和命令行接口,极大地方便了 Ozone 在不同应用场景下的的使用。
Ozone 由volumes、buckets和Keys组成:
- volumes的概念和用户账号类似,只有管理员可以创建和删除卷。
- buckets的概念和目录类似,用户可以在自己的卷下创建任意数量的桶,每个桶可以包含任意数量的键,但是不可以包含其它的桶。
- Keys的概念和文件类似,用户通过键来读写数据。
架构
在架构上Ozone由三部分组成,分别为Ozone Manager
、Storage Container Manager
和Datanodes
。架构图如下:

Ozone Manager(OM)
OzoneManager是一个server服务,主要负责Ozone的namespace,记录所有的volume, bucket和key操作。有点类似HDFS的namenode
Ozone由volumes、buckets和Keys组成,其中每个volume是一个namespace的根节点(与HDFS不同,HDFS只提供了一个根节点),所以整个Ozone的namespace是一个volumes的集合或者是一个由类似HDFS那样的树节点组成的森林。这使得OM可以轻松的扩展为多个OM(此功能正在开发)。
OM中也存储了Ozone的一些元数据信息,这些元数据信息包括volumes、buckets和keys,底层通过Ratis扩展元数据的副本数来实现HA。
Storage Container Manager(SCM)
类似HDFS中的block manager,是Ozone中一个非常重要的组件,用来管理container的,为OM提供基于block和container的服务。
container是由一些block组成的集合,这些block相互之间没有关系。
SCM和数据节点协同工作以维护群集所需的复制级别
Datanodes
如果是基于HDFS部署的Ozone也就是Ozone数据节点功能以插件的功能运行在HDFS的datanode中,则就指HDFS的datanode。Ozone也可以单独部署,此时指运行Ozone数据节点的守护进程。DataNode中以Container基本存储单元