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

📅 2026/6/23 17:12:35
Apache Ozone 介绍与部署使用(最新版2.0.0)
目录一、软件介绍二、软件架构Ozone ManagerOMStorage Container ManagerSCMContainersDatanodesStorage ContainersReconRecon 和 Ozone ManagerRecon 和 Storage Container Manager三、安装部署准备环境1、软件下载2、上传解压3、添加系统环境变量4、修改参数a、修改ozone-siteb、修改ozone-envc、创建workers5、初始化Ozonea、初始化 SCMb、初始化OMscm需要启动状态c、初始化DataNode6、启动与关闭7、浏览器验证a、访问om webb、访问scm webc、访问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 ManagerSCM管理。Ozone 的管理由卷、桶和键组成。卷类似于个人主目录只有管理员可以创建。卷用来存储桶用户可以在一个卷中创建任意数量的桶桶中包含键在 Ozone 中通过键来存储数据。Ozone 的命名空间由存储卷组成同时存储卷也用作存储账户管理。下面的框图展示了 Ozone 的核心组件任何分布式系统都可以从不同角度去观察。一种观察角度是把 Ozone 看作是在分布式块存储HDDS之上加了一个命名空间服务OM。另一种角度是把 Ozone 看作由几个不同的功能层组成由 OM 和 SCM 组成的元数据管理层由数据节点以及 SCM 构成的数据存储层由 Ratis 提供的副本层用来复制 OM 和 SCM 的元数据以及在修改数据节点上数据时保持数据一致性Recon 是管理服务器它负责和其它 Ozone 组件通信并提供统一的管理 API 和界面。Ozone ManagerOMOzone ManagerOM管理 Ozone 的命名空间。当向 Ozone 写入数据时你需要向 Ozone Manager 请求一个块Ozone Manager 会返回这个块并记录下相关信息。当你想要读取那个文件时你则需要先通过 Ozone Manager 获取那个块的地址。Ozone Manager 还允许用户在卷和桶下组织键卷和桶都是命名空间的一部分也由 Ozone Manager 管理。每个卷都是 OM 下一个独立命名空间的根这一点和 HDFS 不同HDFS 提供的是单个根目录的文件系统。Ozone 的命名空间是卷的集合或者可以看作是相对于 HDFS 单根树状结构的森林。因此Ozone 可以非常容易地支持部署多个 OM 来进行扩展(待未来开发)。Storage Container ManagerSCMStorage Container Manager (SCM) 是块空间管理的 leader 节点其主要职责是创建和管理容器而容器也是 Ozone 的主要复制单元。主要职责如下Storage Container Manager (SCM) 为 Ozone 集群提供了多项关键功能承担了集群管理器、证书颁发机构、块管理器以及复制管理器的角色。SCM 负责创建 Ozone 集群。当通过init命令启动 SCM 时SCM 将创建担任证书颁发机构所需的集群 ID 和根证书。同时SCM 负责管理集群中数据节点的整个生命周期。SCM 作为块管理器负责将块分配给相应的数据节点客户端可以直接读写这些块SCM 负责跟踪所有块的副本当有数据节点或磁盘掉线SCM 侦测到后会启动相应的数据节点复制缺失的块以确保高可用SCM 的证书颁发机构负责为集群中的每个服务颁发身份证书这种证书架构可以很方便地在网络层启用双向认证mTLS。同时Ozone 的块令牌也依赖于这种证书架构。Containers容器是 Ozone/HDDS 的基本复制单元由 Storage Container Manager (SCM) 服务管理。容器是可以包含多个块的大型二进制单元块作为本地信息不由 SCM 管理。因此即使在系统中创建了数十亿个小文件即创建了数十亿个块数据节点也仅报告容器的状态以及复制容器。当 Ozone Manager 向 SCM 请求分配一个新的块时SCM 将找到一个合适的容器并且产生一个包含容器ID本地ID的块Id客户端则连接到存储这个容器的数据节点上。而数据节点则能够基于本地ID管理这个独立的块。Datanodes数据节点是 Ozone 中的 worker所有的数据都存储在数据节点上用户以块的方式写数据数据节点将多个块聚合成一个存储容器存储容器中包含用户写入的数据块和这些块的元数据。Storage ContainersOzone 的存储容器是一个自包含的超级块容器中包含一系列的 Ozone 块以及存储实际数据的磁盘文件这是默认的存储容器格式。对于 Ozone 来说容器只是提供了一个协议规范它独立于具体的存储格式实现换句话说我们可以很容易扩展或引入新的容器实现格式。因此上述格式应当被看作是 Ozone 存储容器的参考实现。ReconRecon 充当 Ozone 的管理和监视控制台。它提供了 Ozone 的鸟瞰图并通过基于 REST 的 API 和丰富的网页用户界面Web UI展示了集群的当前状态从而帮助用户解决任何问题。在较高的层次上Recon 收集和汇总来自 Ozone ManagerOM、Storage Container ManagerSCM和数据节点DN的元数据并充当中央管理和监视控制台。Ozone 管理员可以使用 Recon 查询系统的当前状态而不会使 OM 或 SCM 过载。Recon 维护多个数据库以支持批处理更快地查询和持久化聚合信息。它维护 OM DB 和 SCM DB 的本地副本以及用于持久存储聚合信息的 SQL 数据库。Recon 还与 Prometheus 集成提供一个 HTTP 端点来查询 Prometheus 的 Ozone 指标并在网页用户界面Web UI中显示一些关键时间点的指标。Recon 和 Ozone ManagerRecon 最初从领导者 OM 的 HTTP 端点获取 OM rocks DB 的完整快照解压缩文件并初始化 RocksDB 以进行本地查询。通过对最后一个应用的序列 ID 的 RPC 调用定期请求领导者 OM 进行增量更新从而使数据库保持同步。如果由于某种原因而无法检索增量更新或将其应用于本地数据库则会再次请求一个完整快照以使本地数据库与 OM DB 保持同步。因此Recon 可能会显示陈旧的信息因为本地数据库不会总是同步的。Recon 和 Storage Container ManagerRecon 还充当数据节点的被动 SCM。在集群中配置 Recon 时所有数据节点都向 Recon 注册并像 SCM 一样向 Recon 发送心跳、容器报告、增量容器报告等。Recon 使用它从数据节点得到的所有信息在本地构建自己的 SCM rocks DB 副本。Recon 从不向数据节点发送任何命令作为响应而只是充当被动 SCM 以更快地查找 SCM 元数据。三、安装部署官方参考Documentation for Apache Ozone准备环境自行安装Java8环境1、软件下载下载地址Apache Ozone2、上传解压将下载的ozone-2.0.0.tar.gz上传到node11服务器节点/usr/local/soft/路径下并进行解压cd /usr/local/soft/ tar -zxvf ozone-2.0.0.tar.gz3、添加系统环境变量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/hadoopsource /etc/profile4、修改参数a、修改ozone-sitevi /usr/local/soft/ozone-2.0.0/etc/hadoop/ozone-site.xml内容修改如下?xml version1.0? ?xml-stylesheet typetext/xsl hrefconfiguration.xsl? !-- Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this 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 with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed 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 and limitations under the License. -- !-- Put site-specific property overrides in this file. -- configuration property nameozone.metadata.dirs/name value/data/ozone/meta/value /property property nameozone.scm.datanode.id.dir/name value/data/ozone/meta/node/value /property property nameozone.enabled/name valuetrue/value /property property nameozone.om.address/name valuenode11:9862/value /property property nameozone.scm.names/name valuenode11/value /property property nameozone.scm.client.address/name valuenode11:9860/value /property property namehadoop.tmp.dir/name value/data/ozone/hadoop-${user.name}/value /property property namenfs.dump.dir/name value/data/ozone/.hdfs-nfs/value /property property namedfs.journalnode.edits.dir/name value/data/ozone/hadoop/dfs/journalnode//value /property /configuration其它参数如下Ozone 参数汇总SettingValueCommentozone.metadata.dirs文件路径元数据存储位置ozone.scm.namesSCM 服务地址SCM的主机名:端口或者IP:端口ozone.scm.block.client.addressSCM 服务地址和端口Ozone 内部服务使用如 OMozone.scm.client.addressSCM 服务地址和端口客户端使用ozone.scm.datanode.addressSCM 服务地址和端口Datanode 使用ozone.om.addressOM 服务地址Ozone handler 和 Ozone 文件系统使用hdds.datanode.dir文件路径datanode中数据存储位置b、修改ozone-envvi /usr/local/soft/ozone-2.0.0/etc/hadoop/ozone-env.shexport JAVA_HOME/usr/local/soft/jdk1.8.0_381 export OZONE_OPTS-XX:ParallelGCThreads8 -XX:UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction70 -XX:CMSParallelRemarkEnabled export OZONE_DATANODE_USERroot export OZONE_OM_USERroot export HDFS_SCM_USERroot export HDFS_OM_USERroot export HDFS_DATANODE_USERroot export OZONE_PID_DIR/data/ozone/pids export OZONE_LOG_DIR/data/ozone/logsc、创建workerstouch /usr/local/soft/ozone-2.0.0/etc/hadoop/workers里面添加node11注意如果是集群部署需要添加各个node节点5、初始化Ozone在启动 Ozone 集群之前需要依次初始化 SCM 和 OM。a、初始化 SCMozone scm --init运行SCMozone --daemon start scmb、初始化OMscm需要启动状态ozone om --init启动OMozone --daemon start om注意: 如果 SCM 未启动om --init命令会失败同样如果磁盘上的元数据缺失SCM 也无法启动所以请确保scm --init和om --init两条命令都成功执行了。c、初始化DataNode接下来启动 Datanode在每个 Datanode 上运行下面的命令ozone --daemon start datanode6、启动与关闭启动start-ozone.sh关闭stop-ozone.sh7、浏览器验证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 -q1GB 查看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/file ozone sh key put /testvolume1/testbucket/testfile testfile ozone sh key info /testvolume1/testbucket/testfile 下载文件 ozone sh key get /testvolume1/testbucket/testfile getfileFAQ: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