20世紀(jì)90年代,每臺應(yīng)用服務(wù)器往往都擁有直接連接存儲(DAS)。創(chuàng)建存儲區(qū)域網(wǎng)絡(luò)(SAN),是為了提供共享的存儲池,以獲得更大的規(guī)模和更高的效率。Hadoop逆轉(zhuǎn)了這股潮流,讓DAS重新流行起來。每個Hadoop集群都有自己的、橫向擴(kuò)展直接連接存儲。它有助于Hadoop管理數(shù)據(jù)局部性,但是犧牲了共享存儲的規(guī)模和效率。因此,如果你有Hadoop發(fā)行版的多個實例,就會有多個這種橫向擴(kuò)展的存儲孤島。
Hedvig公司的首席執(zhí)行官兼創(chuàng)始人阿維納什·拉克希曼(Avinash Lakshman)說:“我們遇到的最大挑戰(zhàn)就是,兼顧數(shù)據(jù)局部性與規(guī)模和效率。”
數(shù)據(jù)局部性是指確保大數(shù)據(jù)集存儲在執(zhí)行分析任務(wù)的計算資源附近。對于Hadoop來說,這就意味著管理數(shù)據(jù)節(jié)點(DataNode),而數(shù)據(jù)節(jié)點為MapReduce擁有足夠好的性能提供了存儲資源。它可以高效地工作,但是導(dǎo)致了另一個操作問題:大數(shù)據(jù)存儲孤島。本文介紹的這些要點有助于管理Hadoop環(huán)境中的大數(shù)據(jù)存儲。
1. 分散式存儲
集中式存儲作為傳統(tǒng)架構(gòu)已有一段時間。但是大數(shù)據(jù)其實并不適合集中存儲架構(gòu)。Infogix的金融服務(wù)行業(yè)(FSI)戰(zhàn)略和運營經(jīng)理森希爾·拉賈曼尼坎(Senthil Rajamanickam)表示,Hadoop旨在讓計算資源更接近數(shù)據(jù),同時充分利用HDFS文件系統(tǒng)的大規(guī)模橫向擴(kuò)展功能。
然而,解決Hadoop管理自有數(shù)據(jù)的低效問題的常見方法,一向是將Hadoop數(shù)據(jù)存儲在SAN上。而這帶來了性能和規(guī)模方面的一系列瓶頸?,F(xiàn)在,你的所有數(shù)據(jù)都通過集中式SAN控制器來處理,而控制器破壞了Hadoop的分布式、并行化的特性。你需要為多個數(shù)據(jù)節(jié)點管理多個SAN,或者將所有數(shù)據(jù)節(jié)點保存到一個SAN上。
拉克希曼說:“由于Hadoop是一種分布式應(yīng)用系統(tǒng),它應(yīng)該可以在分布式存儲上運行,那樣你的存儲保持與Hadoop本身一樣的彈性。這需要你積極采用軟件定義存儲方法,在商用服務(wù)器上運行,但是它比把Hadoop放在傳統(tǒng)SAN或NAS技術(shù)上高效得多,因為后者給Hadoop造成了瓶頸。
2. 超融合vs分布式
不過要小心,別將超融合與分布式混為一談。某些超融合方法是分布式的,但這個術(shù)語通常意味著你的應(yīng)用程序和存儲可以共同駐留在同一個計算節(jié)點上。解決數(shù)據(jù)局部性問題很誘人,但是這會造成嚴(yán)重的資源爭奪現(xiàn)象。 Hadoop應(yīng)用和存儲平臺將爭奪同樣的內(nèi)存和處理器資源。拉克希曼表示,最好在專用的應(yīng)用層上運行Hadoop,在專用的存儲層中運行分布式存儲,從而充分利用緩存和分層技術(shù),以解決數(shù)據(jù)局部性和網(wǎng)絡(luò)性能開銷。
3. 避免控制器阻塞點
他強(qiáng)調(diào)了做到這一點的一個重要方面――避免通過單一(或可能兩個)點(比如傳統(tǒng)控制器)來處理數(shù)據(jù)。通過改而確保存儲平臺并行化,就能顯著提高性能。
此外,這種方法提供了增量可擴(kuò)展性。為數(shù)據(jù)湖添加容量就跟添加幾臺內(nèi)置閃存或旋轉(zhuǎn)磁盤的x86服務(wù)器一樣簡單。分布式存儲平臺可在必要時自動添加容量、重新均衡數(shù)據(jù)。
4. 重復(fù)數(shù)據(jù)刪除和壓縮
駕馭大數(shù)據(jù)的一個關(guān)鍵部分是重復(fù)數(shù)據(jù)刪除和壓縮。Hedvig看到常見的大數(shù)據(jù)集可以縮減70%-90%。在PB級規(guī)模下,這意味著可節(jié)省數(shù)萬美元的磁盤成本。
拉克希曼說:“現(xiàn)代平臺提供了內(nèi)聯(lián)式(而不是處理后)重復(fù)數(shù)據(jù)刪除和壓縮。這意味著,如果不先以某種方式來縮減數(shù)據(jù),數(shù)據(jù)永遠(yuǎn)不會進(jìn)入到磁盤,這大大減少了存儲數(shù)據(jù)所需的容量。”
5. 整合Hadoop發(fā)行版
許多大組織都有多個Hadoop發(fā)行版??赡苁怯捎陂_發(fā)人員需要訪問多個“版本”,或者業(yè)務(wù)部門久而久之采用了不同的版本。不管怎樣,IT總部常常最終負(fù)責(zé)這些集群的日常維護(hù)和操作。大數(shù)據(jù)數(shù)量真正開始影響業(yè)務(wù)時,存在多個Hadoop發(fā)行版會導(dǎo)致效率低下。
拉克希曼說:“你可以創(chuàng)建一個單一、經(jīng)過重復(fù)數(shù)據(jù)刪除的壓縮數(shù)據(jù)湖,然后它可以為Hadoop的多個實例提供數(shù)據(jù),從而獲得數(shù)據(jù)效率。”
6. 對Hadoop虛擬化處理
虛擬化技術(shù)在企業(yè)界刮起了一場風(fēng)暴。在許多地方,如今超過80%的物理服務(wù)器已虛擬化。不過由于性能和數(shù)據(jù)局部性問題,許多人避免了對Hadoop進(jìn)行虛擬化處理。
拉克希曼說:“你可以對Hadoop或Spark進(jìn)行虛擬化處理。”