前面几篇文章把Hadoop常用的模块都学习了,剩下一个新模块Ozone,截止到今天最新版本是0.5.0Beta,还没出正式版。好在官方网站有文档,还是中文版的,但是中文版资料没有翻译完整,我试着把它都翻译一下。参考 《Apache Hadoop Ozone》

什么是Ozone

Ozone 是 Hadoop 的分布式对象存储系统,具有易扩展和冗余存储的特点。

Ozone 不仅能存储数十亿个不同大小的对象,还支持在容器化环境(比如 Kubernetes)中运行。

Apache Spark、Hive 和 YARN 等应用无需任何修改即可使用 Ozone。Ozone 提供了 Java API、S3 接口和命令行接口,极大地方便了 Ozone 在不同应用场景下的的使用。

Ozone 的管理由卷、桶和键组成:

  • 卷的概念和用户账号类似,只有管理员可以创建和删除卷。
  • 桶的概念和目录类似,用户可以在自己的卷下创建任意数量的桶,每个桶可以包含任意数量的键,但是不可以包含其它的桶。
  • 键的概念和文件类似,用户通过键来读写数据。

Ozone架构

Ozone 是一个分布式、多副本的对象存储系统,并针对大数据场景进行了专门的优化。Ozone 主要围绕可扩展性进行设计,目标是十亿数量级以上的对象存储。

Ozone 通过对命名空间与块空间的管理进行分离,大大增加了其可扩展性,其中命名空间由 Ozone Manager (OM)管理,块空间由 Storage Container Manager(SCM)管理。

Ozone 的管理由卷、桶和键组成。卷类似于个人主目录,只有管理员可以创建。

卷用来存储桶,用户可以在一个卷中创建任意数量的桶,桶中包含键,在 Ozone 中通过键来存储数据。

Ozone 的命名空间由存储卷组成,同时存储卷也用作存储账户管理。

下面的框图展示了 Ozone 的核心组件:

Ozone Manager 管理命名空间,Storage Container Manager 管理底层的数据,而 Recon 是 Ozone 的管理接口。

Ozone Manager

Ozone Manager(OM)管理 Ozone 的命名空间。

当向 Ozone 写入数据时,你需要向 OM 请求一个块,OM 会返回一个块并记录下相关信息。当你想要读取那个文件时,你也需要先通过 OM 获取那个块的地址。

OM 允许用户在卷和桶下管理键,卷和桶都是命名空间的一部分,也由 OM 管理。

每个卷都是 OM 下的一个独立命名空间的根,这一点和 HDFS 不同,HDFS 提供的是单个根目录的文件系统。

与 HDFS 中单根的树状结构相比,Ozone 的命名空间是卷的集合,或者可以看作是个森林,因此可以非常容易地部署多个 OM 来进行扩展。

Ozone Manager 元数据

OM 维护了卷、桶和键的列表。它为每个用户维护卷的列表,为每个卷维护桶的列表,为每个桶维护键的列表。

OM 使用 Apache Ratis(Raft 协议的一种实现)来复制 OM 的状态,这为 Ozone 提供了高可用性保证。

Ozone Manager 和 Storage Container Manager

为了方便理解 OM 和 SCM 之间的关系,我们来看看写入键和读取键的过程。

写入键

  • 为了向 Ozone 中的某个卷下的某个桶的某个键写入数据,用户需要先向 OM 发起写请求,OM 会判断该用户是否有权限写入该键,如果权限许可,OM 分配一个块用于 Ozone 客户端数据写入。

  • OM 通过 SCM 请求分配一个块(SCM 是数据节点的管理者),SCM 选择三个数据节点,分配新块并向 OM 返回块标识。

  • OM 在自己的元数据中记录下块的信息,然后将块和块 token(带有向该块写数据的授权)返回给用户。

  • 用户使用块 token 证明自己有权限向该块写入数据,并向对应的数据节点写入数据。

  • 数据写入完成后,用户会更新该块在 OM 中的信息。

读取键

  • 键读取相对比较简单,用户首先向 OM 请求该键的块列表。

  • OM 返回块列表以及对应的块 token。

  • 用户连接数据节点,出示块 token,然后读取键数据。

Storage Container Manager

SCM提供了支持Ozone集群的多个关键函数。它提供了集群管理、认证授权、块管理、多副本管理多种功能。

集群管理

SCM负责创建Ozone集群。当通过初始化命令启动SCM的时候,SCM会创建认证授权需要的集群ID和根证书。SCM管理数据节点在集群中的完整生命周期。

认证授权(CA)

SCM的认证中心负责给集群中的每一个服务分发身份证书,底层的证书服务能够更容易地实现网络层的双向认证和基于认证的块令牌服务。

块管理

SCM向数据节点分配块,客户端可以直接读写这些块。

多副本管理

SCM掌握着块副本的实时信息。如果发生块丢失,SCM会向数据节点发指令,让它们复制一个块副本来保证高可用。

Datanodes

Ozone跟HDFS的命名都如此相似。

Ozone所有的数据都存放在数据节点上。客户端以块的形式写入数据,数据节点把这些块聚合起来放入存储容器中。一个存储容器包含了数据流和客户端写入块的元数据信息。

存储容器

一个存储容器是一个独立的超级块,它包含两部分内容:一部分是块清单,另一部分是保存着实际数据流的磁盘文件。上图是存储容器的默认格式。

从Ozone的角度来看,容器是一个协议规范,实际的存储层反而无关紧要。换句话说,是继承还是使用一个新的存储层都是可以的。只要是基于Ozone的容器实现就行。

Qzone的块和容器

当客户端需要读取一个键值的时候,它会向Qzone Manager发请求,Qzone Manager返回这个键对应的块清单。

一个块包含容器ID和本地ID。下图显示了Ozone块的结构。

容器ID让客户端能够找到容器的位置。一个容器到底在哪儿,SCM里的信息是最权威的。大多数情况下,Qzone Manager会把容器的位置缓存起来,随着块信息一起返回给客户端。

客户端获取到返回信息之后,它就知道容器在哪个数据节点上。客户端建立起与数据节点的连接,根据容器ID和本地ID来读取数据流。也就是说,本地ID是容器里的索引信息,它描述了我们要读取的数据流。

容器定位

SCM怎么知道容器在哪儿呢?这个过程跟HDFS类似。数据节点定期发送容器信息,就像HDFS发送块信息给NameNode一样。只不过容器信息比块信息要简单的多。举个例子,一个包含196TB数据的Ozone大约有4万个容器。相比之下,HDFS的block会达到上百万个,至少有一半的block会发送信息。Qzone发送的块信息减少了40倍。

这有助于Ozone的扩展性管理。SCM需要处理的块数据要少得多,与NameNode的类型不同,这对Ozone的扩展性很重要。

大数据学习(06)——Ozone介绍的更多相关文章

  1. 大数据学习系列之四 ----- Hadoop+Hive环境搭建图文详解(单机)

    引言 在大数据学习系列之一 ----- Hadoop环境搭建(单机) 成功的搭建了Hadoop的环境,在大数据学习系列之二 ----- HBase环境搭建(单机)成功搭建了HBase的环境以及相关使用 ...

  2. 大数据学习系列之五 ----- Hive整合HBase图文详解

    引言 在上一篇 大数据学习系列之四 ----- Hadoop+Hive环境搭建图文详解(单机) 和之前的大数据学习系列之二 ----- HBase环境搭建(单机) 中成功搭建了Hive和HBase的环 ...

  3. 大数据学习系列之六 ----- Hadoop+Spark环境搭建

    引言 在上一篇中 大数据学习系列之五 ----- Hive整合HBase图文详解 : http://www.panchengming.com/2017/12/18/pancm62/ 中使用Hive整合 ...

  4. 大数据学习系列之九---- Hive整合Spark和HBase以及相关测试

    前言 在之前的大数据学习系列之七 ----- Hadoop+Spark+Zookeeper+HBase+Hive集群搭建 中介绍了集群的环境搭建,但是在使用hive进行数据查询的时候会非常的慢,因为h ...

  5. 大数据学习之Linux基础01

    大数据学习之Linux基础 01:Linux简介 linux是一种自由和开放源代码的类UNIX操作系统.该操作系统的内核由林纳斯·托瓦兹 在1991年10月5日首次发布.,在加上用户空间的应用程序之后 ...

  6. 大数据学习(一) | 初识 Hadoop

    作者: seriouszyx 首发地址:https://seriouszyx.top/ 代码均可在 Github 上找到(求Star) 最近想要了解一些前沿技术,不能一门心思眼中只有 web,因为我目 ...

  7. 大数据学习笔记——Linux完整部署篇(实操部分)

    Linux环境搭建完整操作流程(包含mysql的安装步骤) 从现在开始,就正式进入到大数据学习的前置工作了,即Linux的学习以及安装,作为运行大数据框架的基础环境,Linux操作系统的重要性自然不言 ...

  8. 大数据学习(16)—— HBase环境搭建和基本操作

    部署规划 HBase全称叫Hadoop Database,它的数据存储在HDFS上.我们的实验环境依然基于上个主题Hive的配置,参考大数据学习(11)-- Hive元数据服务模式搭建. 在此基础上, ...

  9. 大数据学习day31------spark11-------1. Redis的安装和启动,2 redis客户端 3.Redis的数据类型 4. kafka(安装和常用命令)5.kafka java客户端

    1. Redis Redis是目前一个非常优秀的key-value存储系统(内存的NoSQL数据库).和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list ...

  10. 大数据学习系列之七 ----- Hadoop+Spark+Zookeeper+HBase+Hive集群搭建 图文详解

    引言 在之前的大数据学习系列中,搭建了Hadoop+Spark+HBase+Hive 环境以及一些测试.其实要说的话,我开始学习大数据的时候,搭建的就是集群,并不是单机模式和伪分布式.至于为什么先写单 ...

随机推荐

  1. noConflict冲突处理机制

    最近接手了一个古早项目,用的backbone,于是正好学习一下早期MVC框架的源码. 这篇主要写冲突处理机制,源码其实就一个函数,代码也很短.原理也很好理解,总结起来就是:每执行一次noConflic ...

  2. text-decoration属性作用和方法

    text-decoration-line(注释文本添加一条装饰线):none(文本中没有线条). underline(文本的下方显示一条线). overline(文本的上方将显示一条线). line- ...

  3. 尝鲜一试,Azure静态网站应用服务(Azure Static Web Apps) 免费预览,协同Github自动发布静态SPA

    背景 最近在浏览微软的文档的时候发现,微软喜欢用Hugo这个文档框架,有些技术产品的文档页面就用Hugo来做的,同时搭配Github + Azure Static Web Apps Service这个 ...

  4. ECS实例中的应用偶尔出现丢包现象并且内核日志(dmesg)存在“kernel: nf_conntrack: table full, dropping packet”的报错信息

    问题描述 连接ECS实例中的应用时偶尔出现丢包现象.经排查,ECS实例的外围网络正常,但内核日志(dmesg)中存在"kernel: nf_conntrack: table full, dr ...

  5. 移动端touch、click、tap的区别

    一.click 与tap比较 click与tap都会出发点击事件,但是在手机web端,click会有200-300ms延迟,所以一般用tap(轻击)代替click作为点击事件.singleTap 和 ...

  6. 组建Redis集群遇到`GLIBC_2.14' not found和ps -ef 不显示用户名

    RHEL6.9组建Redis sentinel集群遇到两个问题 今天在组件Redis sentinel 集群时,遇到两个问题,之前已经组建多次,都没碰到类似问题,在解决这两个问题时,耗费些时间. 问题 ...

  7. Machine Schedule 赤裸裸的二分匹配 二部图中的点覆盖书==匹配数

    Machine Schedule 1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 ...

  8. CentOS-Docker搭建Rancher(单点)

    参考官方安装说明 服务器准备 节点服务器的硬件配置,可根据实际情况依据该表自行选择. 规模集群节点CPU内存 小 最多5个 高达50 2 8 GB 中 最多15个 最多200 4 16 GB 大 高达 ...

  9. python使用笔记28--unittest单元测试框架

    单元测试:开发程序的人自己测试自己的代码 unittest自动化测试框架 1.单元测试 unittest框架,执行的顺序是按照方法名的字母来排序的 setUpClass方法是最开始执行的 tearDo ...

  10. Outlook配置163邮箱

    一.在163邮箱设置处设置POP3/SMTP/IMAP 二.开启客户端授权码 三.打开Outlook,选择手动设置 选择POP/IMAP 密码是上文中的授权码 点击其它设置,勾选以下选项 点击完成即可