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