HDFS的新方向:Ozone对象存储

前言



HDFS在近几年中得到了迅速的发展,作为性价比比较高的存储系统,用户、企业只需利用若干台低配廉价的节点机型,就可以构建能够承受TB甚至PB级别的大数据集群,然后在上面做各种类型任务的作业,而且在底层方面,我们完全可以依赖HDFS自身实现的容错机制来应当各种异常情况。但是在当今数据使用场景日益多元化的背景下,HDFS并不是能满足所有的应用需求。如何能够以一种更加高效,方便的方式去存储用户想要保存的数据,成为了一个急需去解决的问题。于是后面诞生出了一个企业级的存储方案:对象存储。对照存储的出现直接方便了一些抽象数据类型的存储。目前市面上也已经有许多相应的对象存储服务,当然了,社区也意识到了这一点,于是在2014年的时候提出了一个观点:基于HDFS内部,提供一个对象存储的服务,名叫Ozone。本文笔者就来好好聊聊这个话题。我们来聊聊Ozone目前的情况以及它未来的一些动向。

Ozone的起源



在前言中笔者已经说过,Ozone的提出在2014年,由Hortonworks率先提出,并建立了一个JIRA:HDFS-7240(Object store in HDFS)。一个大背景是当时许多企业已经推出了对象存储的服务而HDFS还不支持。

现在有一个问题来了,如果在HDFS内部做一套这样的功能,它的工作量绝对是不小的,而且如果做出来了,它如何与市面已有的对象存储服务竞争呢,换句话说它有什么自身的优势呢?说到这里,答案是有的。HDFS作为Hadoop中的一个组件,发展了这么多年,它的普及以及使用率一定是有一些的,用户也已经习惯于将数据存放到HDFS上。如果HDFS这时还能支持对象存储了,可能用户就完全不需要考虑重新花钱去买另外一套服务了,在自身集群内部使用这项功能就可以了。

Ozone的核心设计



Ozone的架构设计可能是更多人所关系的,它是否与业界目前主流的对象存储概念吻合呢?关于这一点,笔者在去年的时候已经写过一篇文章(HDFS对象存储–Ozone架构设计)介绍过HDFS Ozone的一些设计细节了,感兴趣的读者可阅读此文章。

笔者之前曾经学习过AWS的S3存储和阿里云OSS的使用方式,大体上来说,许多概念在定义上是一致的。比如说下面这个共同点:

用户通过创建自身的bucket(桶),在此bucket下存入用户的文件数据,这些文件数据在逻辑层面就是此bucket下的一个个object对象。每个对象对应于一个key。而这个key也是用户在存入数据是指定的,当然,如果我们保证后面文件名一定不会重复的话,我们可以直接拿文件名称作为key值。

笔者去年写的文章是Ozone的初始版本,近期社区给出了一个更新版本,在原先的基础上做了很多地方的改进。所以笔者打算重新拿出来聊聊。

Ozone面向用户的使用方式



首先我们要理解Ozone中涉及对象存储的概念定义,用一个简单的结构图表示如下:

              VolumeA
                |
              BucketA
    |                       |
ObjectA1(keyA1)    ObjectA2(keyA2)

没错,就是上面看到的volume->bucket->object这样的3级结构。用户如果想要在HDFS Ozone上存入文件数据,简单的可以概括为如下步骤:

  • 1.创建一个新的volume
  • 2.创建一个新的bucket
  • 3.往刚刚创建的bucket中执行一个put key的操作,put key操作的时候,key由自身指定,伴随一个需要存入的本地文件的路径。此文件即为待存入的对象数据。

以上操作在HDFS内部对应的通信方式都是走http请求的。所以看到这里,如果大家已经使用过业界已有的企业级对象存储服务,将几乎不需要花额外的时间去学习Ozone的用法。

Ozone中的底层设计:Container



前面讨论了很多bucket,volume的概念,那么这些概念对应存储在哪里呢?还有我们如何保证所存入对象的高可用呢?答案是Container。Container帮助我们解决了上面提到的2个问题。

首先第一个问题,bucket,volume这些概念对象本身不会被存入Container,因为bucket,volume这些概念是针对用户而言的,而在HDFS内部,它的作用仅仅只有一个:组成一个unique的key,然后使得HDFS能找到它所对应的对象数据。所以Container作为Ozone中的一个基本存储单元,它只包含2大类信息,一个是key,一个是文件对象。key由bucket、volume名称拼装而成,而文件对象由其内部的ChunkInfo信息所维护。下图是Container的内部结构图:

Ozone Container内部结构

在这里,我们可以理解Container是一个大的对象池,用户对应的数据,将会以key-data的形式往里进行put。

第二个问题,数据的容错性。Container是Ozone中的基本数据单元,类似于HDFS中的block的概念。所以Ozone将block拥有的一些机制再度应用到了Container的身上,比如说写数据的时候Container也是基于Pipeline的方式的(但是这个Pipeline在实现上是不同于DataNode的Pipeline的),同样它也有自己的副本对象。Container对象作为一个存储单元,可以被看作是各个DatraNode上的一个资源容器。用户要存入数据的时候,需要从DataNode中寻找到相应的Container,然后将数据存入。这里就牵扯到了Ozone内部调用过程的内容了。

Ozone的原理过程



Ozone的调用过程可以理解为是一个寻找Container的过程。中间过程中,需要向2大服务KSM、SCM进行Container的定位和获取。前者负责提供Container的位置,然后后者负责返回Container对象。(但是目前代码中这2个功能都耦合在了SCM上面)。社区将其分离化的一个主要目的是为了方便后续的扩展。

对应上面的描述,流程图如下所示:

Ozone请求调用过程

上面只是局部的过程,下面为全链路的过程:

Ozone内部调用过程

以上就是笔者想要介绍Ozone相关的内容,希望能够带给大家对于Ozone更多的了解。

参考资料



[1].Object store in HDFS, https://issues.apache.org/jira/browse/HDFS-7240

[2].Ozonedesignupdate, https://issues.apache.org/jira/secure/attachment/12806271/Ozonedesignupdate.pdf

时间: 2024-10-08 09:45:17

HDFS的新方向:Ozone对象存储的相关文章

【巨杉数据库SequoiaDB】巨杉?具系列之一 | ?对象存储?具sdblobtool

近期,巨杉数据库正式推出了完整的SequoiaDB 工具包,作为辅助工具,更好地帮助大家使用和运维管理分布式数据库.为此,巨杉技术社区还将持续推出工具系列文章,帮助大家了解巨杉数据库丰富的工具矩阵. 本文作为系列第一篇,将分享巨杉数据库大数据存储工具 sdblobtool 的基本介绍和应用实践.巨杉工具矩阵 一.对象存储与自建存储对比通俗地讲,自建存储就是自己购买服务器设备存储文件,通过运维人员手工进行文件的上传下载.而对象存储,则是使用不同的存储形态来存储文件.目前,对象存储独立的存储形态有三

对象存储,未来存储新潮流

大家众说纷“云”,其中,云存储已经成为业界最为火热的概念之一.大数据时代,没有存储或存储技术,一切都将成为“浮云”! 对象存储本身是一种与传统完全不同的解决方案,类似于当前正在兴起的软件定义存储趋势.客户会利用服务器——多数情况下为商用服务器——来实现存储功能,而供应商必须理解并接受这一点.因此对于硬件供应商来说,他们需要做的不再是单纯依靠存储业务部门销售阵列或者文件存储设备,而是再加深入地推动服务器业务升级.这给新兴的软件定义存储厂商留下了很大的想象空间. 事实上,对象存储与块存储.文件存储,

《转》OpenStack对象存储——Swift

OpenStack Object Storage(Swift)是OpenStack开源云计算项目的子项目之一,被称为对象存储,提供了强大的扩展性.冗余和持久性.本文将从架构.原理和实践等几方面讲述Swift. Swift并不是文件系统或者实时的数据存储系统,它称为对象存储,用于永久类型的静态数据的长期存储,这些数据可以检索.调整,必要时进行更新.最适合存储的数据类型的例子是虚拟机镜像.图片存储.邮件存储和存档备份.因为没有中心单元或主控结点,Swift提供了更强的扩展性.冗余和持久性.Swift

杉岩数据:对象存储是企业海量非结构化数据存储的最佳选择

海量数据的爆炸式增长,使存储技术近五年的发展速度远超过去n年的发展历程.C端用户一个明显的感觉就是:U盘存储容量从过去物以稀为贵的几十M迅速发展到今天几十G.甚至TB级,家用电脑硬盘容量更是TB级标配. 那么,企业级又迎来了怎样的变化? IDC数据显示,到2020年,企业数据总体将达到44ZB,其中80%的数据将会是非结构化数据(图片.视频.归档以及企业级备份等各种数据).显然,海量数据的产生正在促使企业级存储从需求到产品形态都发生了改变. "相对于NAS.SAN这种传统企业级存储解决方案,对象

海量非结构化数据存储难题 ,杉岩数据对象存储完美解决

"过去几年,大数据产业更多关注的是如何处理海量.多源和异构的数据,但我们必须承认这些只是冰山一角.目前,结构化数据仅占到全部数据量的20%,其余80%都是以文件形式存在的非结构化和半结构化数据.伴随非结构化数据呈现爆发之势,对象存储市场近两年保持强劲增长,IDC预计,软件定义存储(SDS)市场未来五年复合增长率将达到28.8%." 传统IT架构渐成"过去式" 非结构化数据倒逼存储变革 今天,许多企业已经意识到,结构化数据仅仅是企业所拥有数据的一小部分.与业务信息系统

杉岩海量对象存储(SandStone MOS)V5.4版本发布,新增/优化多项功能

作为一家专注于产品自主研发的企业级存储厂商,杉岩数据始终坚持以客户需求为导向,持续完善存储产品及解决方案,通过版本迭代不断丰富产品特性,不断提升产品竞争力.杉岩海量对象存储(SandStone MOS)是面向企业级海量非结构化数据的分布式对象存储产品,经过长时间的产品打磨,SandStone MOS的功能特性越来越完善,与应用场景的融合越来越深入,并在应用实践中持续赢得客户的信赖. 为了进一步满足能源.金融.医疗等行业客户的需求,SandStone MOS的新版本针对客户关注的问题进一步完善了功

腾讯对象存储服务COS加密签名上传文件与下载文件的剖析,福利提供给所有使用Android的小伙伴们!

在做一些用户需求的时候,公司往往需要工程师采集到更多有用的关于用户的个人信息,然后对用户群进行分析,今天我不是来分析这些的,今天我主要是说 腾讯推出的款云产品,那就是对象存储服务COS,这个产品面向所有开发者,新用户都有免费享有10G的使用权,10G可能对于做方案的工程师来说可能是微不 足道的,比如后视镜和车载方案,会常常需要用到视频的存储与云分享,当然这里不是只本地存储哦,我指的是用户在使用方案商的方案的时候,比如他开车 的时候录了一段视频需要分享到某个域,共享给大家看,比如微信,这时候他肯定

FreeNAS 11.0 正式发布,提供 S3 兼容的对象存储服务

FreeNAS 11.0 正式版已发布,该版本带来了新的虚拟化和对象存储功能.FreeNAS 11.0 将 bhyve 虚拟机添加到其受欢迎的 SAN / NAS.Jail 和插件中,让用户可以在 FreeNAS box 上使用 host web-scale VMs.它提供 S3 兼容的对象存储服务,可将 FreeNAS box 变成 S3 兼容的服务器,不用再依赖云端.点击此处查看 FreeNAS 11.0 的新功能 FreeNAS 11.0 基于 FreeBSD 11-STABLE ,它增加

对象存储、快存储、文件存储的区别

分布式存储的应用场景相对于其存储接口,现在流行分为三种: 对象存储: 也就是通常意义的键值存储,其接口就是简单的GET.PUT.DEL和其他扩展,如七牛.又拍.Swift.S3 块存储: 这种接口通常以QEMU Driver或者Kernel Module的方式存在,这种接口需要实现Linux的Block Device的接口或者QEMU提供的Block Driver接口,如Sheepdog,AWS的EBS,青云的云硬盘和阿里云的盘古系统,还有Ceph的RBD(RBD是Ceph面向块存储的接口) 文