這篇文章主要為大家展示了“Ozone1.0如何部署”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學習一下“Ozone1.0如何部署”這篇文章吧。
創(chuàng)新互聯(lián)堅持“要么做到,要么別承諾”的工作理念,服務領(lǐng)域包括:成都網(wǎng)站設(shè)計、網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣等服務,滿足客戶于互聯(lián)網(wǎng)時代的雜多網(wǎng)站設(shè)計、移動媒體設(shè)計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
HDFS通過把文件系統(tǒng)元數(shù)據(jù)全部加載到Namenode內(nèi)存中,給客戶端提供了低延遲的元數(shù)據(jù)訪問。由于元數(shù)據(jù)需要全部加載到內(nèi)存,所以一個HDFS集群能支持的最大文件數(shù),受JAVA堆內(nèi)存的限制,上限大概是4億左右個文件。所以HDFS適合大量大文件(幾百兆以上)的集群,如果集群中有非常多的小文件,HDFS的元數(shù)據(jù)訪問性能會受到影響。 Ozone 是一個分布式、多副本的對象存儲系統(tǒng),并針對大數(shù)據(jù)場景進行了專門的優(yōu)化。Ozone 主要圍繞可擴展性進行設(shè)計,目標是十億數(shù)量級以上的對象存儲。
Ozone Manager(OM)管理 Ozone 的命名空間,提供所有的 Volume, Bucket 和 Key 的新建,更新和刪除操作。
Ozone Manager 只和 Ozone Client 和 Storage Container Manager 通信,并不直接和 Datanode 通信。
當向Ozone寫入數(shù)據(jù)時,你需要向OM請求一個塊,OM會返回一個塊并記錄下相關(guān)信息。當你想要讀取那個文件時,你也需要先通過OM獲取那個塊的地址。
OM 允許用戶在卷和桶下管理鍵,卷和桶都是命名空間的一部分,也由 OM 管理。
每個卷都是 OM 下的一個獨立命名空間的根,這一點和 HDFS 不同,HDFS 提供的是單個根目錄的文件系統(tǒng)。
與 HDFS 中單根的樹狀結(jié)構(gòu)相比,Ozone 的命名空間是卷的集合,或者可以看作是個森林,因此可以非常容易地部署多個 OM 來進行擴展。
OM 維護了卷、桶和鍵的列表。它為每個用戶維護卷的列表,為每個卷維護桶的列表,為每個桶維護鍵的列表。
單點OM通過RocksDB來持久化元數(shù)據(jù);
HA模式底層通過 Ratis(實現(xiàn)了Raft協(xié)議) 擴展元數(shù)據(jù)的副本數(shù)來實現(xiàn)元數(shù)據(jù)的HA。
SCM是Ozone的block空間管理的leader節(jié)點,主要職責是創(chuàng)建和管理container,container是Ozone的主要復制單元。
SCM為Ozone提供多個關(guān)鍵功能,集群管理、證書頒發(fā)、塊管理和副本管理:
SCM負責創(chuàng)建Ozone集群,當通過init初始化集群時,SCM將創(chuàng)建證書授權(quán)所需的集群標識和根證書。 SCM管理著集群中數(shù)據(jù)節(jié)點datanode的生命周期。
SCM的證書授權(quán)為集群中每個服務頒發(fā)身份證書,這個基礎(chǔ)證書讓服務在網(wǎng)絡(luò)層更容易啟動mTLS(雙向認證),并且塊的基礎(chǔ)token也依賴于這個基礎(chǔ)證書。
SCM是塊管理器,它分配塊并將他們分配給數(shù)據(jù)節(jié)點,客戶端可以直接對這些塊進行讀寫操作。
SCM持續(xù)跟蹤所有的塊副本,如果數(shù)據(jù)節(jié)點或者磁盤損壞,SCM會檢測到并會指示數(shù)據(jù)節(jié)點復制丟失的數(shù)據(jù)塊以確保高可用性。
Block是數(shù)據(jù)塊對象,真實存儲用戶的數(shù)據(jù),不由SCM管理。
Container是一個邏輯概念,是由一些相互之間沒有關(guān)系的 Block 組成的集合。
在Ozone中,數(shù)據(jù)是以Container的粒度進行副本復制的,默認大小為5G (ozone.scm.container.size),由SCM服務管理。
Pipeline 來保證 Container 實現(xiàn)想要的副本數(shù)。SCM 中目前支持2種 Pipeline 方式實現(xiàn)多副本,單副本的 Standalone 模式和三副本的 Ratis 方式(ozone.replication)。
當Ozone Manager從SCM請求一個新的塊分配時,SCM將識別合適的容器并生成一個包含ContainerId+LocalId的塊id??蛻舳藢⑦B接到存儲容器的Datanode,Datanode可以根據(jù)LocalId管理分離的塊。
Container 有2種狀態(tài),OPEN 和 CLOSED:
當container創(chuàng)建時,它就開始了Open狀態(tài),當它寫滿時(默認5G),它就會關(guān)閉并且變成CLOSED的狀態(tài),之后便不可修改。 | OPEN | CLOSED | | :------------: | :------------: | | 可變 | 不可變 | |通過ratis復制 | 使用異步容器copy進行復制| | Raft leader節(jié)點用于數(shù)據(jù)讀寫| 所有節(jié)點都用于讀 |
存儲所有數(shù)據(jù),客戶端按block寫入數(shù)據(jù),數(shù)據(jù)節(jié)點將這些block聚合到存儲container中, container中包含用戶寫入的數(shù)據(jù)塊和這些塊的元數(shù)據(jù)。
Ozone container存儲容器是一個自包含的超級塊,容器中包含一系列的Block,以及存儲實際數(shù)據(jù)的磁盤文件,是默認的存儲容器格式。
當客戶端想從Ozone讀取數(shù)據(jù),客戶端向OM發(fā)送數(shù)據(jù)文件的名字,OM會返回組成這個文件的塊列表,一個Ozone塊包含一個container ID 和一個local ID,container ID讓客戶端發(fā)現(xiàn)container的位置,container的相關(guān)信息由SCM提供,在大多數(shù)情況下,container位置由Ozone Manager緩存,并與Ozone塊一起返回。
當客戶端找到了container,也就是知道了哪些數(shù)據(jù)節(jié)點包含這些container,客戶端會連接到數(shù)據(jù)節(jié)點并且讀取由container ID:Local ID指定的數(shù)據(jù)流,換句話說,Local ID用作容器的索引,從container中讀取想要的數(shù)據(jù)流。
容器的位置發(fā)現(xiàn)
SCM 如何獲得容器的位置?這一點和現(xiàn)有的 HDFS 十分相似。數(shù)據(jù)節(jié)點會定期發(fā)送類似于塊報告的容器報告,容器報告比塊報告的內(nèi)容簡潔的多,比如,對于一個存儲容量為 196 TB 的集群,Ozone 大概會擁有四萬個容器,相比于 HDFS 的一百五十萬個塊,塊報告數(shù)量縮減為四十分之一。
這種間接管理的方式大大地提高了 Ozone 的擴展性,因為 SCM 需要處理的塊數(shù)據(jù)大大減少,且命名服務(OM)作為一個獨特的服務主體對于擴展 Ozone 具有重要意義。
Ozone的監(jiān)控頁面
Ozone的s3 compatible REST gateway
Ozone 的命名空間由volume組成,同時volume也用作存儲賬戶管理。
Ozone Manager(OM) 管理命名空間,Storage Container Manager(SCM) 管理底層的數(shù)據(jù),而 Recon 是 Ozone 的管理接口。
Ozone數(shù)據(jù)的邏輯存儲架構(gòu)
Volumes(卷): 類似于用戶賬號,只有管理員可以創(chuàng)建volumes,可以做配額管理,用于存儲buckets,一個volume下可以包含多個buckets。
Buckets(桶): 類似于目錄,用戶可以在自己的卷下創(chuàng)建任意數(shù)量的桶,一個bucket可以包含無數(shù)個keys,buckets不能包含其他buckets,它們之間互不干擾。
Keys(鍵): 類似于文件,位于bucket下,用于讀寫數(shù)據(jù)。
服務 | 端口 | 參數(shù) | 備注 |
---|---|---|---|
Datanode | 9858 | dfs.container.ratis.ipc | Datanode節(jié)點 |
Datanode | 9859 | dfs.container.ipc | Datanode節(jié)點 |
SCM | 9860 | ozone.scm.client.address | |
SCM | 9861 | ozone.scm.datanode.address | scm和datanode通信端口 |
OM | 9862 | ozone.om.address | |
SCM | 9863 | ozone.scm.block.client.port | |
OM | 9874 | ozone.om.http-address | OM web頁面 |
SCM | 9876 | ozone.scm.http-address | SCM web頁面 |
S3G | 9878 | ozone.s3g.http-address | S3Gateway |
Datanode | 9882 | hdds.datanode.http-address | Datanode節(jié)點 |
Recon | 9888 | ozone.recon.http-address | Recon web頁面 |
Recon | 9891 | ozone.recon.address | 默認無,Datanode節(jié)點必配參數(shù),以便Recon可以監(jiān)測到Datanode服務 |
OZONE和HDFS不要部署在同一個節(jié)點上,因為OZONE的環(huán)境變量會和HADOOP共用,服務啟動會沖突,可以修改環(huán)境變量相關(guān)腳本進行更改。
# cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 172.16.40.21 ozom-1 172.16.40.22 ozom-2 172.16.40.23 ozom-3 172.16.40.11 ozdn-1 172.16.40.12 ozdn-2 172.16.40.13 ozdn-3
# systemctl stop firewalld && systemctl disable firewalld
# setenforce 0 && sed -i "s/^SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
ntpd
# useradd hadoop
略
Hostname | Ip | Service |
---|---|---|
ozom-1 | 172.16.40.21 | OM、SCM、DataNode |
ozom-2 | 172.16.40.22 | DataNode |
ozom-3 | 172.16.40.23 | DataNode |
ozdn-1 | 172.16.40.11 | DataNode |
ozdn-2 | 172.16.40.12 | DataNode |
ozdn-3 | 172.16.40.13 | DataNode |
創(chuàng)建Datanode的數(shù)據(jù)目錄 掛載到磁盤上
# mkdir -p /data/disk{1..2} # chown -R hadoop:hadoop /data/disk{1..2}
創(chuàng)建ozone相關(guān)目錄
# mkdir -p /opt/dlw/{conf,soft,logs,metadata,tmp} # chown -R hadoop:hadoop /opt/dlw $ mkdir -p /opt/dlw/logs/ozone $ mkdir -p /opt/dlw/tmp/run $ mkdir -p /opt/dlw/metadata/ozone/{om,node,recon,ratis,scm}
所有節(jié)點都需配置
配置ozone
export OZONE_HOME=/opt/dlw/soft/ozone export PATH=$OZONE_HOME/sbin:$OZONE_HOME/bin:$PATH export HADOOP_OPTS="-XX:ParallelGCThreads=8 -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+CMSParallelRemarkEnabled" export HADOOP_PID_DIR=/opt/dlw/tmp/run export HADOOP_LOG_DIR=/opt/dlw/logs/hadoop
Ozone 下載的二進制包,直接解壓使用,拷貝至所有節(jié)點
$ tar -zxvf hadoop-ozone-1.0.0.tar.gz -C /opt/dlw/soft/ $ cd /opt/dlw/soft/ $ mv ozone-1.0.0 ozone
生成配置
$ ozone genconf $OZONE_HOME/etc/hadoop
修改配置
$ vim $OZONE_HOME/etc/hadoop/ozone-site.xml <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <configuration> <property> <name>ozone.om.address</name> <value>ozom-1</value> </property> <property> <name>ozone.om.http-address</name> <value>ozom-1:9874</value> </property> <property> <name>ozone.om.db.dirs</name> <value>/opt/dlw/metadata/ozone/om</value> </property> <property> <name>ozone.metadata.dirs</name> <value>/opt/dlw/metadata/ozone</value> </property> <property> <name>ozone.om.ratis.enable</name> <value>false</value> </property> <property> <name>ozone.om.service.ids</name> <value>omdlw001</value> </property> <property> <name>ozone.om.nodes.omdlw001</name> <value>om1,om2,om3</value> </property> <property> <name>ozone.om.address.omdlw001.om1</name> <value>ozom-1</value> </property> <property> <name>ozone.om.address.omdlw001.om2</name> <value>ozom-2</value> </property> <property> <name>ozone.om.address.omdlw1.om3</name> <value>ozom-3</value> </property> <property> <name>ozone.scm.client.address</name> <value>ozom-1</value> </property> <property> <name>ozone.scm.names</name> <value>ozom-1</value> </property> <property> <name>ozone.scm.container.size</name> <value>5GB</value> </property> <property> <name>ozone.scm.db.dirs</name> <value>/opt/dlw/metadata/ozone/scm</value> </property> <property> <name>ozone.scm.pipeline.owner.container.count</name> <value>3</value> </property> <property> <name>ozone.scm.datanode.id.dir</name> <value>/opt/dlw/metadata/ozone/node</value> </property> <property> <name>ozone.scm.block.client.address</name> <value>ozom-1</value> </property> <property> <name>ozone.scm.datanode.address</name> <value>ozom-1</value> </property> <property> <name>hdds.datanode.dir</name> <value>/data/disk1,/data/disk2</value> </property> <property> <name>ozone.recon.db.dir</name> <value>/opt/dlw/metadata/ozone/recon</value> </property> <property> <name>ozone.recon.address</name> <value>ozom-1:9891</value> </property> <property> <name>recon.om.snapshot.task.interval.delay</name> <value>1m</value> </property> <property> <name>dfs.container.ratis.datanode.storage.dir</name> <value>/opt/dlw/metadata/ozone/ratis</value> </property> </configuration>
$ vim $OZONE_HOME/etc/hadoop/workers ozom-1 ozom-2 ozom-3 ozdn-1 ozdn-2 ozdn-3
scm
$ ozone scm --init $ ozone --daemon start scm
om
$ ozone om --init $ ozone --daemon start om
datanode –所有datanode節(jié)點
$ ozone --daemon start datanode
recon
$ ozone --daemon start recon
s3g
$ ozone --daemon start s3g
$ jps 6721 ReconServer 7589 Gateway 4934 StorageContainerManagerStarter 5479 OzoneManagerStarter 5705 HddsDatanodeService 7662 Jps
scm
om
s3g
recon
Hostname | Ip | Service |
---|---|---|
ozom-1 | 172.16.40.21 | OM、SCM、DataNode |
ozom-2 | 172.16.40.22 | OM |
ozom-3 | 172.16.40.23 | OM |
ozdn-1 | 172.16.40.11 | DataNode |
ozdn-2 | 172.16.40.12 | DataNode |
ozdn-3 | 172.16.40.13 | DataNode |
高可用目前只有OM服務支持HA,SCM尚不支持: 單點OM通過RocksDB來持久化元數(shù)據(jù); 高可用模式底層通過 Ratis(實現(xiàn)了Raft協(xié)議) 擴展元數(shù)據(jù)的副本數(shù)來實現(xiàn)元數(shù)據(jù)的HA。
修改配置,開啟OM的HA模式
<property> <name>ozone.om.ratis.enable</name> <value>true</value> </property>
一個ozone-site.xml支持多個Ozone HA配置,為了在可用的HA集群之間進行選擇,每個集群都需要一個邏輯名稱,該名稱可以解析為OM的IP地址(或域名)。
<property> <name>ozone.om.service.ids</name> <value>cluster1,cluster2</value> </property>
此處只有一個集群,自定義一個集群名稱omdlw001
<property> <name>ozone.om.service.ids</name> <value>omdlw001</value> </property>
對于這個集群可以定義他的所有om,并對每個om的節(jié)點進行配置
<property> <name>ozone.om.nodes.omdlw001</name> <value>om1,om2,om3</value> </property> <property> <name>ozone.om.address.omdlw001.om1</name> <value>ozom-1</value> </property> <property> <name>ozone.om.address.omdlw001.om2</name> <value>ozom-2</value> </property> <property> <name>ozone.om.address.omdlw001.om3</name> <value>ozom-3</value> </property>
在三個om節(jié)點上都啟動om服務,但是必須得注意,高可用的om服務不能與datanode服務同處于同一個節(jié)點,因為2者都使用ratis會沖突。
$ ozone om --init $ ozone --daemon start om
以上是“Ozone1.0如何部署”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學習更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
分享標題:Ozone1.0如何部署
鏈接URL:http://www.rwnh.cn/article20/jsdico.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App開發(fā)、定制網(wǎng)站、用戶體驗、移動網(wǎng)站建設(shè)、做網(wǎng)站、商城網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)