王利卿++張華敏
摘要:隨著分布式存儲的廣泛應(yīng)用,分布式的冗余機制也越來越受關(guān)注。該文使用馬爾可夫鏈模擬系統(tǒng)的集群狀態(tài),對典型的HDFS分布式存儲的冗余做了詳細的研究和分析,并由數(shù)學(xué)模型計算出系統(tǒng)的失效率。在保證系統(tǒng)數(shù)據(jù)安全的情況下,得出一個合理的數(shù)據(jù)備份數(shù)目。并且從理論和試驗中證明了該設(shè)計可以達到預(yù)期的效果。
關(guān)鍵詞: 數(shù)據(jù)庫;大數(shù)據(jù);分布式存儲;HDFS
中圖分類號:TP311 文獻標識碼:A 文章編號:1009-3044(2016)19-0001-02
近年來,在大數(shù)據(jù)的環(huán)境下,數(shù)據(jù)的存儲出現(xiàn)了許多新的需求,關(guān)于數(shù)據(jù)的可靠性已經(jīng)越來越被受到重視,所以數(shù)據(jù)的冗余已經(jīng)成為研究的熱點?,F(xiàn)在的系統(tǒng)都是大規(guī)模并且需要時長時間穩(wěn)定運行的,而信息的數(shù)量和可靠性正是現(xiàn)在大多是企業(yè)所要面臨的問題和挑戰(zhàn),這就需要對系統(tǒng)的數(shù)據(jù)冗余程度的可靠性進行詳細的分析和研究。而冗余的策略中備份數(shù)據(jù)的數(shù)目和系統(tǒng)的可靠性密切相關(guān),如果設(shè)置太少,就會發(fā)生在突發(fā)情況下數(shù)據(jù)的丟失和不易恢復(fù),如果備份設(shè)置太多,就會造成存儲成本的提高和資源的利用不合理。將分布式存儲系統(tǒng)建立模型,然后分析HDFS的冗余機制,在保證系統(tǒng)的可靠性的前提下,得出一個合理的備份數(shù)目。
1 分布式存儲系統(tǒng)冗余模型
分布式存儲的可靠性是通過數(shù)據(jù)的冗余和存儲節(jié)點的協(xié)作來保證的。分布式存儲系統(tǒng)中的冗余機制可以調(diào)高數(shù)據(jù)的可靠性和系統(tǒng)的高可用性。是把同一數(shù)據(jù)存儲在多不同的節(jié)點實現(xiàn)數(shù)據(jù)的可用性,就算是個別節(jié)點的數(shù)據(jù)丟失,剩余其他的節(jié)點也可以重構(gòu)原有數(shù)據(jù),其原理如圖1所示。
復(fù)制是最簡單的數(shù)據(jù)冗余策略。是將一個文件復(fù)制成多個備份然后分別存儲到系統(tǒng)其他不同節(jié)點,一旦發(fā)生數(shù)據(jù)丟失,只要其中一個節(jié)點有備份,就可以完整的得到數(shù)據(jù)。一般來說,如果文件的復(fù)制的備份數(shù)目越多,數(shù)據(jù)的可用性和可靠性就越高。但是往往隨著備份的數(shù)目的增加,會造成硬盤利用率的下降,由于增加了數(shù)據(jù)的備份,也間接的調(diào)高了讀寫效率[1]。備份數(shù)目對系統(tǒng)的可用性影響很大,如果創(chuàng)建的太少就會發(fā)生數(shù)據(jù)丟失并且會造成數(shù)據(jù)熱點,如果設(shè)置的太多則會造成存儲成本的提高和磁盤空間的浪費。HDFS復(fù)制的默認數(shù)據(jù)備份數(shù)是3份,即在數(shù)據(jù)寫入的時候,系統(tǒng)就會默認的復(fù)制成三份,然后根據(jù)一個備份機制分別存在不同的節(jié)點[2]。關(guān)于備份數(shù)目的影響因素:可以手動調(diào)整備份數(shù)目;備份所在節(jié)點存儲空間不夠就會發(fā)生備份塊的丟失;如果備份的默認數(shù)目是3,但是節(jié)點數(shù)目低于3,就會發(fā)生數(shù)據(jù)快的備份數(shù)目不夠的情況,一般來說,HDFS的三份備份需要得三個節(jié)點。
分布式存儲復(fù)制冗余的數(shù)據(jù)的結(jié)構(gòu)與數(shù)據(jù)修復(fù)過程如圖所示,圖1中文件復(fù)制成S個備份,圖2則顯示即使有S-1個節(jié)點的數(shù)據(jù)失效,也能重構(gòu)原文件。
所有的數(shù)據(jù)按照固定大小(默認的是64M或者是128M)劃分成block,稱為基本塊,然后各節(jié)點會自動的再進行備份,得到的數(shù)據(jù)稱為備份塊。
圖3就是HDFS分布式存儲系統(tǒng)的一個基本框架,圖中綠色的數(shù)據(jù)塊表示基本塊,白色的數(shù)據(jù)塊表示備份塊,客戶端1在讀取數(shù)據(jù)塊1的時候,會優(yōu)先請求節(jié)點 1 提供的1的基本塊,只有在讀取失敗后才會委托節(jié)點1提取在節(jié)點2,3,4中的備份塊??蛻舳?寫入文件 2,首先會在節(jié)點3寫入基本塊3,由節(jié)點3將基本塊復(fù)制將備份存儲在其他節(jié)點上。分布式存儲系統(tǒng)包含許多能復(fù)制數(shù)據(jù)的存儲節(jié)點,如果這些節(jié)點都是足夠可靠,則整個系統(tǒng)就是可靠的[3]。而使用的HDFS就是默認的有三個備份,但是系統(tǒng)某些節(jié)點總會發(fā)生意外,出現(xiàn)故障,會從集群中撤離。對于撤離的節(jié)點,系統(tǒng)不再能從這些節(jié)點獲得任何數(shù)據(jù),如果只是一臺發(fā)生故障,還不會影響整個集群,但是同時有多臺服務(wù)器發(fā)生故障[4],就可能發(fā)生數(shù)據(jù)丟失的后果。一般來說,如果我們要對系統(tǒng)升級,一般會滾動重啟,要么也是逐個節(jié)點數(shù)據(jù)轉(zhuǎn)移下線,然后升級再上線[5]。
集群的節(jié)點一般有三種狀態(tài),即在線、離線和死亡,分別用狀態(tài)1、狀態(tài)2和狀態(tài)3表示,用包含這三種狀態(tài)的馬爾可夫鏈來模擬整個集群。假設(shè)單個節(jié)點都是從狀態(tài) 1開始,一般都是狀態(tài)1和狀態(tài)2的互相轉(zhuǎn)換,最壞的狀態(tài)是狀態(tài)3。狀態(tài)變換圖如圖4所示:
節(jié)點的在線時間t,離線時間都滿足指數(shù)分布[6]。
使用馬爾可夫鏈模擬[7]整個系統(tǒng)。假設(shè)在某個時間點,總共有n個備份,有k個可用備份,而剩下的n-k個備份是需要修復(fù)的。如果此時的系統(tǒng)有k個可用備份塊,定義此時的系統(tǒng)狀態(tài)為k,若k個可用備份中任何一個失效則系統(tǒng)轉(zhuǎn)為狀態(tài)k-1,如果n-k個待修復(fù)備份中任何一個被修復(fù)則系統(tǒng)轉(zhuǎn)為狀態(tài)k+1。
以下的圖5模型是一個連續(xù)馬爾可夫鏈,此時的系統(tǒng)有n個備份,定義系統(tǒng)節(jié)點是小的概率是kλ,定義系統(tǒng)節(jié)點修復(fù)的概率是(n-k)。狀態(tài)0為起始態(tài),表明沒有任何可用備份,系統(tǒng)失效。
假定分布式存儲系統(tǒng)節(jié)點數(shù)目是i個,那么i個節(jié)點上的備份全部失效的概率(也就是系統(tǒng)完全失效的概率):
得到了i個副本全部失效的情況下系統(tǒng)失效的概率公式,這也是從理論上分析了系統(tǒng)的失效率。
2 實驗驗證
為進一步驗證數(shù)據(jù)備份的數(shù)目和系統(tǒng)的高可靠性和高可用性之間的關(guān)系,文中使用分布式系統(tǒng)HDFS進行仿真實驗。實驗的主要參數(shù)如表1所示:
用HDFS做一個簡單實驗,默認情況下HDFS存在三個備份,冗余度為3,上傳一個文件128M*16,也就是說這個文件分成了16個塊,存放在集群上。假設(shè)如果有任意一個節(jié)點能ping到該節(jié)點則表示它在線,反之則表示它離線。現(xiàn)在開始研究備份數(shù)目和節(jié)點失效率這兩個因素對系統(tǒng)的可靠性的影響。分別在節(jié)點宕機率為0.01和0.05和0.1的情況下,用副本數(shù)目分別是2、3、4來測試集群的失效率,表2是數(shù)據(jù)的失效率與備份的數(shù)目和單機大宕機率之間的關(guān)系。
從表中發(fā)現(xiàn),備份得數(shù)目比較多的時,數(shù)據(jù)的可靠性就會大一點,目前大家把e-10作為一個界限,當系統(tǒng)的失效率低于這個值時,就是可以接受的,所有在宕機率一般為0.05左右,三份備份數(shù)據(jù)就是一個合理的備份,這也是HDFS默認的備份數(shù)目是3的原因。如果備份太多,就會造成硬盤的浪費,所以選取合適的備份數(shù)目,才能在保證系統(tǒng)的可靠性的基礎(chǔ)上保證系統(tǒng)的可用性。
3 總結(jié)
為了權(quán)衡系統(tǒng)的高可用性和高可靠性,就要對分布式存儲的冗余策略做一個詳細的分析和研究。文中使用馬爾可夫鏈模擬分布式系統(tǒng)的集群狀態(tài),然后使用數(shù)學(xué)手段計算推導(dǎo)系統(tǒng)的失效率。使用HDFS來測試節(jié)點的宕機率與數(shù)據(jù)的失效率成正比,數(shù)據(jù)的備份數(shù)與數(shù)據(jù)的失效率成反比,一般來說,數(shù)據(jù)備份數(shù)目3是一個合理的值。
參考文獻:
[1] TOM White Hadoop權(quán)威指南[M].清華大學(xué)出版社,2015.
[2] http://www.e-gov.org.cn/xinxihua/news08/201311/145690.html
[3] Jing Tian, Zhi Yang and Yafei Dai, A Data Placement Scheme with Time-Related Model for P2P Storages,Proceeding of Seventh International Conference on Peer-to-Peer Computing, 2007.
[4] 馬延輝,HBase企業(yè)應(yīng)用開發(fā)實踐[M].機械工業(yè)出版社,2014.
[5] Lars George HBase權(quán)威指南[M].人民郵電出版社,2013.
[6] Weatherspoon H, Chun Byung-Gon, So Chiu Wah, et al. Long-term data maintenance in wide-area storage systems: a quantitative approach[R]. Berkeley USA: University of California, 2005.
[7] 楊傳輝,大規(guī)模分布式存儲系統(tǒng)原理解析與架構(gòu)實踐[M].機械工業(yè)出版社,2013.