域名預(yù)訂/競(jìng)價(jià),好“米”不錯(cuò)過(guò)
在傳統(tǒng)的Apache Hadoop集群系統(tǒng)中,計(jì)算和存儲(chǔ)資源是緊密耦合的,HDFS為大數(shù)據(jù)存儲(chǔ)帶來(lái)便利的同時(shí),也面臨著一些挑戰(zhàn):
當(dāng)存儲(chǔ)空間或計(jì)算資源不足時(shí),只能同時(shí)對(duì)兩者進(jìn)行擴(kuò)容。假設(shè)用戶對(duì)存儲(chǔ)資源的需求遠(yuǎn)大于對(duì)計(jì)算資源的需求,那么同時(shí)擴(kuò)容計(jì)算和存儲(chǔ)后,新擴(kuò)容的計(jì)算資源就被浪費(fèi)了,反之,存儲(chǔ)資源被浪費(fèi)。
這導(dǎo)致擴(kuò)容的經(jīng)濟(jì)效率較低,額外增加成本。而獨(dú)立擴(kuò)展的計(jì)算和存儲(chǔ)則更加靈活,同時(shí)可顯著降低成本。
現(xiàn)在Hadoop采用存算分離的架構(gòu)的趨勢(shì)越來(lái)越明顯。
XSKY HDFS Client是為XEOS存儲(chǔ)集群和Hadoop計(jì)算集群量身打造的連接器。通過(guò)XSKY HDFS Client,Hadoop應(yīng)用可以訪問(wèn)存儲(chǔ)在XEOS中的所有數(shù)據(jù)。
但是,在引入XEOS存儲(chǔ)后,會(huì)出現(xiàn)原有HDFS與XEOS共存的情況,如何將兩套存儲(chǔ)集群都利用起來(lái)是需要解決的問(wèn)題。
01數(shù)據(jù)跨集群拷貝
一般情況下,計(jì)算應(yīng)用需要訪問(wèn)的數(shù)據(jù),如果保存在不同的集群中,那么應(yīng)該將其中一個(gè)集群的數(shù)據(jù)拷貝到另一個(gè)集群上。一般情況下使用Hadoop自帶的DistCp工具,對(duì)數(shù)據(jù)進(jìn)行跨集群的拷貝。
這種方式雖然在一定程度上可以解決數(shù)據(jù)合并的問(wèn)題,但如果數(shù)據(jù)量比較大,并且機(jī)房帶寬有限制的情況下,可能拷貝數(shù)據(jù)的時(shí)間會(huì)非常長(zhǎng)。還有一個(gè)就是在拷貝過(guò)程中原始數(shù)據(jù)發(fā)生改動(dòng),就還需要考慮增量同步的問(wèn)題。
02聯(lián)邦HDFS和ViewFS
在Hadoop 2.x發(fā)行版中引入了聯(lián)邦HDFS功能,期望可以解決NameNode的內(nèi)存問(wèn)題。聯(lián)邦HDFS允許系統(tǒng)通過(guò)添加多個(gè)NameNode來(lái)實(shí)現(xiàn)擴(kuò)展,其中每個(gè)NameNode管理文件系統(tǒng)命名空間中的一部分。
但是,在實(shí)際應(yīng)用中,系統(tǒng)管理員需要維護(hù)多個(gè)NameNodes(所有NameNode都需要高可用)和負(fù)載均衡服務(wù),這又增加了管理成本。所以HDFS的聯(lián)邦方案并沒(méi)有被生產(chǎn)環(huán)境所采用。
在提供聯(lián)邦HDFS方案同時(shí),Hadoop 2.x還提供了ViewFS,用來(lái)管理所有多個(gè)命名空間視圖。
雖然聯(lián)邦HDFS方案并沒(méi)有被大規(guī)模應(yīng)用,但ViewFS卻可以用來(lái)解決XEOS與HDFS共存問(wèn)題。
03ViewFS的實(shí)現(xiàn)
ViewFS全稱是ViewFileSystem,它不是一個(gè)新的文件系統(tǒng),只是邏輯上的一個(gè)視圖文件系統(tǒng),它實(shí)現(xiàn)了標(biāo)準(zhǔn)的Hadoop FileSystem接口。但是,真實(shí)的請(qǐng)求處理還是在各自真實(shí)的存儲(chǔ)集群上。
ViewFS會(huì)維護(hù)一個(gè)mount-table,主要是viewfs的邏輯目錄與實(shí)際底層存儲(chǔ)的映射關(guān)系。在接收到應(yīng)用的調(diào)用時(shí),ViewFS會(huì)解析用戶的訪問(wèn)請(qǐng)求,并通過(guò)mount-table找到對(duì)應(yīng)的底層存儲(chǔ)目錄,轉(zhuǎn)發(fā)相應(yīng)的請(qǐng)求到底層存儲(chǔ)。
ViewFS會(huì)把所有應(yīng)用層的FileSystem調(diào)用透?jìng)鞯降讓诱鎸?shí)文件系統(tǒng)中。由于ViewFs實(shí)現(xiàn)了Hadoop文件系統(tǒng)接口,因此使用它透明地運(yùn)行Hadoop工具。例如,所有shell命令都可以與HDFS和本地文件系統(tǒng)一起使用ViewFS。
在集群的core-site配置中,fs.defaultFS被設(shè)置為ViewFS的root目錄,也就是指定的mount-table。
掛載表的掛載點(diǎn)在標(biāo)準(zhǔn)Hadoop配置文件中指定。ViewFS的所有mount-table配置條目均以“fs.viewfs.mounttable”為前綴,使用“link“標(biāo)記指定鏈接其他文件系統(tǒng)的mount點(diǎn)。建議使用與“link”文件系統(tǒng)目標(biāo)位置相同的mount點(diǎn)名稱。對(duì)于未在安裝表中配置的所有名稱空間,我們可以通過(guò)linkFallback將它們回退到默認(rèn)文件系統(tǒng)。
在集群的配置中增加ViewFS的mount-table配置,示例如下:
Hadoop系統(tǒng)將在Hadoop配置文件中查找名稱為 “ClusterX” 的mount-table。將所有g(shù)ateway和server配置包含“ClusterX”,如上示例。
04ViewFS的應(yīng)用場(chǎng)景
ViewFS可以在如下場(chǎng)景中使用:
非結(jié)構(gòu)化的原始數(shù)據(jù)可以通過(guò)DistCp等工具直接存儲(chǔ)在XEOS上,業(yè)務(wù)數(shù)據(jù)庫(kù)結(jié)構(gòu)化數(shù)據(jù)和應(yīng)用買點(diǎn)數(shù)據(jù)可以通過(guò)ETL以Hive的外部表方式存儲(chǔ)到XEOS中。HBase和Hive繼續(xù)在原有的HDFS上面運(yùn)行,也就是HBase表數(shù)據(jù)和Hive內(nèi)部表數(shù)據(jù)仍然通過(guò)HDFS來(lái)存儲(chǔ)。
這樣的好處是海量非結(jié)構(gòu)化數(shù)據(jù),甚至是海量小文件都可以用XEOS來(lái)承載,減輕HBase的壓力,同時(shí)Hive新增數(shù)據(jù)全部通過(guò)XEOS來(lái)存儲(chǔ),后續(xù)擴(kuò)容容量?jī)H擴(kuò)展XEOS存儲(chǔ)集群即可。
05XEOS配置ViewFS
大數(shù)據(jù)平臺(tái)基于CDH 6.3.2。HDFS core-site.xml 增加如下配置:
Hadoop FS命令行:
執(zhí)行wordcount測(cè)試結(jié)果如下:
06小結(jié)
XSKY通過(guò)ViewFS的方式,在不改變用戶使用習(xí)慣的前提下,將原有HDFS數(shù)據(jù)與新增XEOS數(shù)據(jù)打通,解決了原有HDFS集群與新XEOS集群的共存問(wèn)題。原有的HDFS數(shù)據(jù)可以繼續(xù)使用,而XEOS可以用于承載新生成的數(shù)據(jù)。
這種方式不僅可以充分利用舊有設(shè)備,達(dá)到節(jié)約成本的目的。同時(shí),能夠借助XEOS橫向擴(kuò)展能力,實(shí)現(xiàn)存儲(chǔ)單獨(dú)擴(kuò)容。
申請(qǐng)創(chuàng)業(yè)報(bào)道,分享創(chuàng)業(yè)好點(diǎn)子。點(diǎn)擊此處,共同探討創(chuàng)業(yè)新機(jī)遇!