为什么有Ozone
对象存储比标准文件系统更容易构建和使用。 缩放对象库也更容易。 大多数大数据应用程序和框架(如Apache Spark,YARN和Hive)都可以在云端和本地运行,这使得在本地存储对象存储非常具有吸引力。众所周知,HDFS是大数据存储系统,并在业界得到了广泛的使用。但是无论大集群还是小集群其扩展性都受NN的限制,虽然HDFS可以通过Federation进行扩展,但是依然深受小文件和4亿个文件的困扰。
于是分布式key-value存储系统Ozone诞生了,Ozone能够轻松管理小文件和大文件。
Ozone
Ozone是专为大数据应用程序设计的对象库。大数据工作负载往往与标准工作负载非常不同,Ozone源自在数千个集群中运行Hadoop的经验教训。Hadoop生态中的其它组件如Spark、Hive和Yarn可以直接运行在Ozone之上。Ozone的使用方式也较为丰富,可以通过命令行直接使用也有java客户端接口,而且接口支持RPC和REST。
Ozone由volumes、buckets和Keys组成,其中
Volumes只有管理员能够创建和删除,类似账号的概念,管理员一般都是给某个团队或者组织创建一个Volume。
Buckets有点像目录,不过这个只能有一层,因为Buckets中不能包含其它Buckets。Buckets是在Volume下,一个Volume可以包含n个Buckets,但是Buckets下面只能是Keys。
Keys就是具体的对象,在Buckets中是唯一的,其名字可以是任意字符串,其值就是需要存储的数据,也就是具体的文件。目前ozone对key的大小没有限制,bucket可以包含n个keys。
Ozone设计特点:
SCALABLE(可扩展性):Ozone可扩展到数百亿个文件和块,并在未来甚至更多。
CONSISTENT(一致性):Ozone是一个非常一致的对象存储。 通过使用诸如RAFT之类的协议来实现这种一致性。
SECURE(安全):Ozone与kerberos基础设施集成,用于访问控制,并支持TDE和线上加密。
MULTI-PROTOCOL SUPPORT(多协议支持):Ozone支持不同的协议,如S3和Hadoop文件系统API
HIGHLY AVAILABLE(高可用性):Ozone是一个完全复制的系统,旨在经受多次故障。
Interoperability with Hadoop Ecosystem:Ozone的设计适用于YARN和Kubernetes等集装箱化环境;Ozone可以被现存的Hadoop生态和相关的应用(如 apache hive、apache spark 和传统的 mapreduce)使用,因此Ozone支持: Hadoop Compatible FileSystem API(也叫OzoneFS) – hive、spark等可以使用OzoneFS API Ozone作为存储层,而不需要做任务修改。
Ozone对Apach Spark支持:
如果你有一个基于Spark的应用程序,并且您希望它与Ozone一起使用。如果您当前的存储系统是HDFS,那么您将使用以hdfs://开头的URL将数据位置传递给您的应用程序。如果用03fs代替hdfs://://应用程序将开始使用臭氧桶中的数据。
Ozone对S3应用程序的支持:
zone支持S3协议作为一流的接口。因此,你可以使用现有的基于S3的应用程序并更改S3服务器地址。但如果你的S3服务器是安全的,同时你有一个安全的Ozone集群请通过运行“kinit”登录,并通过运行“ozone s3 getsecret”请求臭氧aws凭证。此命令将向Ozone管理器显示您的Kerberos凭据,Ozone管理器将返回您可以放入.aws文件的访问密钥ID和秘密访问密钥。如果未打开安全性,则可以在这些字段中放置任何内容,因为不会在服务器端强制执行安全性。
架构:
下面是Ozone在发行第一个版本时的架构图:
在架构上Ozone由三部分组成,分别为Ozone Manager
、Storage Container Manager
和Datanodes
。架构图如下:
Ozone Manager(OM):
OzoneManager是一个server服务,主要负责Ozone的namespa