成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

下一代大數據存儲Ozone,終于有人講明白了

存儲
Ozone能夠輕松管理小文件和大文件,是一個分布式Key-Value對象存儲系統。

HDFS是業界默認的大數據存儲系統,在業界的大數據集群中有非常廣泛的使用。HDFS集群有著很高的穩定性且易擴展得益于它較簡單的構架,但包含幾千個節點,保存上百拍比特(PB)數據的集群也不鮮見。我們簡單來回顧一下HDFS的構架,如圖1所示。

圖片

▲圖1 HDFS構架

HDFS通過把文件系統元數據全部加載到數據節點Namenode內存中,給客戶端提供了低延遲的元數據訪問。由于元數據需要全部加載到內存,所以一個HDFS集群能支持的最大文件數,受Java堆內存的限制,上限大概是4億~5億個文件。所以HDFS適合大量大文件[幾百兆字節(MB)以上]的集群,如果集群中有非常多的小文件,HDFS的元數據訪問性能會受到影響。雖然可以通過各種Federation技術來擴展集群的節點規模,但單個HDFS集群仍然沒法很好地解決小文件的限制。

基于這些背景,Hadoop社區推出了新的分布式存儲系統Ozone。Ozone能夠輕松管理小文件和大文件,是一個分布式Key-Value對象存儲系統。

01基本概念

對象存儲是一種數據存儲,每個數據單元存儲為離散單元(稱為對象)。對象可以是任何類型、任何大小的數據。語義上,對象存儲中的所有對象都存儲在單個平面地址空間中,沒有文件系統的層次結構。實現中,為了支持多用戶及用戶隔離,更好地管理和使用對象,通常對象存儲也會在平面的地址空間中劃分出幾個層次。這些層次是由對象存儲的實現確定的,每個層次都有特定的語義,用戶不能更改。

Ozone的對象層次分三個層次,從上到下依次是Volume(卷),Bucket(存儲桶)和Object(對象),如圖2所示。

圖片

▲圖2 Ozone的對象層次

1、Volume(卷)

Volume類似Amazon S3中用戶賬戶的概念,是用戶的Home目錄。Volume只有系統管理員才可以創建,是存儲管理的單位,比如配額管理。Ozone建議系統管理員為每個用戶都單獨創建獨立的Volume。Volume用來存儲Bucket,目前一個Volume下面可以包含任意多個Bucket。

2、Bucket(存儲桶)

存儲桶是對象的容器,概念類似于S3的Bucket,或者Azure中的Container。存儲桶創建于Volume下,只能屬于一個Volume,創建后歸屬關系不可更改,也不支持更改存儲桶的名字。Amazon S3的存儲桶名稱是全局唯一的,并且命名空間由所有AWS賬戶共享。這意味著,在創建存儲桶之后,任何AWS區域中的其他AWS賬戶均不能使用該存儲桶的名稱,直至刪除該存儲桶。在Ozone中,存儲桶名稱只需要確保在本Volume內部是唯一的。不同的Volume可以創建名稱相同的存儲桶。

3、Object(對象)

對象存儲在存儲桶中,是鍵+值的存儲。鍵是對象的名稱,值是對象的內容。對象的名稱在所屬存儲桶中必須是唯一的。對象有自己的元數據,包括值的大小、創建時間、最后一次修改時間、備份數、訪問控制列表ACL等。對象的大小沒有限制。

Ozone支持URL以虛擬主機方式的訪問Ozone的對象。它采用如下格式:

[scheme][bucket.volume.server:port]/key

?其中,scheme可以選:1)o3fs,通過RPC協議訪問Ozone。2)HTTP/HTTPS,通過HTTP協議訪問Ozone REST API。當scheme省略時,默認使用RPC協議。server:port是Ozone Manager的地址。如果沒有指定,則使用集群的配置文件ozone-site.xml中“ozone.om.address”值。如果配置文件中也沒有定義,則默認使用“localhost:9862”。

02技術架構

?Ozone技術構架分為三個部分:Ozone Manager,統一的元數據管理;Storage Container Manager,數據塊分配和數據節點管理;Datanode,數據節點,數據的最終存放處,如圖3所示。類比HDFS的構架,可以看到原來的Namenode的功能,現在由Ozone Manager和Storage Container Manage分別進行管理。對象元數據空間和數據分布分開管理,有利于兩者的獨立按需擴展,避免之前Namenode單節點的壓力。

圖片

▲圖3 Ozone技術構架

Ozone主要模塊和功能如下。

1、Ozone Manager(OM)

Ozone Manager是管理Ozone的命名空間,提供所有的Volume(卷)、Bucket(存儲桶)和Key(鍵)的新建、更新和刪除操作。它存儲了Ozone的元數據信息,這些元數據信息包括Volumes、Buckets和Keys,底層通過RATIS(實現了RAFT協議)擴展元數據的副本數來實現元數據的HA。Ozone Manager只和Ozone Client和Storage Container Manager通信,并不直接和Datanode通信。Ozone Manager將命名空間的元數據存儲在RocksDB中,避免了HDFS中需要將所有元數據都保留在內存,從而經常會受到小文件問題的困擾。RocksDB是Facebook基于LevelDB開發的一個本地Key-Value存儲引擎,尤其對于SSD有很多的優化和改進,提供高吞吐量的讀寫操作。

2、Storage Container Manager(SCM)

SCM類似HDFS中的Block Manager,管理Container,寫Pipelines和Datanode,為Ozone Manager提供Block和Container的操作和信息。SCM也監聽Datanode發來的心跳信息,作為Datanode Manager的角色,保證和維護集群所需的數據冗余級別。SCM和Ozone Client之間沒有通信。

3、Block、Container和Pipeline

Block是數據塊對象,真實存儲用戶的數據。Container中的一條記錄是一個Block的信息,每個Block在Container里面有且僅有一條記錄,如圖4所示,在Ozone中,數據是以Container為粒度進行副本復制的。SCM中目前支持2種Pipeline方式,由單Datanode節點組成的Standalone讀Pipeline,和由三個Datanode節點組成的Apache RATIS寫Pipeline。Container有2種狀態,OPEN和CLOSED。當一個Container是OPEN狀態時,可以往里面寫入新的Block。當一個Container達到它預定的大小時(默認5GB),它從OPEN狀態轉換成CLOSED狀態。一個Closed Container是不可修改的。

圖片

▲圖4 Datanode Container內部結構

由三個Datanode節點組成的Apache RATIS寫Pipeline,保證數據一旦落盤,后續總能讀到最新的數據,數據是強一致的,并且每份數據有3個備份,不用擔心由于單個磁盤故障導致的數據丟失,如圖5所示。

圖片

▲圖5 RATIS寫Pipeline

4、Datanode

Datanode是Ozone的數據節點,以Container為基本存儲單元維護每個Container內部的數據映射關系,并定時向SCM發送心跳節點、匯報節點的信息、管理Container的信息和Pipeline的信息。當一個Container大小超過預定大小的90%時或者寫操作失敗時,Datanode會發送Container Close命令給SCM,把Container的狀態從OPEN轉變成CLOSED。或者當Pipeline出錯時,發送Pipeline Close命令給SCM,把Pipeline從OPEN狀態轉為CLOSED狀態。

5、分層管理

Ozone分層結構使得Ozone Manager、Storage Container Manager和Datanode可按需獨立擴展。對于Ozone提供的語義,也是分層管理的,如圖6所示。

圖片

▲圖6 Ozone語義與對應的管理模塊

?6、對象創建

當Ozone Client(客戶端)需要創建并且寫入一個新對象時,客戶端需要和Ozone Manager和Datanode直接打交道,具體過程如圖7所示。

圖片

▲圖7 創建Ozone新對象

1)Ozone客戶端鏈接Ozone Manager,提供需要創建的對象信息,包括對象的名稱、數據的大小、備份數和其他用戶自定義的對象屬性。

2)Ozone Manager收到Ozone客戶端的請求后,和SCM通信,請求SCM尋找能夠容納數據的處于OPEN狀態的Container,然后在找到的Container中分配足夠數量的Block。

3)SCM將新對象數據將要寫入的Container、Block和Container所在的Pipeline的三個Datanode的信息列表返回給Ozone Manager。

4)Ozone Manager將收到SCM返回的信息,返回給客戶端。

5)客戶端得到Datanode列表信息之后,和第一個Datanode(Raft Pipeline Leader)建立通信,將數據寫入Datanode的Container。

6)客戶端完成數據寫入后,連接Ozone Manager,確認數據已經更新完成,Ozone Manager更新對象的元數據,記錄對象數據所在的Container和Block的信息。至此,新的對象創建完成。之后,其他的客戶端就可以訪問這個對象了。

7、對象讀取對象讀取的過程相對簡單,類似于HDFS的文件讀,如圖8所示。

圖片

▲圖8 讀取Ozone對象

1)Ozone Client(客戶端)和Ozone Manager通信,制定要讀取的對象Key (/volume/bucket/key)。

2)Ozone Manager在元數據庫中查找對應的對象,返回對象數據所在的Container和Block信息,包括Container所在的Datanode列表信息給Ozone Client(客戶端)。

3)Ozone支持Data locality。如果Ozone Client(客戶端)運行在集群中的某個節點上,Ozone Manager會返回按照網絡拓撲距離排序的Datanode列表。Ozone Client(客戶端)可以選擇第一個Datanode節點(本地節點),也是離Client(客戶端)最近的節點來讀取數據,節省數據讀取的網絡傳輸時間。

責任編輯:張燕妮 來源: 數倉寶貝庫
相關推薦

2020-11-30 08:34:44

大數據數據分析技術

2022-10-14 18:22:18

KafkaHiveZooKeeper

2021-06-29 11:21:41

數據安全網絡安全黑客

2022-01-05 18:27:44

數據挖掘工具

2022-04-22 11:26:55

數據管理架構

2022-04-12 18:29:41

元數據系統架構

2020-08-17 08:17:00

大數據人工智能技術

2022-03-15 17:12:03

大數據機器學習人工智能

2022-03-27 20:32:28

Knative容器事件模型

2021-10-09 00:02:04

DevOps敏捷開發

2021-06-13 12:03:46

SaaS軟件即服務

2022-06-26 18:52:02

Hadoop大數據系統

2022-06-21 11:14:51

大數據系統架構

2021-12-03 18:25:56

數據指標本質

2021-09-03 18:38:13

數據湖數據倉庫

2022-04-27 18:25:02

數據采集維度

2021-10-07 20:24:16

AIBI大數據

2022-04-18 07:37:30

數據信息知識

2020-10-29 06:09:37

數據中臺數據大數據

2022-05-09 20:23:51

數據采集
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美日韩成人在线观看 | caoporn视频在线 | 偷拍自拍网站 | 国产ts人妖一区二区三区 | 日韩一 | 免费看色| 国产黄色av网站 | 91精品国产综合久久婷婷香蕉 | 国产精品久久久久久中文字 | 久久精品99国产精品日本 | 亚洲一区日韩 | 日韩毛片| 天天综合永久 | 狠狠色综合久久丁香婷婷 | 国产精品1区 | 毛片一区二区三区 | 中文字幕在线一 | 午夜视频在线观看网站 | 国产精品日日做人人爱 | 视频三区| 日韩精品在线免费观看 | 日韩免费视频一区二区 | 91性高湖久久久久久久久_久久99 | 国产精品久久久久久婷婷天堂 | 欧美亚洲高清 | 日韩精品久久一区二区三区 | www.玖玖玖 | 极品久久| 蜜桃传媒av| 日本不卡高字幕在线2019 | av一区二区三区 | 伊人色综合久久久天天蜜桃 | 在线一区观看 | 日韩免费一区 | 国产精品伦理一区二区三区 | 欧美日韩不卡合集视频 | 久久91 | 国产精品久久久乱弄 | 国产精品一区二区精品 | 在线观看中文字幕视频 | 青青久在线视频 |