当前位置: 首页 > news >正文

分布式对象存储——Apache Hadoop Ozone

前言

本文隶属于专栏《大数据技术体系》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢!

本专栏目录结构和参考文献请见大数据技术体系


1. 概述

在这里插入图片描述

Ozone是Apache Hadoop项目的子项目,是一个基于对象存储的分布式文件系统。其主要目标是提供一个高可用性、可扩展性和高性能的存储解决方案,支持大数据分析和处理应用。

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

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

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

Ozone 的核心架构是基于容器化的存储单元,每个存储单元被称为Bucket。Bucket 是一个由多个对象组成的存储单元,对象的大小和数量可以根据需要进行配置。在 Ozone 中,对象是基于 Key-Value 对的,Key 是一个唯一标识符,Value 是数据的实际内容。每个 Bucket 都有一个唯一的名称,并且可以跨多个节点进行复制,以实现高可用性和容错性。

Ozone 提供了一个类似于 POSIX 的文件系统接口,以方便应用程序进行文件读写操作。在 Ozone 中,文件被存储在多个 Bucket 中,并且可以根据需要进行复制或迁移。Ozone 还提供了访问控制和安全性功能,例如基于角色的访问控制和加密功能。


2. 背景

Ozone 的诞生背景可以追溯到 Hadoop 2.x 版本中的 HDFS(Hadoop Distributed File System),HDFS 是 Hadoop 生态系统中的一个重要组件,提供了一个高可用性、可扩展性和可靠性的分布式文件系统,支持大数据处理和存储应用。

然而,随着大数据处理应用的不断发展和扩展,HDFS 也暴露出一些限制和不足,例如无法支持海量小文件的处理、容量受限缺乏灵活性等等。因此,需要一种更加高效、灵活、可扩展的文件系统来满足不断增长的数据存储和处理需求。

在这样的背景下,Apache Hadoop 社区推出了 Ozone 项目,旨在提供一种新的分布式文件系统,它基于对象存储和容器化的存储单元设计,可以解决 HDFS 存在的一些问题,并提供更高的可靠性、可扩展性和性能。同时,Ozone 还提供了类似于 POSIX 的文件系统接口和访问控制/安全性功能,可以方便地与现有应用程序和系统集成。

因此,引入 Ozone 可以帮助解决现有分布式文件系统的一些限制和挑战,并为大数据存储和处理应用提供更加高效、灵活、可靠的解决方案。


3. 架构

在这里插入图片描述

OZone 采用了分层架构,其中最下面一层是存储,中间层是命名空间管理和元数据存储,最上面一层是提供对象存储服务的 API。

  • 存储层:OZone 使用 HDFS 或 Ceph 作为其底层存储。每个 OZone 存储节点都会管理一个或多个 HDFS 或 Ceph 数据存储卷,并提供对象读写、删除等接口。为了实现高可用性,OZone 采用了 HDFS 的 NameNode 或 Ceph 的 RGW 的高可用解决方案。
  • 中间层:OZone 的中间层包括了命名空间管理和元数据存储。命名空间管理用于在存储层的对象之间提供有意义的层次结构,方便用户管理和查找对象。OZone 中的命名空间类似于文件系统中的目录。元数据存储则是用于存储所有对象的元数据,包括对象大小、创建时间、访问时间等信息。
  • API 层:OZone 的 API 层提供了一组 RESTful API,用于访问和管理对象存储服务。用户可以使用这些 API 来上传、下载、删除、查询对象等操作。

4. 特点

OZone 具有以下特点:

  • 高可用性:OZone 使用 HDFS 或 Ceph 作为底层存储,具有高可用性。同时,OZone 还采用了分布式存储和多副本备份等技术,确保了数据的可靠性和持久性。
  • 可扩展性:OZone 可以水平扩展,通过添加更多的存储节点来扩大存储容量和吞吐量。此外,OZone 还支持数据分区和负载均衡,可以自动将数据分散到不同的存储节点上,提高系统的并发处理能力。
  • 高性能:OZone 的设计旨在提高对象存储的性能。它使用了多线程和缓存等技术,以最小化对象存储和检索的延迟。此外,OZone 还支持对象存储的复制和移动等高级功能,可以加速数据迁移和备份等操作。
  • 安全性:OZone 支持多种身份验证和授权机制,如基于 Kerberos 的身份验证、ACL 和 RBAC 等。这些机制可以帮助用户保护其数据免受未经授权的访问。

5. 使用场景

OZone 可以用于以下场景:

  • 大规模数据存储:OZone 可以扩展到 PB 级别的数据存储,适用于大型数据中心和云环境的数据存储需求。
  • 高可靠性存储:OZone 使用 HDFS 或 Ceph 作为底层存储,具有高可用性和数据持久性,适用于对数据可靠性要求较高的场景。
  • 多租户数据存储:OZone 支持多租户,可以将不同的租户数据隔离开来,保证数据的安全性和隐私性。
  • 对象存储服务提供商:OZone 可以作为对象存储服务提供商的基础设施,提供对象存储服务给客户端,同时支持多租户和安全性等功能。

6. 总结

OZone 是一个开源、分布式的对象存储系统,采用分层架构、高可用性、可扩展性、高性能和安全性等特点,适用于大规模数据存储、高可靠性存储、多租户数据存储和对象存储服务提供商等场景。

相关文章:

分布式对象存储——Apache Hadoop Ozone

前言 本文隶属于专栏《大数据技术体系》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢! 本专栏目录结构和参考文献请见大数据技术体系 1. 概述 Ozone是Apache Hadoop项目的子项目&#xf…...

Linux 和数据库笔记-03

今天主要内容数据库相关介绍数据库(软件)常见类型Navicat 工具基本使用常见的数据类型和约束(重点)SQL 语句的编写(表和数据)一. 数据库是什么?为什么学习数据库软件中产生的所有数据, 最终都要存储于数据库当中测试人员如果想要进行数据查询/数据校验, 就必须掌握对数据库的基…...

布尔定律---布尔代数的基本定律

一、单变量布尔定律 1、0-1定律 2、互补定律 3、重叠定律 4、还原定律 小结:或运算和与运算定律的差别在于:所有的“|”运算符换成“&”,运算结果为 0 换成 1。这就是对偶定律。它不仅是单逻辑变量的定律,而且对于所有布尔定…...

OSG三维渲染引擎编程学习之七十五:“第七章:OSG场景图形交互” 之 “7.6 多视图”

目录 第七章 OSG场景图形交互 7.6 多视图 7.6.1 多视图描述 7.6.2 多视图相机示例 第七章 OSG场景图形交互 作为一个成熟的三维渲染引擎,需...

【计算机】单位制前缀的歧义-KB、kb、MB混用

引言 经常遇到容量、带宽的单位,MB,GB在进行单位换算时,总是傻傻分不清,查些资料浅记录一下。 公制(metric system) 又译米制,是一个国际化十进位量度系统。法国在1799年开始使用公制&#xf…...

nodejs调用浏览器打开URL链接

本文主要介绍的是node.js调用Chrome浏览器/默认浏览器打开链接地址的相关内容,分享出来供大家参考学习,下面来一起看看详细的介绍: 安装第三方插件open 通过open模块,可以在任何平台上打开某个浏览器网址。 通过NPM安装 npm i…...

ARM uboot 的移植2-从三星官方 uboot 开始移植

一、inand 驱动问题的解决 1、先从现象出发定位问题 (1) 解决问题的第一步,是定位问题。所谓定位问题,就是找到源代码当中导致这个问题的那一句或者那几句代码。有时候解决这个问题需要修改的代码和直接导致这个问题的代码是不同的。我们这里说的定位问…...

js作用域和作用域链

1、局部作用域分为函数作用域和块作用域 1.1、函数作用域: 在函数内部声明的变量只能在函数内部被访问,外部无法直接访问。 总结 1.函数内部声明的变量,在函数外部无法被访问 2.函数的参数也是函数内部的局部变量 3.不同函数内部声明的变量无法互相访…...

C语言字符串

目录 一、字符串的引入和注意事项 1.1 字符串定义的几种方式: 1.2 定义字符串的方法一和方法二的区别: 1.3 字符串输出的几种方式: 1.3.1 循环下标法遍历输出字符串: 1.3.2 转义字符%s输出字符串: 1.3.3 使用puts函…...

Eureka注册中心快速入门

一、提供者与消费者**服务提供者:**一次业务中,被其他微服务调用的服务。(提供接口给其他微服务)**服务消费者:**一次业务中,调用其他微服务的服务。(调用其它微服务提供的接口)比如…...

xmu 离散数学 卢杨班作业详解【1-3章】

文章目录第一章 命题逻辑常用latex数学公式1.4.5679101113171923242627第二章 一阶逻辑1.2.3.6.9.10.12.13.一阶逻辑推理理论12.13.15.第三章 集合2478101213.第一章 命题逻辑 常用latex数学公式 符号代码∨\vee∨$\vee$∧\wedge∧$\wedge$→\rightarrow→$\rightarrow$⇒\Ri…...

mvn命令

在IDEA右侧Maven菜单中,有以下几种指令。 clean:清理,清除上一次构建生产的文件。执行该命令会删除项目地址下的target文件,但不会删除本地的maven已生成的文件。 validate:验证,验证项目是否正确且所有必…...

JS - 事件循环EventLoop

一、面试题:说一下事件循环(回答思路梳理) 首先 js 是单线程运行的( JS 可以修改 DOM,如果在 JS 执行的时候 UI 线程还在工作,就可能导致不能安全的渲染 UI),在代码执行的时候&…...

【Java基础】30分钟Git 从入门到精通

一、 版本控制工具1、什么是版本控制系统?版本控制系统(Version Control System):是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。版本控制系统不仅可以应用于软件源代码的文本文件,而且可以对…...

0100 MySQL03

1.distinct关键字 把查询结果去除重复记录,原表数据不会被修改,只能出现在字段的最前端 select distinct job from emp; select distinct job,deptno from emp;//表示两个字段联合起来 去重 2.连接查询 从一张表中单独查询,称为单表查询 两张表联合…...

32- PyTorch基础 (PyTorch系列) (深度学习)

知识要点 PyTorch可以说是现阶段主流的深度学习框架 . 1 PyTorch入门 1.1 PyTorch概述 Torch是什么?一个火炬!其实跟Tensorflow中Tensor是一个意思,可以当做是能在GPU中计算的矩阵.,也可以当做是ndarray的GPU版! PyT…...

用gdb.attach()在gdb下断点但没停下的情况及解决办法

在python中,如果导入了pwntools,就可以使用里面的gdb.attach(io)的命令来下断点。 但是这一次鼠鼠遇到了一个情况就是下了断点,但是仍然无法在断点处开始运行,奇奇怪怪。 这是我的攻击脚本 我们运行一下。 可以看到其实已经运行起…...

Linux入门篇-作业(jobs)调度(本质仍然是进程)

简介 之所以叫做作业调度,作业是以shell为单位的,一个shell建立的作业,不会被另外一个shell看到(包 括root),但是仍然可以看到作业对应的进程。①前台进程(front process) 运行在用户…...

vue 监听 取消监听

vue 的 watch 除了可以使用声明式的配置项以外,还可以通过命令式 this.$watch 方法。 如下是我们比较少用的命令式(想要初始只监听一次,必须命令式写法): 监听只运行一次 声明式 export default{data: {showType: fa…...

0103深度优先搜索和单点连通-无向图-数据结构和算法(Java)

文章目录1.1 走迷宫1.2 图的深度优先搜索实现1.3 算法分析及性能1. 4 单点连通性后记1.1 走迷宫 简单的迷宫,如下图1.1-1所示: 探索迷宫而不迷路,我们需要: 选择一条没有标记过的通道,在你走过的路上铺一条绳子&…...

51c自动驾驶~合集58

我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留,CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制(CCA-Attention),…...

Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动

一、前言说明 在2011版本的gb28181协议中,拉取视频流只要求udp方式,从2016开始要求新增支持tcp被动和tcp主动两种方式,udp理论上会丢包的,所以实际使用过程可能会出现画面花屏的情况,而tcp肯定不丢包,起码…...

Python:操作 Excel 折叠

💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...

Java入门学习详细版(一)

大家好,Java 学习是一个系统学习的过程,核心原则就是“理论 实践 坚持”,并且需循序渐进,不可过于着急,本篇文章推出的这份详细入门学习资料将带大家从零基础开始,逐步掌握 Java 的核心概念和编程技能。 …...

用docker来安装部署freeswitch记录

今天刚才测试一个callcenter的项目,所以尝试安装freeswitch 1、使用轩辕镜像 - 中国开发者首选的专业 Docker 镜像加速服务平台 编辑下面/etc/docker/daemon.json文件为 {"registry-mirrors": ["https://docker.xuanyuan.me"] }同时可以进入轩…...

Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)

参考官方文档:https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java(供 Kotlin 使用) 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...

什么是Ansible Jinja2

理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具,可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板,允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板,并通…...

HarmonyOS运动开发:如何用mpchart绘制运动配速图表

##鸿蒙核心技术##运动开发##Sensor Service Kit(传感器服务)# 前言 在运动类应用中,运动数据的可视化是提升用户体验的重要环节。通过直观的图表展示运动过程中的关键数据,如配速、距离、卡路里消耗等,用户可以更清晰…...

【JVM】Java虚拟机(二)——垃圾回收

目录 一、如何判断对象可以回收 (一)引用计数法 (二)可达性分析算法 二、垃圾回收算法 (一)标记清除 (二)标记整理 (三)复制 (四&#xff…...

Windows安装Miniconda

一、下载 https://www.anaconda.com/download/success 二、安装 三、配置镜像源 Anaconda/Miniconda pip 配置清华镜像源_anaconda配置清华源-CSDN博客 四、常用操作命令 Anaconda/Miniconda 基本操作命令_miniconda创建环境命令-CSDN博客...