Apache Ozone 介绍与部署使用(最新版2.0.0)

目录

一、软件介绍

二、软件架构

Ozone Manager(OM)

Storage Container Manager(SCM)

Containers

Datanodes

Storage Containers

Recon

Recon 和 Ozone Manager

Recon 和 Storage Container Manager

三、安装部署

准备环境

1、软件下载

2、上传解压

3、添加系统环境变量

4、修改参数

a、修改ozone-site

b、修改ozone-env

c、创建workers

5、初始化Ozone

a、初始化 SCM 

b、初始化OM(scm需要启动状态)

c、初始化DataNode

6、启动与关闭

7、浏览器验证

a、访问om web

b、访问scm web

c、访问datanode

四、基本应用

一、软件介绍

Apache Ozone 是一个高度可扩展的分布式存储,适用于分析、大数据和云原生应用。Ozone 支持与 S3 兼容的对象 API 以及与 Hadoop 兼容的文件系统实现。它针对高效的对象存储和文件系统操作进行了优化。

它建立在称为 Hadoop 分布式数据存储 (HDDS) 的高可用性、复制块存储层上。

使用 Apache Spark、YARN 和 Hive 等框架的应用程序无需任何修改即可原生运行。

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

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

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

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

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

官网地址:Apache Ozone

官方文档:Documentation for Apache Ozone

二、软件架构

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

Ozone 的管理由卷、桶和键组成。卷类似于个人主目录,只有管理员可以创建。卷用来存储桶,用户可以在一个卷中创建任意数量的桶,桶中包含键,在 Ozone 中通过键来存储数据。

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

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

任何分布式系统都可以从不同角度去观察。一种观察角度是,把 Ozone 看作是在分布式块存储(HDDS)之上加了一个命名空间服务(OM)。

另一种角度是把 Ozone 看作由几个不同的功能层组成:由 OM 和 SCM 组成的元数据管理层;由数据节点以及 SCM 构成的数据存储层;由 Ratis 提供的副本层,用来复制 OM 和 SCM 的元数据以及在修改数据节点上数据时保持数据一致性;Recon 是管理服务器,它负责和其它 Ozone 组件通信,并提供统一的管理 API 和界面。

Ozone Manager(OM)

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

当向 Ozone 写入数据时,你需要向 Ozone Manager 请求一个块,Ozone Manager 会返回这个块并记录下相关信息。当你想要读取那个文件时,你则需要先通过 Ozone Manager 获取那个块的地址。Ozone Manager 还允许用户在卷和桶下组织键,卷和桶都是命名空间的一部分,也由 Ozone Manager 管理。每个卷都是 OM 下一个独立命名空间的根,这一点和 HDFS 不同,HDFS 提供的是单个根目录的文件系统。

Ozone 的命名空间是卷的集合,或者可以看作是相对于 HDFS 单根树状结构的森林。因此,Ozone 可以非常容易地支持部署多个 OM 来进行扩展(待未来开发)。

Storage Container Manager(SCM)

Storage Container Manager (SCM) 是块空间管理的 leader 节点,其主要职责是创建和管理容器,而容器也是 Ozone 的主要复制单元。

主要职责如下:

Storage Container Manager (SCM) 为 Ozone 集群提供了多项关键功能,承担了集群管理器、证书颁发机构、块管理器以及复制管理器的角色。

SCM 负责创建 Ozone 集群。当通过 init 命令启动 SCM 时,SCM 将创建担任证书颁发机构所需的集群 ID 和根证书。同时,SCM 负责管理集群中数据节点的整个生命周期。

  1. SCM 作为块管理器,负责将块分配给相应的数据节点,客户端可以直接读写这些块;

  2. SCM 负责跟踪所有块的副本,当有数据节点或磁盘掉线,SCM 侦测到后,会启动相应的数据节点复制缺失的块,以确保高可用;

  3. SCM 的证书颁发机构 负责为集群中的每个服务颁发身份证书,这种证书架构可以很方便地在网络层启用双向认证(mTLS)。同时,Ozone 的块令牌也依赖于这种证书架构。

Containers

容器是 Ozone/HDDS 的基本复制单元,由 Storage Container Manager (SCM) 服务管理。

容器是可以包含多个块的大型二进制单元:

块作为本地信息,不由 SCM 管理。因此,即使在系统中创建了数十亿个小文件(即创建了数十亿个块),数据节点也仅报告容器的状态,以及复制容器。

当 Ozone Manager 向 SCM 请求分配一个新的块时,SCM 将找到一个合适的容器,并且产生一个包含 容器ID + 本地ID 的块Id,客户端则连接到存储这个容器的数据节点上。而数据节点则能够基于 本地ID 管理这个独立的块。

Datanodes

数据节点是 Ozone 中的 worker,所有的数据都存储在数据节点上,用户以块的方式写数据,数据节点将多个块聚合成一个存储容器,存储容器中包含用户写入的数据块和这些块的元数据。

Storage Containers

Ozone 的存储容器是一个自包含的超级块,容器中包含一系列的 Ozone 块,以及存储实际数据的磁盘文件,这是默认的存储容器格式。对于 Ozone 来说,容器只是提供了一个协议规范,它独立于具体的存储格式实现,换句话说,我们可以很容易扩展或引入新的容器实现格式。因此,上述格式应当被看作是 Ozone 存储容器的参考实现。

Recon

Recon 充当 Ozone 的管理和监视控制台。它提供了 Ozone 的鸟瞰图,并通过基于 REST 的 API 和丰富的网页用户界面(Web UI)展示了集群的当前状态,从而帮助用户解决任何问题。

在较高的层次上,Recon 收集和汇总来自 Ozone Manager(OM)、Storage Container Manager(SCM)和数据节点(DN)的元数据,并充当中央管理和监视控制台。Ozone 管理员可以使用 Recon 查询系统的当前状态,而不会使 OM 或 SCM 过载。

Recon 维护多个数据库,以支持批处理,更快地查询和持久化聚合信息。它维护 OM DB 和 SCM DB 的本地副本,以及用于持久存储聚合信息的 SQL 数据库。

Recon 还与 Prometheus 集成,提供一个 HTTP 端点来查询 Prometheus 的 Ozone 指标,并在网页用户界面(Web UI)中显示一些关键时间点的指标。

Recon 和 Ozone Manager

Recon 最初从领导者 OM 的 HTTP 端点获取 OM rocks DB 的完整快照,解压缩文件并初始化 RocksDB 以进行本地查询。通过对最后一个应用的序列 ID 的 RPC 调用,定期请求领导者 OM 进行增量更新,从而使数据库保持同步。如果由于某种原因而无法检索增量更新或将其应用于本地数据库,则会再次请求一个完整快照以使本地数据库与 OM DB 保持同步。因此,Recon 可能会显示陈旧的信息,因为本地数据库不会总是同步的。

Recon 和 Storage Container Manager

Recon 还充当数据节点的被动 SCM。在集群中配置 Recon 时,所有数据节点都向 Recon 注册,并像 SCM 一样向 Recon 发送心跳、容器报告、增量容器报告等。Recon 使用它从数据节点得到的所有信息在本地构建自己的 SCM rocks DB 副本。Recon 从不向数据节点发送任何命令作为响应,而只是充当被动 SCM 以更快地查找 SCM 元数据。

三、安装部署

官方参考:Documentation for Apache Ozone

准备环境

自行安装Java8环境

1、软件下载

下载地址:Apache Ozone

2、上传解压

将下载的ozone-2.0.0.tar.gz上传到node11服务器节点/usr/local/soft/路径下,并进行解压

cd /usr/local/soft/
tar -zxvf ozone-2.0.0.tar.gz

3、添加系统环境变量

vim /etc/profile

添加如下内容

export OZONE_HOME=/usr/local/soft/ozone-2.0.0
export PATH=$PATH:$OZONE_HOME/bin
export PATH=$PATH:$OZONE_HOME/sbin
export OZONE_CONF_DIR=$OZONE_HOME/etc/hadoop

source /etc/profile

4、修改参数

a、修改ozone-site
vi /usr/local/soft/ozone-2.0.0/etc/hadoop/ozone-site.xml

内容修改如下

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!--Licensed to the Apache Software Foundation (ASF) under one or morecontributor license agreements.  See the NOTICE file distributed withthis work for additional information regarding copyright ownership.The ASF licenses this file to You under the Apache License, Version 2.0(the "License"); you may not use this file except in compliance withthe License.  You may obtain a copy of the License athttp://www.apache.org/licenses/LICENSE-2.0Unless required by applicable law or agreed to in writing, softwaredistributed under the License is distributed on an "AS IS" BASIS,WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.See the License for the specific language governing permissions andlimitations under the License.
--><!-- Put site-specific property overrides in this file. --><configuration><property><name>ozone.metadata.dirs</name><value>/data/ozone/meta</value></property><property><name>ozone.scm.datanode.id.dir</name><value>/data/ozone/meta/node</value></property><property><name>ozone.enabled</name><value>true</value></property><property><name>ozone.om.address</name><value>node11:9862</value></property><property><name>ozone.scm.names</name><value>node11</value></property><property><name>ozone.scm.client.address</name><value>node11:9860</value></property><property><name>hadoop.tmp.dir</name><value>/data/ozone/hadoop-${user.name}</value></property><property><name>nfs.dump.dir</name><value>/data/ozone/.hdfs-nfs</value></property><property><name>dfs.journalnode.edits.dir</name><value>/data/ozone/hadoop/dfs/journalnode/</value></property>
</configuration>

其它参数如下

Ozone 参数汇总

SettingValueComment
ozone.metadata.dirs文件路径元数据存储位置
ozone.scm.namesSCM 服务地址SCM的主机名:端口,或者IP:端口
ozone.scm.block.client.addressSCM 服务地址和端口Ozone 内部服务使用(如 OM)
ozone.scm.client.addressSCM 服务地址和端口客户端使用
ozone.scm.datanode.addressSCM 服务地址和端口Datanode 使用
ozone.om.addressOM 服务地址Ozone handler 和 Ozone 文件系统使用
hdds.datanode.dir文件路径datanode中数据存储位置
b、修改ozone-env
vi /usr/local/soft/ozone-2.0.0/etc/hadoop/ozone-env.sh
export JAVA_HOME=/usr/local/soft/jdk1.8.0_381
export OZONE_OPTS="-XX:ParallelGCThreads=8 -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=70 -XX:+CMSParallelRemarkEnabled"export OZONE_DATANODE_USER=root
export OZONE_OM_USER=root
export HDFS_SCM_USER=root
export HDFS_OM_USER=root
export HDFS_DATANODE_USER=rootexport OZONE_PID_DIR=/data/ozone/pids
export OZONE_LOG_DIR=/data/ozone/logs
c、创建workers
touch /usr/local/soft/ozone-2.0.0/etc/hadoop/workers

里面添加

node11

注意:如果是集群部署需要添加各个node节点

5、初始化Ozone

在启动 Ozone 集群之前,需要依次初始化 SCM 和 OM。

a、初始化 SCM 
ozone scm --init

运行SCM

ozone --daemon start scm

b、初始化OM(scm需要启动状态)
ozone om --init

启动OM

ozone --daemon start om

注意: 如果 SCM 未启动,om --init 命令会失败,同样,如果磁盘上的元数据缺失,SCM 也无法启动,所以请确保 scm --init 和 om --init 两条命令都成功执行了。

c、初始化DataNode

接下来启动 Datanode,在每个 Datanode 上运行下面的命令:

ozone --daemon start datanode

6、启动与关闭

启动

start-ozone.sh

关闭

stop-ozone.sh

7、浏览器验证

a、访问om web

地址:http://node11:9874/

b、访问scm web

地址:http://node11:9876/

c、访问datanode

地址:http://node11:9882/

四、集群部署

参考:Apache Ozone 2.0.0集群部署-CSDN博客

五、基本应用

参考官方文档:Documentation for Apache Ozone

创建 Volume 
ozone sh volume create /vol1
ozone sh volume create /testvolume1 -q=1GB
查看Volume
ozone sh volume list
基于Volume创建Bucket
ozone sh bucket create /vol1/bucket1
ozone sh bucket create /testvolume1/testbucket
查看Bucket信息
ozone sh bucket info /testvolume1/testbucket
上传文件
./ozone fs -put /path/to/local/file o3fs://bucket1.vol1/remote/fileozone sh key put /testvolume1/testbucket/testfile testfile
ozone sh key info /testvolume1/testbucket/testfile
下载文件
ozone sh key get /testvolume1/testbucket/testfile getfile

FAQ:

1、OM总是关闭,出现java.lang.UnsatisfiedLinkError: /root/ozone_rocksdb_tools9064409345365245954/libozone_rocksdb_tools.so: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.26' not found (required by /root/ozone_rocksdb_tools9064409345365245954/libozone_rocksdb_tools.so)

解决方案

wget http://www.vuln.cn/wp-content/uploads/2019/08/libstdc.so_.6.0.26.zip
unzip libstdc.so_.6.0.26.zip
sudo cp libstdc++.so.6.0.26 /usr/lib64/
cd /usr/lib64
sudo rm -f libstdc++.so.6
sudo ln -s libstdc++.so.6.0.26 libstdc++.so.6
strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/94187.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/94187.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Review --- Linux

Review — Linux Linux 是一种开源的类 Unix 操作系统内核&#xff0c;广泛应用于服务器、嵌入式设备和个人计算机中。其核心特点是开源、稳定、安全和高度的可定制性。对于大学毕业生而言&#xff0c;掌握 Linux 的基本操作和原理是进入 IT 行业的重要技能之一。 Linux 的基本…

【msyql 】占用硬盘太大 ,那些文件可以清理

从目录内容来看&#xff0c;这台 MySQL 服务器上主要是 xxl-job 调度平台的数据库。占用空间最大的是&#xff1a;24G xxl_job_log.ibd这个文件是 xxl-job 的任务执行日志表&#xff0c;随着时间推移&#xff0c;日志量会非常大。可以清理的文件和方法1. 清理 xxl_job_log 表数…

58 C++ 现代C++编程艺术7-模板友元

C 现代C编程艺术7-模板友元 文章目录C 现代C编程艺术7-模板友元一、基础应用场景 &#x1f9e9;1. 模板类声明友元函数2. 普通类声明模板函数为友元二、模板类互访场景 ⚙️1. 同类模板互访&#xff08;一对一&#xff09;2. 异类模板互访&#xff08;多对多&#xff09;三、高…

Undertow —— JBOSS 的社区版,redhat 下场维护的开源项目,顶顶好用的 Java web server

Undertow JBoss Community Undertow Undertow is a flexible performant web server written in java, providing both blocking and non-blocking API’s based on NIO. Undertow 是一个用 Java 编写的灵活高性能 Web 服务器&#xff0c;提供基于 NIO 的阻塞和非阻塞 API。…

【AI智能体】Dify 搭建业务单据差异核对助手实战详解

目录 一、前言 二、Dify介绍 2.1 Dify 是什么 2.2 Dify 核心特性 2.2.1 Dify特点 2.2.2 Dify 多模型支持 2.2.3 Dify 适应场景 2.2.4 基于Dify 搭建发票识别应用优势 三、Dify 搭建业务单据核对助手实战过程 3.1 前置准备 3.1.1 安装必要的插件 3.2 完整操作步骤 3…

Centos编译安装Python3.10

gcc编译源码包 下载python源码包并解压 wget https://www.python.org/ftp/python/3.10.18/Python-3.10.18.tgz tar -xf Python-3.10.18.tgz cd Python-3.10.18系统编译依赖环境安装 sudo yum install zlib-devel ncurses-devel gdbm-devel nss-devel openssl-devel readline-de…

Maya 3D建模 导入参考图、锁定参考图

1 导入参考图切换到 前视图 或者 侧视图 导入 &#xff08;根据参考图片类别去选择&#xff09;方法1&#xff1a;视图--图像平面--导入图像方法2&#xff1a;直接点 图像平面 备注&#xff1a;误操作导致看不到 解决办法&#xff1a;显示--视口 找对应的2 锁定参考图目的&…

基于单片机智能加湿器/空气加湿器

传送门 &#x1f449;&#x1f449;&#x1f449;&#x1f449;其他作品题目速选一览表 &#x1f449;&#x1f449;&#x1f449;&#x1f449;其他作品题目功能速览 概述 基于单片机的智能加湿器通过集成温湿度传感器、控制模块和雾化装置&#xff0c;实现环境湿度的自…

SNDR:高精度ADC系统的综合性能标尺

SNDR&#xff1a;高精度ADC系统的综合性能标尺 一、SNDR的本质定义与理论基础 信噪失真比(Signal-to-Noise-and-Distortion Ratio) 是评估ADC系统综合性能的核心指标&#xff0c;定义为信号功率与噪声及失真功率之和的比值&#xff1a; SNDRdB10log⁡10(PsignalPnoisePdistorti…

2025年渗透测试面试题总结-31(题目+回答)

安全领域各种资源&#xff0c;学习文档&#xff0c;以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具&#xff0c;欢迎关注。 目录 一、代码审计核心思路&#xff08;261&#xff09; 二、MySQL Getshell前提&#xff08;262&#xff09; …

[创业之路-560]:机械、电气、自控、电子、软件、信息、通信、大数据、人工智能,上述技术演进过程

上述关键词反映的技术演进过程可梳理为一条从机械执行到智能决策的递进式发展主线&#xff0c;各技术领域在不同阶段相互渗透、共同推动机器人技术从功能替代向认知革命跃迁。以下是具体演进逻辑与趋势分析&#xff1a;一、技术演进的三阶段递进机械主导阶段&#xff08;工业革…

芋道前端项目部署后刷新 404 的解决办法(Nginx 配置教程)

很多同学在把 芋道前端项目 部署到服务器后&#xff0c;会遇到一个奇怪的问题&#xff1a; &#x1f449; 项目首页能正常访问&#xff0c;但一旦在浏览器里手动刷新某个页面&#xff0c;就会报 404 Not Found 错误。 这到底是为什么呢&#xff1f;又该怎么解决呢&#xff1f;下…

更适合后端宝宝的前端三件套之HTML

文章目录&#x1f4d5;1. HTML基础✏️1.1 什么是HTML✏️1.2 认识HTML标签✏️1.3 HTML文件基本结构✏️1.4 标签层次结构&#x1f4d5;2. HTML常见标签✏️2.1 标题标签✏️2.2 段落标签✏️2.3 换行标签✏️2.4 图片标签✏️2.5 超链接标签✏️2.6 表格标签&#x1f4d5;3. …

【JVM内存结构系列】四、不同垃圾回收器与堆内存的适配关系:从分代GC到Region GC

在JVM内存体系中&#xff0c;堆内存的“分代结构”与“对象流转规则”是通用基础&#xff0c;但垃圾回收器&#xff08;GC&#xff09;是决定堆内存实际表现的核心变量——不同GC为实现“低延迟”“高吞吐量”等目标&#xff0c;会对堆的划分方式、对象管理逻辑、参数配置规则进…

Zemax光学设计输出3D

输出立体数据文件&#xff08;IGES/STEP/SAT/STL 格式&#xff09;的参数设置界面&#xff0c;各参数含义如下&#xff1a;1. 起始面/终止面&#xff1a;设定要输出立体数据对应的光学表面范围&#xff0c;从第 0 个表面到第 9 个表面 &#xff0c;限定参与输出的光学结构表面区…

模块测试与低功耗模式全攻略

一、模块测试流程在测试一个模块时&#xff0c;建议遵循以下步骤&#xff1a;基本测试&#xff1a;测试该模块的寄存器读写功能是否正常。可以向每个寄存器写入 0x5A5A 和 0xA5A5&#xff0c;这两种模式可以覆盖对寄存器写入 0 和 1 的情况。进阶测试&#xff1a;在基本测试通过…

机器学习实验三、使用决策树算法预测泰坦尼克号幸存者

实验目的1. 掌握特征工程&#xff0c;会进行特征提取与特征选择&#xff0c;会进行缺失值填充。2. 建立决策树模型&#xff0c;解决实际问题。3. 会对模型进行调试&#xff0c;能够绘制并保存决策树。实验环境Python 3.7.0&#xff0c;Sklearn &#xff0c;PyCharm实验原理1、特…

从全栈开发到微服务架构:一次真实的Java面试实录

从全栈开发到微服务架构&#xff1a;一次真实的Java面试实录 面试官与应聘者介绍 面试官&#xff1a;李明&#xff0c;某互联网大厂技术负责人&#xff0c;擅长Java后端、微服务及云原生架构。 应聘者&#xff1a;张伟&#xff0c;28岁&#xff0c;硕士学历&#xff0c;拥有5年…

新的 Gmail 网络钓鱼攻击利用 AI 提示注入来逃避检测

网络钓鱼一直以来都是为了欺骗人们。但在这次活动中&#xff0c;攻击者不仅瞄准用户&#xff0c;还试图操纵基于人工智能的防御系统。 这是我上周记录的Gmail 网络钓鱼链的演变。那次攻击活动依赖于紧迫性和重定向&#xff0c;但这次引入了隐藏的 AI 提示&#xff0c;旨在混淆…

Restful风格设计

文章目录什么是Restful风格&#xff1f;RESTful API设计最佳实践1. URL设计原则2. HTTP状态码的正确使用3. 统一的响应格式实际案例&#xff1a;用户管理系统API总结什么是Restful风格&#xff1f; 我的理解是&#xff1a;Restful是一种基于HTTP协议的架构设计风格&#xff0c…