傳統(tǒng)的Apache Hadoop群集系統(tǒng)將計算和存儲資源緊密結(jié)合在一起,HDFS簡化了大容量數(shù)據(jù)存儲,同時面臨著以下幾個茄子挑戰(zhàn):
存儲空間或計算資源不足時,兩者可以同時擴(kuò)展。假設(shè)用戶對存儲資源的需求遠(yuǎn)遠(yuǎn)大于對計算資源的需求,同時擴(kuò)展計算和存儲將浪費(fèi)新擴(kuò)展的計算資源,反之,將浪費(fèi)存儲資源。
這降低了擴(kuò)展的經(jīng)濟(jì)效率,增加了額外成本。獨(dú)立擴(kuò)展的計算和存儲更靈活,但可顯著降低成本。
目前采用Hadoop牙齒存儲分離式體系結(jié)構(gòu)的趨勢越來越明顯。
Xsky HDFS客戶端是XEOS存儲群集和Hadoop計算群集的連接器。Hadoop應(yīng)用程序可以通過xsky HDFS客戶端訪問存儲在XEOS中的所有數(shù)據(jù)。
但是,引入XEOS存儲可能會導(dǎo)致現(xiàn)有HDFS和XEOS共存。如何同時利用兩個存儲群集是一個需要解決的問題。
01在群集之間復(fù)制數(shù)據(jù)
通常,如果計算應(yīng)用程序需要訪問的數(shù)據(jù)存儲在另一個群集上,則必須將數(shù)據(jù)從一個群集復(fù)制到另一個群集。通常,使用Hadoop附帶的DistCp工具在群集之間復(fù)制數(shù)據(jù)。
牙齒方法可以在一定程度上解決數(shù)據(jù)合并問題,但是如果數(shù)據(jù)楊怡很多,機(jī)房帶寬有限,復(fù)制數(shù)據(jù)可能需要很長時間。另一種是,如果原始數(shù)據(jù)在復(fù)制過程中發(fā)生更改,則還必須考慮增量同步問題。
02聯(lián)邦HDFS和ViewFS
Hadoop 2.x發(fā)行版引入了聯(lián)邦HDFS功能,該功能預(yù)計可以解決NameNode的內(nèi)存問題。通過聯(lián)邦HDFS,系統(tǒng)可以通過添加多個NameNode(每個NameNode管理文件系統(tǒng)命名空間的一部分)進(jìn)行擴(kuò)展。
但是,實(shí)際應(yīng)用程序需要系統(tǒng)管理員維護(hù)多個NameNodes(所有NameNode都需要高可用性)和負(fù)載平衡服務(wù),從而增加了管理成本。因此,HDFS的聯(lián)邦方案沒有在生產(chǎn)環(huán)境中采用。
與聯(lián)邦HDFS解決方案一起,Hadoop 2.x提供了ViewFS以管理多個命名空間視圖。
聯(lián)邦HDFS解決方案不能大規(guī)模應(yīng)用,但ViewFS可以用于解決XEOS和HDFS的共存問題。
03視圖fs實(shí)施
ViewFS的全名為ViewFileSystem,它不是新的檔案系統(tǒng),而是實(shí)現(xiàn)標(biāo)準(zhǔn)Hadoop FileSystem接口的邏輯視圖檔案系統(tǒng)。但是,實(shí)際請求處理位于各自的物理存儲群集上。
ViewFS維護(hù)裝載表。主要是viewfs的邏輯目錄和實(shí)際主存儲的映射關(guān)系。當(dāng)收到應(yīng)用程序調(diào)用時,ViewFS解析用戶的訪問請求,mount-table查找其主存儲目錄,并將請求轉(zhuǎn)發(fā)到主存儲。
ViewFS透明地將所有應(yīng)用層的FileSystem調(diào)用傳遞到底層物理檔案系統(tǒng)。ViewFs實(shí)現(xiàn)了Hadoop文件系統(tǒng)接口,因此使用它透明地運(yùn)行Hadoop工具。例如,所有shell命令都可以將ViewFS與shell和本地檔案系統(tǒng)一起使用。
在群集的核心網(wǎng)站配置中,fs.defaultFS設(shè)置為視圖fs的根目錄,即指定的root-table。
掛載表的掛載點(diǎn)在標(biāo)準(zhǔn)Hadoop配置文件中指定。ViewFS中的所有mount-table配置項(xiàng)都帶有前綴“fs.viewfs.mounttable”,并使用“l(fā)ink”標(biāo)簽指定連接其他檔案系統(tǒng)的mount點(diǎn)。建議使用與Link文件系統(tǒng)目標(biāo)位置相同的mount點(diǎn)名稱。安裝表格中未配置的任何命名空間都可以透過linkFallback回復(fù)至預(yù)設(shè)檔案系統(tǒng)。
將ViewFS的mount-table配置添加到群集配置中。例如:
Hadoop系統(tǒng)在Hadoop配置文件中查找名為“ClusterX”的mount-table。如上例所示,在所有網(wǎng)關(guān)和服務(wù)器配置中包括“ClusterX”。
04ViewFS應(yīng)用程序節(jié)目方案
ViewFS可用于以下場景:
非結(jié)構(gòu)化遠(yuǎn)視數(shù)據(jù)可以通過DistCp等工具直接存儲在XEOS中,業(yè)務(wù)數(shù)據(jù)庫結(jié)構(gòu)化數(shù)據(jù)和應(yīng)用程序購買數(shù)據(jù)可以通過ETL作為Hive的外部表存儲在XEOS中。HBase和Hive繼續(xù)在現(xiàn)有HDFS上運(yùn)行。這意味著HBase表數(shù)據(jù)和Hive內(nèi)部表數(shù)據(jù)仍然通過HDFS存儲。
這一優(yōu)勢在于可以將大量非結(jié)構(gòu)化數(shù)據(jù),甚至大量小文件托管到XEOS上,從而減輕HBase的負(fù)擔(dān),同時Hive的所有新數(shù)據(jù)都通過XEOS存儲,后續(xù)擴(kuò)展容量只需擴(kuò)展XEOS存儲群集即可。
05XEOS配置ViewFS
大容量數(shù)據(jù)平臺基于CDH 6.3.2。HDFS core-site.xml添加以下配置:
Hadoop FS命令行:
Wordcount測試的運(yùn)行結(jié)果如下:
06摘要
XSKY通過ViewFS將現(xiàn)有HDFS數(shù)據(jù)與新XEOS數(shù)據(jù)相關(guān)聯(lián),解決了現(xiàn)有HDFS群集與新XEOS群集的共存問題,而不改變用戶使用習(xí)慣?,F(xiàn)有HDFS數(shù)據(jù)可以繼續(xù)使用,XEOS可以用于托管新創(chuàng)建的數(shù)據(jù)。
這種方式不僅能充分利用舊設(shè)備,還能達(dá)到降低成本的目的。此外,您還可以通過XEOS橫向擴(kuò)展功能單獨(dú)擴(kuò)展存儲。