HDFS的“聯(lián)邦”時(shí)代
最初Hadoop集群只允許有一個(gè)命名空間(Namespace),且只能被一個(gè)NameNode管理。
雖然可以通過(guò)添加底層DataNode節(jié)點(diǎn)實(shí)現(xiàn)集群橫向擴(kuò)展,增加存儲(chǔ)空間,但由于所有的Block元數(shù)據(jù)都駐留在NameNode內(nèi)存中,在集群規(guī)模增大時(shí),NameNode很容易成為瓶頸,直接限制了HDFS的文件、目錄和數(shù)據(jù)塊的數(shù)量。
Hadoop 社區(qū)為了解決 HDFS 橫向擴(kuò)展的問(wèn)題,做了兩個(gè)聯(lián)邦方案(如上圖):
早期的NNF方案中,集群引入了多個(gè)NameNode,分別管理不同的Namespace和對(duì)應(yīng)的BlockPool,多個(gè)NameNode可以共享Hadoop集群中的DataNode。
雖然解決了Namespace的擴(kuò)展問(wèn)題,但需要對(duì)HDFS的Client進(jìn)行“靜態(tài)”配置掛載,還要結(jié)合ViewFS才能實(shí)現(xiàn)統(tǒng)一入口。
而在RBF的聯(lián)邦方案中,嘗試把“掛載表”從Client中抽離出來(lái)形成了Router,雖然Hadoop集群是獨(dú)立的,但同時(shí)又增加了一個(gè)“State Store”組件,架構(gòu)變得更復(fù)雜。
局部改進(jìn)的“聯(lián)邦”方案對(duì)于面向未來(lái)的大數(shù)據(jù)存儲(chǔ)而言,治標(biāo)不治本。
青出于藍(lán)而勝于藍(lán)
有時(shí)候,最好的優(yōu)化就是另起爐灶。
畢竟Hadoop技術(shù)已經(jīng)很多年了,當(dāng)下的軟硬件環(huán)境已與當(dāng)初大不相同,系統(tǒng)重構(gòu)也在情理之中。
與其等別人來(lái)革HDFS的命,不如自我革命。目前看,Ozone的確給用戶(hù)提供了一個(gè)新選擇。
就好像CDH和HDP最終融合成了CDP一樣,HDFS和S3也可以融合成Ozone。
總之,Ozone站在Hadoop這個(gè)巨人的肩膀上,設(shè)計(jì)之初就是為了替換掉HDFS,青出于藍(lán)而勝于藍(lán)。
潭主家的“存儲(chǔ)一哥”
早年間接觸過(guò)Ceph,也搞過(guò)HCP(Hitachi Content Platform)對(duì)象存儲(chǔ),這些經(jīng)驗(yàn)對(duì)潭主理解Ozone大有裨益。
特意查了一下自家的HCP,發(fā)現(xiàn)影像文件已經(jīng)20多億個(gè)了,存儲(chǔ)容量也小2PB。不過(guò)查詢(xún)過(guò)程中明顯感覺(jué)到元數(shù)據(jù)響應(yīng)緩慢,估計(jì)快該擴(kuò)容了。
言歸正傳,再來(lái)說(shuō)說(shuō)Ozone的核心概念:
Ozone的存儲(chǔ)路徑為/Volume/Bucket/Key,一個(gè)業(yè)務(wù)可以對(duì)應(yīng)一個(gè)或多個(gè)Volume,每個(gè)Volume可以包含多個(gè)Bucket,在訪(fǎng)問(wèn)方式上Ozone實(shí)現(xiàn)了ofs和o3fs的適配和協(xié)議封裝。
值得注意的是,HCP里面有文件夾的概念,就是說(shuō)對(duì)象文件有層次結(jié)構(gòu),但Ozone在設(shè)計(jì)上是扁平的,目錄是一個(gè)“偽目錄”概念,是文件名的一部分,統(tǒng)一作為Key而存在。
Ozone的體系架構(gòu)
介紹完了概念,再看看Ozone的體系架構(gòu)(如上圖):
Ozone做了架構(gòu)優(yōu)化,上層實(shí)現(xiàn)職能分離,OM負(fù)責(zé)管理Namespace,SCM負(fù)責(zé)管理Storage Containers。
下層實(shí)現(xiàn)了一個(gè)叫Hadoop Distributed Data Store(HDDS)的高可用、塊存儲(chǔ)層。
Ozone中的一個(gè)DataNode包括多個(gè)Storage Container,每個(gè)SC的容量(默認(rèn)5GB,可配置)遠(yuǎn)大于Hadoop中Block容量(默認(rèn)128MB),這種設(shè)計(jì)使得每個(gè)DN發(fā)送給SCM的Container-Report系統(tǒng)壓力要遠(yuǎn)遠(yuǎn)小于傳統(tǒng)Hadoop集群的Block-Report。
Storage Container作為Ozone的基礎(chǔ)存儲(chǔ)和復(fù)制單元,類(lèi)似于一個(gè)“超級(jí)塊”,通過(guò)其內(nèi)置RocksDB(key記錄BlockID,Value記錄object的文件名、偏移量和長(zhǎng)度),實(shí)現(xiàn)對(duì)小文件的塊管理。
Ozone,新一代的“融合”數(shù)據(jù)湖存儲(chǔ)
在網(wǎng)上看到之前某互聯(lián)網(wǎng)大廠(chǎng)專(zhuān)家的分享,現(xiàn)網(wǎng)同時(shí)在使用HDFS和Ceph。
HDFS主要用于大數(shù)據(jù)分析場(chǎng)景,但機(jī)器學(xué)習(xí)場(chǎng)景中受限于大量小文件而使用Ceph。
不過(guò),在介紹Ozone的Roadmap時(shí)說(shuō)未來(lái)會(huì)在存儲(chǔ)層引入Ozone。
開(kāi)源世界,風(fēng)起云涌,前腳剛看過(guò)Alluxio,覺(jué)得眼前一亮,這會(huì)兒再看Ozone,更是金光閃閃。
Ozone既是Hadoop的優(yōu)化升級(jí)版,又能“分層”解決海量小文件的對(duì)象存儲(chǔ),再加上對(duì)云原生CSI的支持,讓其成為了新一代“融合”存儲(chǔ)。
Ozone這股新勢(shì)力著實(shí)讓潭主不敢小覷,希望未來(lái)能有機(jī)會(huì)做些實(shí)踐。
存儲(chǔ)圈,數(shù)據(jù)不息,折騰不止!