溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Ozone1.0如何部署

發(fā)布時間:2021-12-29 14:43:42 來源:億速云 閱讀:636 作者:小新 欄目:大數(shù)據(jù)

這篇文章主要為大家展示了“Ozone1.0如何部署”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學習一下“Ozone1.0如何部署”這篇文章吧。

1、背景簡介

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ù)量級以上的對象存儲。

2、組件架構(gòu)

Ozone1.0如何部署

2.1 Ozone Manager

2.1.1 基本功能

Ozone Manager(OM)管理 Ozone 的命名空間,提供所有的 Volume, Bucket 和 Key 的新建,更新和刪除操作。

Ozone Manager 只和 Ozone Client 和 Storage Container Manager 通信,并不直接和 Datanode 通信。

Ozone1.0如何部署

當向Ozone寫入數(shù)據(jù)時,你需要向OM請求一個塊,OM會返回一個塊并記錄下相關(guān)信息。當你想要讀取那個文件時,你也需要先通過OM獲取那個塊的地址。

OM 允許用戶在卷和桶下管理鍵,卷和桶都是命名空間的一部分,也由 OM 管理。

每個卷都是 OM 下的一個獨立命名空間的根,這一點和 HDFS 不同,HDFS 提供的是單個根目錄的文件系統(tǒng)。

與 HDFS 中單根的樹狀結(jié)構(gòu)相比,Ozone 的命名空間是卷的集合,或者可以看作是個森林,因此可以非常容易地部署多個 OM 來進行擴展。

2.1.2. 元數(shù)據(jù)管理

OM 維護了卷、桶和鍵的列表。它為每個用戶維護卷的列表,為每個卷維護桶的列表,為每個桶維護鍵的列表。

2.1.3. 單點及高可用

單點OM通過RocksDB來持久化元數(shù)據(jù);

HA模式底層通過 Ratis(實現(xiàn)了Raft協(xié)議) 擴展元數(shù)據(jù)的副本數(shù)來實現(xiàn)元數(shù)據(jù)的HA。 Ozone1.0如何部署

2.1.4. Key寫

Ozone1.0如何部署

2.1.5. Key 讀

Ozone1.0如何部署

2.2. Storage Container Manager

SCM是Ozone的block空間管理的leader節(jié)點,主要職責是創(chuàng)建和管理container,container是Ozone的主要復制單元。 Ozone1.0如何部署

SCM為Ozone提供多個關(guān)鍵功能,集群管理、證書頒發(fā)、塊管理和副本管理:

2.2.1. 集群管理

SCM負責創(chuàng)建Ozone集群,當通過init初始化集群時,SCM將創(chuàng)建證書授權(quán)所需的集群標識和根證書。 SCM管理著集群中數(shù)據(jù)節(jié)點datanode的生命周期。

2.2.2. 服務(wù)安全管理

SCM的證書授權(quán)為集群中每個服務(wù)頒發(fā)身份證書,這個基礎(chǔ)證書讓服務(wù)在網(wǎng)絡(luò)層更容易啟動mTLS(雙向認證),并且塊的基礎(chǔ)token也依賴于這個基礎(chǔ)證書。

2.2.3. 塊管理

SCM是塊管理器,它分配塊并將他們分配給數(shù)據(jù)節(jié)點,客戶端可以直接對這些塊進行讀寫操作。

2.2.4. 副本管理

SCM持續(xù)跟蹤所有的塊副本,如果數(shù)據(jù)節(jié)點或者磁盤損壞,SCM會檢測到并會指示數(shù)據(jù)節(jié)點復制丟失的數(shù)據(jù)塊以確保高可用性。

2.3 Containers

Block是數(shù)據(jù)塊對象,真實存儲用戶的數(shù)據(jù),不由SCM管理。

Container是一個邏輯概念,是由一些相互之間沒有關(guān)系的 Block 組成的集合。

在Ozone中,數(shù)據(jù)是以Container的粒度進行副本復制的,默認大小為5G (ozone.scm.container.size),由SCM服務(wù)管理。 Ozone1.0如何部署

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管理分離的塊。 Ozone1.0如何部署

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é)點都用于讀 |

2.4 Datanodes

存儲所有數(shù)據(jù),客戶端按block寫入數(shù)據(jù),數(shù)據(jù)節(jié)點將這些block聚合到存儲container中, container中包含用戶寫入的數(shù)據(jù)塊和這些塊的元數(shù)據(jù)。

Ozone container存儲容器是一個自包含的超級塊,容器中包含一系列的Block,以及存儲實際數(shù)據(jù)的磁盤文件,是默認的存儲容器格式。

Ozone1.0如何部署

當客戶端想從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ù)流。 Ozone1.0如何部署

  • 容器的位置發(fā)現(xiàn)

SCM 如何獲得容器的位置?這一點和現(xiàn)有的 HDFS 十分相似。數(shù)據(jù)節(jié)點會定期發(fā)送類似于塊報告的容器報告,容器報告比塊報告的內(nèi)容簡潔的多,比如,對于一個存儲容量為 196 TB 的集群,Ozone 大概會擁有四萬個容器,相比于 HDFS 的一百五十萬個塊,塊報告數(shù)量縮減為四十分之一。

這種間接管理的方式大大地提高了 Ozone 的擴展性,因為 SCM 需要處理的塊數(shù)據(jù)大大減少,且命名服務(wù)(OM)作為一個獨特的服務(wù)主體對于擴展 Ozone 具有重要意義。

2.5. Recon

Ozone的監(jiān)控頁面

2.6 S3G

Ozone的s3 compatible REST gateway

3. 基本介紹

3.1.組件架構(gòu)

Ozone 的命名空間由volume組成,同時volume也用作存儲賬戶管理。

Ozone Manager(OM) 管理命名空間,Storage Container Manager(SCM) 管理底層的數(shù)據(jù),而 Recon 是 Ozone 的管理接口。

Ozone1.0如何部署

3.2.邏輯架構(gòu)

Ozone數(shù)據(jù)的邏輯存儲架構(gòu)

Ozone1.0如何部署

  1. Volumes(卷): 類似于用戶賬號,只有管理員可以創(chuàng)建volumes,可以做配額管理,用于存儲buckets,一個volume下可以包含多個buckets。

  2. Buckets(桶): 類似于目錄,用戶可以在自己的卷下創(chuàng)建任意數(shù)量的桶,一個bucket可以包含無數(shù)個keys,buckets不能包含其他buckets,它們之間互不干擾。

  3. Keys(鍵): 類似于文件,位于bucket下,用于讀寫數(shù)據(jù)。

3.3. 端口說明

服務(wù)端口參數(shù)備注
Datanode9858dfs.container.ratis.ipcDatanode節(jié)點
Datanode9859dfs.container.ipcDatanode節(jié)點
SCM9860ozone.scm.client.address
SCM9861ozone.scm.datanode.addressscm和datanode通信端口
OM9862ozone.om.address
SCM9863ozone.scm.block.client.port
OM9874ozone.om.http-addressOM web頁面
SCM9876ozone.scm.http-addressSCM web頁面
S3G9878ozone.s3g.http-addressS3Gateway
Datanode9882hdds.datanode.http-addressDatanode節(jié)點
Recon9888ozone.recon.http-addressRecon web頁面
Recon9891ozone.recon.address默認無,Datanode節(jié)點必配參數(shù),以便Recon可以監(jiān)測到Datanode服務(wù)

4.安裝部署

OZONE和HDFS不要部署在同一個節(jié)點上,因為OZONE的環(huán)境變量會和HADOOP共用,服務(wù)啟動會沖突,可以修改環(huán)境變量相關(guān)腳本進行更改。

4.1.基礎(chǔ)環(huán)境

4.1.1.配置/etc/hosts

# 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

4.1.2.關(guān)閉防火墻

# systemctl stop firewalld && systemctl disable firewalld

4.1.3.關(guān)閉selinux

# setenforce 0 && sed -i "s/^SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config

4.1.4.時間同步

ntpd

4.1.5.創(chuàng)建用戶

# useradd hadoop

4.1.6.配置互信

4.2.單點部署

HostnameIpService
ozom-1172.16.40.21OM、SCM、DataNode
ozom-2172.16.40.22DataNode
ozom-3172.16.40.23DataNode
ozdn-1172.16.40.11DataNode
ozdn-2172.16.40.12DataNode
ozdn-3172.16.40.13DataNode

4.2.1.創(chuàng)建目錄

創(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}

4.2.2.環(huán)境變量

1、配置java

所有節(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

4.2.3.拷貝軟件

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

4.2.4.修改配置

生成配置

$ 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

4.2.5.啟動服務(wù)

  • 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

4.2.6.校檢驗證

$ jps
6721 ReconServer
7589 Gateway
4934 StorageContainerManagerStarter
5479 OzoneManagerStarter
5705 HddsDatanodeService
7662 Jps
  • scm

Ozone1.0如何部署

  • om

Ozone1.0如何部署

  • s3g

Ozone1.0如何部署

  • recon

Ozone1.0如何部署

4.3.高可用部署

HostnameIpService
ozom-1172.16.40.21OM、SCM、DataNode
ozom-2172.16.40.22OM
ozom-3172.16.40.23OM
ozdn-1172.16.40.11DataNode
ozdn-2172.16.40.12DataNode
ozdn-3172.16.40.13DataNode

高可用目前只有OM服務(wù)支持HA,SCM尚不支持: 單點OM通過RocksDB來持久化元數(shù)據(jù); 高可用模式底層通過 Ratis(實現(xiàn)了Raft協(xié)議) 擴展元數(shù)據(jù)的副本數(shù)來實現(xiàn)元數(shù)據(jù)的HA。

Ozone1.0如何部署

修改配置,開啟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服務(wù),但是必須得注意,高可用的om服務(wù)不能與datanode服務(wù)同處于同一個節(jié)點,因為2者都使用ratis會沖突。

$ ozone om --init
$ ozone --daemon start om

以上是“Ozone1.0如何部署”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學習更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細節(jié)
推薦閱讀:
  1. sybase部署
  2. Django部署

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI