HDFS Ozone整体概述

前言


HDFS Ozone对象存储最近会有一个大动作:merge到主代码分支。这就动作具有十分大的意义,因为它意味着Ozone将在下一个最近发布的hadoop版本中出现并可以被广大用户所使用。所以在这个背景下,Ozone第一版本的代码和结构基本已经确定完毕,这个时候,我们再从大的层面来学习、了解这个框架、体系显然还是很有必要的。官方社区已经有许多相应的介绍文档在介绍这方面的内容了。笔者也大致阅读了一下,来简单概述其中一些要点。

Ozone高层设计


首先要明白Ozone是用来干什么的:

基于Apache Hadoop之上用来做亿万数量级对象存储的。

Ozone第一版本内部的架构图如下所示:


下面,笔者依次从上到下介绍其中相关的组件。

Ozone Client


Ozone client客户端在Ozone内部是一个对外部开放使用的模块,比如说Ozone相关的shell命令会触发到ozone client,这就是图中显示的Ozone Cli。

再来说说图中左上角的Rest Handler。这是什么意思呢?Ozone client能够支持2种方式的通信:RPC方式和Restful接口的方式。其中能做到一键切换。

Corona是Ozone内部的性能测试工具,它的原理是利用Ozone客户端接口来做一些benchmark。它可以分为2种模式:online和offline模式。

offline模式:开若干线程创建指定数量级别的随机命名的volume/bucket/key。以此达到在拥有大量key的效果。
online模式:连接一个公开的地址,通过网络爬取的方式下载文件,put到Ozone上。

Ozone文件系统:OzoneFileSysyem


Ozone为了兼容其它框架体系,根据自身独特的数据特点,实现了文件系统接口,称为OzoneFileSystem。这样的话,用户可以以通用的方式来使用Ozone内部的文件对象。在程序上无需做兼容性的改动。

Key Space Manager


Key Space Manager(KSM)负责管理的是Ozone命名空间。所有的volume,bucket、key的记录信息都保存在了KSM中。此角色类似于HDFS的NameNode。KSM与SCM交互通性,然后Ozone client写学数据到最终的block上。最终通过Apache Ratis来实现多副本机制,以此保证HA。

Storage Container Manager


Storage Container Manager(SCM)负责管理“Container”对象,Container在逻辑上存储的是block块对象集合。DataNode是以Container的形式来提供存储能力。

在SCM内部提供了以下抽象的概念:


下面是具体角色介绍:

  • Block: block数据块对象,真实存储数据的对象,可以拥有多个副本块。
  • Container:Block块集合。
  • Pipeline:SCM允许2种Pipeline方式实现多副本:单副本的Standaline模式和多副本的Ratis方式。
  • Pool:一组特定的数据节点称为一个pool。将节点按pool分组是为了方便日常的维护升级操作,也是为了扩展性的考虑。
  • Node:物理存储数据的地方。

参考资料


1.Ozone: Documentation: Add Ozone overview documentation. https://issues.apache.org/jira/secure/attachment/12889871/HDFS-12551-HDFS-7240.004.patch

posted @ 2020-01-12 19:08  回眸,境界  阅读(156)  评论(0编辑  收藏  举报