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
英文地址,請注明出處:http://en.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…