這篇文章主要為大家展示了“Ozone1.0如何部署”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“Ozone1.0如何部署”這篇文章吧。
創(chuàng)新互聯(lián)堅持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站設(shè)計、網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(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ù)場景進(jìn)行了專門的優(yōu)化。Ozone 主要圍繞可擴(kuò)展性進(jìn)行設(shè)計,目標(biāo)是十億數(shù)量級以上的對象存儲。
Ozone Manager(OM)管理 Ozone 的命名空間,提供所有的 Volume, Bucket 和 Key 的新建,更新和刪除操作。
Ozone Manager 只和 Ozone Client 和 Storage Container Manager 通信,并不直接和 Datanode 通信。
當(dāng)向Ozone寫入數(shù)據(jù)時,你需要向OM請求一個塊,OM會返回一個塊并記錄下相關(guān)信息。當(dāng)你想要讀取那個文件時,你也需要先通過OM獲取那個塊的地址。
OM 允許用戶在卷和桶下管理鍵,卷和桶都是命名空間的一部分,也由 OM 管理。
每個卷都是 OM 下的一個獨立命名空間的根,這一點和 HDFS 不同,HDFS 提供的是單個根目錄的文件系統(tǒng)。
與 HDFS 中單根的樹狀結(jié)構(gòu)相比,Ozone 的命名空間是卷的集合,或者可以看作是個森林,因此可以非常容易地部署多個 OM 來進(jìn)行擴(kuò)展。
OM 維護(hù)了卷、桶和鍵的列表。它為每個用戶維護(hù)卷的列表,為每個卷維護(hù)桶的列表,為每個桶維護(hù)鍵的列表。
單點OM通過RocksDB來持久化元數(shù)據(jù);
HA模式底層通過 Ratis(實現(xiàn)了Raft協(xié)議) 擴(kuò)展元數(shù)據(jù)的副本數(shù)來實現(xiàn)元數(shù)據(jù)的HA。
SCM是Ozone的block空間管理的leader節(jié)點,主要職責(zé)是創(chuàng)建和管理container,container是Ozone的主要復(fù)制單元。
SCM為Ozone提供多個關(guān)鍵功能,集群管理、證書頒發(fā)、塊管理和副本管理:
SCM負(fù)責(zé)創(chuàng)建Ozone集群,當(dāng)通過init初始化集群時,SCM將創(chuàng)建證書授權(quán)所需的集群標(biāo)識和根證書。 SCM管理著集群中數(shù)據(jù)節(jié)點datanode的生命周期。
SCM的證書授權(quán)為集群中每個服務(wù)頒發(fā)身份證書,這個基礎(chǔ)證書讓服務(wù)在網(wǎng)絡(luò)層更容易啟動mTLS(雙向認(rèn)證),并且塊的基礎(chǔ)token也依賴于這個基礎(chǔ)證書。
SCM是塊管理器,它分配塊并將他們分配給數(shù)據(jù)節(jié)點,客戶端可以直接對這些塊進(jìn)行讀寫操作。
SCM持續(xù)跟蹤所有的塊副本,如果數(shù)據(jù)節(jié)點或者磁盤損壞,SCM會檢測到并會指示數(shù)據(jù)節(jié)點復(fù)制丟失的數(shù)據(jù)塊以確保高可用性。
Block是數(shù)據(jù)塊對象,真實存儲用戶的數(shù)據(jù),不由SCM管理。
Container是一個邏輯概念,是由一些相互之間沒有關(guān)系的 Block 組成的集合。
在Ozone中,數(shù)據(jù)是以Container的粒度進(jìn)行副本復(fù)制的,默認(rèn)大小為5G (ozone.scm.container.size),由SCM服務(wù)管理。
Pipeline 來保證 Container 實現(xiàn)想要的副本數(shù)。SCM 中目前支持2種 Pipeline 方式實現(xiàn)多副本,單副本的 Standalone 模式和三副本的 Ratis 方式(ozone.replication)。
當(dāng)Ozone Manager從SCM請求一個新的塊分配時,SCM將識別合適的容器并生成一個包含ContainerId+LocalId的塊id。客戶端將連接到存儲容器的Datanode,Datanode可以根據(jù)LocalId管理分離的塊。
Container 有2種狀態(tài),OPEN 和 CLOSED:
當(dāng)container創(chuàng)建時,它就開始了Open狀態(tài),當(dāng)它寫滿時(默認(rèn)5G),它就會關(guān)閉并且變成CLOSED的狀態(tài),之后便不可修改。 | OPEN | CLOSED | | :------------: | :------------: | | 可變 | 不可變 | |通過ratis復(fù)制 | 使用異步容器copy進(jìn)行復(fù)制| | 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ù)的磁盤文件,是默認(rèn)的存儲容器格式。
當(dāng)客戶端想從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塊一起返回。
當(dāng)客戶端找到了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 的擴(kuò)展性,因為 SCM 需要處理的塊數(shù)據(jù)大大減少,且命名服務(wù)(OM)作為一個獨特的服務(wù)主體對于擴(kuò)展 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ù)。
服務(wù) | 端口 | 參數(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 | 默認(rèn)無,Datanode節(jié)點必配參數(shù),以便Recon可以監(jiān)測到Datanode服務(wù) |
OZONE和HDFS不要部署在同一個節(jié)點上,因為OZONE的環(huán)境變量會和HADOOP共用,服務(wù)啟動會沖突,可以修改環(huán)境變量相關(guān)腳本進(jì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 下載的二進(jìn)制包,直接解壓使用,拷貝至所有節(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.xmlozone.om.address ozom-1 ozone.om.http-address ozom-1:9874 ozone.om.db.dirs /opt/dlw/metadata/ozone/om ozone.metadata.dirs /opt/dlw/metadata/ozone ozone.om.ratis.enable false ozone.om.service.ids omdlw001 ozone.om.nodes.omdlw001 om1,om2,om3 ozone.om.address.omdlw001.om1 ozom-1 ozone.om.address.omdlw001.om2 ozom-2 ozone.om.address.omdlw1.om3 ozom-3 ozone.scm.client.address ozom-1 ozone.scm.names ozom-1 ozone.scm.container.size 5GB ozone.scm.db.dirs /opt/dlw/metadata/ozone/scm ozone.scm.pipeline.owner.container.count 3 ozone.scm.datanode.id.dir /opt/dlw/metadata/ozone/node ozone.scm.block.client.address ozom-1 ozone.scm.datanode.address ozom-1 hdds.datanode.dir /data/disk1,/data/disk2 ozone.recon.db.dir /opt/dlw/metadata/ozone/recon ozone.recon.address ozom-1:9891 recon.om.snapshot.task.interval.delay 1m dfs.container.ratis.datanode.storage.dir /opt/dlw/metadata/ozone/ratis
$ 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服務(wù)支持HA,SCM尚不支持: 單點OM通過RocksDB來持久化元數(shù)據(jù); 高可用模式底層通過 Ratis(實現(xiàn)了Raft協(xié)議) 擴(kuò)展元數(shù)據(jù)的副本數(shù)來實現(xiàn)元數(shù)據(jù)的HA。
修改配置,開啟OM的HA模式
ozone.om.ratis.enable true
一個ozone-site.xml支持多個Ozone HA配置,為了在可用的HA集群之間進(jìn)行選擇,每個集群都需要一個邏輯名稱,該名稱可以解析為OM的IP地址(或域名)。
ozone.om.service.ids cluster1,cluster2
此處只有一個集群,自定義一個集群名稱omdlw001
ozone.om.service.ids omdlw001
對于這個集群可以定義他的所有om,并對每個om的節(jié)點進(jìn)行配置
ozone.om.nodes.omdlw001 om1,om2,om3 ozone.om.address.omdlw001.om1 ozom-1 ozone.om.address.omdlw001.om2 ozom-2 ozone.om.address.omdlw001.om3 ozom-3
在三個om節(jié)點上都啟動om服務(wù),但是必須得注意,高可用的om服務(wù)不能與datanode服務(wù)同處于同一個節(jié)點,因為2者都使用ratis會沖突。
$ ozone om --init $ ozone --daemon start om
以上是“Ozone1.0如何部署”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!