首頁 > 新聞 > 國內(nèi) >

探秘浪潮大數(shù)據(jù)一體機的存儲高招

2015-01-05 09:36:19   作者:   來源:CTI論壇   評論:0  點擊:


  大數(shù)據(jù)由于與智慧城市、物聯(lián)網(wǎng)、移動互聯(lián)等前景廣闊的項目息息相關(guān),成為時下最炙手可熱的IT技術(shù)。在此背景下,眾多的IT廠商紛紛推出基于Hadoop的大數(shù)據(jù)一體機,力圖表明已經(jīng)做好準備迎接大數(shù)據(jù)時代。不過,大部分IT廠商談及的幾乎都是產(chǎn)品特點和市場表現(xiàn),一旦涉及具體的技術(shù)細節(jié)都深藏不露,例如近年來,Erasure Code作為可有效提升存儲效率、安全性和便捷性的新興存儲技術(shù),備受IT和互聯(lián)網(wǎng)業(yè)界青睞,但卻對此技術(shù)秘而不宣。近日,筆者有機會近距離接觸到浪潮云海大數(shù)據(jù)一體機SDA60000,對Erasure Code在這款產(chǎn)品中的應(yīng)用細節(jié)探了一回究竟。

  眾所周知,Hadoop之所以問世,很大一部分原因是為了解決數(shù)據(jù)的分布式存儲問題。由此可見,存儲在整個Hodoop體系下的地位有多么重要。SDA60000作為一款面向大數(shù)據(jù)分析、處理的軟硬一體化產(chǎn)品,在存儲方面做了針對性的設(shè)計:硬件上使用了大容量的SATA硬盤,單機柜可提供700TB以上的裸容量;軟件方面,部署了浪潮在開源Hadoop基礎(chǔ)上做了深度優(yōu)化后的浪潮云谷一體機系統(tǒng)軟件,通過HDFS文件系統(tǒng)實現(xiàn)對海量數(shù)據(jù)的快速存儲。這其中,Erasure code的巧妙使用,使得HDFS的存儲機制得到了進一步改良。

  Erasure Code:互聯(lián)網(wǎng)巨頭們的“最愛”

  Erasure Code 最早是無線通信中有噪信道編碼的一種,也叫糾刪碼。Erasure Code設(shè)計的初衷,是希望利用這項技術(shù)將數(shù)據(jù)分割成不可識別的數(shù)據(jù)塊,使用額外的信息追加到每個數(shù)據(jù)塊中,允許從一些數(shù)據(jù)塊的子集就可以復(fù)原完整的數(shù)據(jù)集,數(shù)據(jù)塊可以分布在一個數(shù)據(jù)中心、城市、地區(qū)或全球任何地方的不同存儲位置。這種方式將大大提升數(shù)據(jù)存儲的便利性和安全性。

  從某種程度而言,Erasure Code 是對RAID 5 算法的改良和優(yōu)化。最常見的Erasure Code是Reed Solomon算法。如圖1所示,假設(shè)總共有n塊數(shù)據(jù),其中k塊用來存放數(shù)據(jù),m塊用來存儲erasure編碼(k+m=n),只要壞掉的數(shù)據(jù)塊數(shù)量不超過m塊,都可以通過erasure編碼將其余的恢復(fù)出來。也就是說,通常k+m的erasure編碼,能容m塊數(shù)據(jù)故障的場景,這時候的存儲成本是1+m/k,通常m<k。因此,通過erasure編碼,我們能夠把副本數(shù)降到1.x。

  圖1 Reed Solomon Erasure Code 算法

  當(dāng)前,Microsoft、Google、Facebook、Amazon、淘寶等互聯(lián)網(wǎng)巨頭早已開始研究Erasure code編碼存儲技術(shù),并將其實際應(yīng)用到各自主流存儲系統(tǒng)中。

  Google GFS II中采用了最基本的RS(6,3)編碼,將一個待編碼數(shù)據(jù)單元(Data Unit)分為6個數(shù)據(jù)塊(data block),再添加3個校驗塊(parity block),最多可容包括校驗塊在內(nèi)的任意3個數(shù)據(jù)塊錯誤。

  微軟在其云存儲平臺Windows Azure Storage中將校驗塊分為全局校驗塊、局部校驗塊。當(dāng)發(fā)生任何一個數(shù)據(jù)塊錯誤時,恢復(fù)代價由傳統(tǒng)RS(12,4)編碼的12(通過網(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù)塊數(shù)量),變?yōu)?,恢復(fù)過程的網(wǎng)絡(luò)I/O開銷減半。

  Facebook HDFS RAID的早期編碼方式是RS(10,4),為減少數(shù)據(jù)恢復(fù)的網(wǎng)絡(luò)I/O,F(xiàn)acebook于VLDB 2013發(fā)表名為“XORing Elephants”的LRC編碼方法,除了在原先的10個數(shù)據(jù)塊之后添加4個校驗塊外,還將10個數(shù)據(jù)塊均分為2組,每組單獨計算出一個局部校驗塊,將數(shù)據(jù)恢復(fù)代價由原來的10降低為5。

  采眾家之長 浪潮SDA60000中的Erasure Code

  當(dāng)然,天下沒有免費的午餐,HDFS Erasure Code在提升存儲空間利用率的同時,由于數(shù)據(jù)校驗塊的計算需要額外的CPU時間,加上完整的數(shù)據(jù)塊只有一份,在高并發(fā)讀取時效果不理想。故此,應(yīng)用Erasure Code需根據(jù)數(shù)據(jù)量和性能需求制定有針對性的策略:對于數(shù)據(jù)量大,存儲空間緊張,訪問頻度低的數(shù)據(jù)采用Erasure Code方式。

  浪潮云海大數(shù)據(jù)一體機SDA60000借鑒了各大廠商的研發(fā)和優(yōu)化經(jīng)驗,采用Erasure code對HDFS的存儲機制進行改良,它采用的RS因子為RS(10,4),即為每10個數(shù)據(jù)塊生成4個校驗塊,每個集群可容忍最多4個節(jié)點失效,數(shù)據(jù)冗余度為1.4。通過Erasure code技術(shù),SDA60000在保證了數(shù)據(jù)容錯的基礎(chǔ)上大幅提升了存儲空間利用率。

  圖2 SDA60000 Erasure Code 策略

  如圖2所示,浪潮云海大數(shù)據(jù)一體機SDA60000可為HDFS的每一個目錄制定靈活的Erasure Code策略,通過制定RAID間隔,SDA 60000可以實時偵測特定目錄中數(shù)據(jù)的冷熱程度,當(dāng)系統(tǒng)發(fā)現(xiàn)某些數(shù)據(jù)在很長一段時間沒有被訪問時,自動將底層的存儲機制從默認的三副本轉(zhuǎn)化為Erasure Code,以提升文件系統(tǒng)的空間利用率。

  在實際應(yīng)用中HDFS Erasure Code功能非常適合海量歷史數(shù)據(jù)的存儲,是圖片視頻數(shù)據(jù),音頻數(shù)據(jù)和日志數(shù)據(jù)理想的動態(tài)歸檔方案,在政府、公安、醫(yī)療和科研等行業(yè)具有廣泛的應(yīng)用前景。

  相對于傳統(tǒng)的業(yè)務(wù)系統(tǒng),大數(shù)據(jù)分析系統(tǒng)對于數(shù)據(jù)可用性和數(shù)據(jù)處理性能要求更為苛刻,浪潮云海大數(shù)據(jù)一體機將進一步發(fā)揮其軟硬件一體的優(yōu)勢,一方面,優(yōu)化軟件算法并針對硬件情況調(diào)優(yōu)參數(shù),另一方面,借助于浪潮強大的硬件研發(fā)能力,通過FPGA(Field-Programmable Gate Array)加速卡,SSD緩存加速等技術(shù)加速編碼速度,提升磁盤IO性能。

  浪潮是領(lǐng)先的云數(shù)據(jù)產(chǎn)品及方案供應(yīng)商,目前已全面涉足軟件定義數(shù)據(jù)中心,強調(diào)以硬件重構(gòu)和軟件定義相結(jié)合的融合架構(gòu),來實現(xiàn)數(shù)據(jù)中心所有資源的全虛擬化、全自動化,更好的滿足大數(shù)據(jù)、云計算應(yīng)用對IT基礎(chǔ)架構(gòu)的要求。浪潮云海大數(shù)據(jù)一體機SDA60000作為一款融合架構(gòu)產(chǎn)品,將是未來軟件定義數(shù)據(jù)中心支撐平臺的重要選擇之一。

分享到: 收藏

專題