基于hadoop构建对象存储系统_Apache Hadoop对象存储系统OZone概览

OZone背景及定位

OZone是当前Apache Hadoop生态圈的一款新的对象存储系统,可用于小文件和大文件存储,设计的目的是为了填充社区在对象存储方面的不足,同时能够提供百亿甚至千亿级文件规模的存储。

OZone与HDFS有着很深的关系,在设计上也对HDFS存在的不足做了很多改进,使用HDFS的生态系统可以无缝切换到OZone。

OZone架构

OZone无论从设计上还是实现上都从HDFS继承了很多,在架构上继续保持HDFS的中心化架构、机架感知等策略,实现上也从HDFS的DataNode继承很多。

上篇文章总结了HDFS的设计实现,它的主要不足在扩展性。关于这方面的改进社区也有不少PR,OZone其实也是社区对HDFS扩展性不足的一个改进方案,从另一方面来说OZone也是一个单独的对象存储系统,提供了与HDFS相同的接口和相应的对象接口。

OZone架构相比较HDFS架构而言有几个比较大的变化:拆分namespace和BlockManager,将元数据管理分成两个单独服务。

DataNode管理由原来的基于Block为单位改为以Container为单位,一个Container管理多个Block,Container使用raft协议进行副本间数据复制和一致性保证。

DataNode的单机存储改为RocksDB KV引擎。

文件不能修改也不能append,只能添加和删除,这个主要是对象存储的接口需求。

OZone Manager和SCM的HA将作为一个内置的功能,基于Ratis。

ozone架构如下[4]:

关于为什么将OZone设计为一个对象存储系统,官方回答如下:Object stores are more straightforward to build and use than standard file systems. It is also easier to scale an object store. The fact that most big data applications and frameworks like Apache Spark, YARN and Hive can run both on cloud and on-prem, makes having an object store on-prem very attractive.

OZone设计

我觉得OZone架构上相对于HDFS的变化主要在于container和SCM的引入。container

在OZone中container是DataNode管理的基本单元,container内部自治。HDFS中DataNode管理Block,副本复制也是以Block为单位,在OZone中一个container管理多个Block,且副本复制单元也是以container为单位。这个层面引入对于减少Block相关的元数据量有很大优势,HDFS中每个Block需要维护其与3个DataNode节点之间的映射关系,而在OZone中只需要维护Block到Container的映射和Container到DataNode节点的映射关系即可。一个container管理的Block越多,对应元数据量就越少。但是并不是管理的Block越多越好,一方面因为一个container在DataNode节点宕机的时候需要复制到其他DataNode,如果极端场景下一个DataNode的资源全部由一个container管理,那么这个复制流程会非常慢,无法利用网络的并发能力,另一方面因为container的复制和落盘等操作都是走raft等共识算法,在落盘的时候会有串行落盘保证IO order,一个container管理的Block越多,那么这个DataNode上的并发写盘的粒度就越小,对性能不够友好。

container其实就是一个raft group,通过raft来实现数据读写的线性一致性,同时,基于raft实现DataNode的auto failover。OZone的raft实现时基于Apache开源的ratis。

OZone引入的container也与当前很多流行的开源存储系统很类似,通过类paxos的共识算法管理底层一小块资源(partition)。

container之间的调度均衡由外部实现,container内部只负责数据复制以及DataNode failover。container支持split,主要是为了当一个Bucket大小超过container时能够通过key range进行分裂,这点与tikv的split不同,tikv的分裂主要目的是为了拆分热点。

Storage Container Manager

SCM作为一个单独的元数据存储服务,保存container和DataNode节点的映射关系等元信息。SCM管理和分配container,为raft group增加节点等。

与HDFS的NameNode相比,OZone将namespace和Blockmap拆分出OZone Manager和SCM,将元数据分层便于扩展。如下图[5]:

目前OZone还处于不断迭代过程中,作为Apache Hadoop社区的一款新的对象存储系统凭借当前Hadoop生态系统的先天优势应该会在大数据应用场景中充分绽放异彩。

reference:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值