林穗,朱巖,楊有科
(1.廣東工業大學計算機學院,廣州 510006;2.廣東訊飛啟明科技發展有限公司,廣州 510530)
Hadoop云存儲策略的研究與優化
林穗1,朱巖1,楊有科2
(1.廣東工業大學計算機學院,廣州510006;2.廣東訊飛啟明科技發展有限公司,廣州510530)
隨著互聯網的日益普及以及分布式計算的快速發展,各種網絡業務生成了海量的數據信息,對于這些數據的存儲和處理將成為新時代的研究難題和研究重點。云計算的普及恰恰解決了這個問題,云計算因為其廉價實用的基礎架構成為越來越多公司存儲數據的首選。云計算是分布式計算、網絡存儲、虛擬化等傳統計算機技術和網絡技術發展融合的產物[1]。而作為云計算的核心技術之一,海量數據的存儲也是在這種背景下得到了很好的研究和發展。它的存儲方式是采用分布式存儲實現,從而能保證了可靠性、經濟性以及高可用性?,F在比較常用的云計算框架有Amazon的EC2,IBM的智慧云,Google的GFS,Apache的Hadoop云計算框架[4,6]。因為Hadoop是開源框架,且已經被很多大型的公司應用,如Facebook,亞馬遜,雅虎等,其技術已經趨于成熟,其存儲模塊HDFS更是被廣泛的研究和應用的熱點。

Hadoop框架是Apache開源基金組織旗下的一個在一般商用機器集群上運行分布式并行計算的開源框架,其核心設計思想是MapReduce和HDFS。MapReduce是Google提出的編程模型,用于大規模數據集的并行運算。它主要作用于對數據的處理,而它工作過程中會產生很多的中間數據,這些中間數據就被暫存在Hadoop的另一個重要組成部分——HDFS中。

HDFS(Hadoop Distributed File System)是一種分布式文件系統,有著高容錯性(fault-tolerent)的特點,并且被設計部署在低廉的硬件上,它提供高吞吐量來訪問應用程序的數據以適合那些有著大量數據集的應用程序。HDFS采用了主/從(Master/Slave)結構模型,即一個Master多個Slave,前者叫做名字節點(NameNode),后者叫數據節點(DateNode),在集群系統中一般一個節點就是一個DateNode組成,DataNode管理著該節點的存儲。HDFS支持傳統的層次文件結構,同現有的一些文件系統很類似,你可以創建或刪除一個文件,把一個文件從這個目錄遷移到另一個目錄,重命名文件等。
對于具體的文件數據來說,一個文件數據其實是被分割成一個一個的塊(HDFS中默認是64M)被存儲的。這些塊冗余存儲在DataNode集合數據里。NameNode在集群系統中扮演著總管理者的身份,HDFS系統中文件的目錄結構存儲在NameNode上。NameN-ode負責執行文件系統的Namespace管理工作,同時負責維護數據塊到具體DataNode的映射。客戶機的讀寫需求是通過DataNode節點響應,而DataNode在NameNode的統一管理下對數據塊進行創建、刪除、復制操作。
可靠而合理的對大規模數據進行存儲是Hadoop框架研究的重點。因為在HDFS中是有許多集群構架而成,節點眾多,而節點出現故障的可能性一直存在,為了避免個別節點失效而導致整個系統運行異常導致數據永久性丟失,HDFS采取了副本策略,將數據的多個副本存儲在集群中不同節點上,這樣當有節點失效時,系統仍然可以讀取數據。為了保證數據的安全性,數據的副本應該存儲在距離本節點較遠的機架上,但是由于MapReduce要對數據進行頻繁的操作,因而大量數據的移動會顯得影響運算的性能,所以數據存儲應當遵循本地性,即數據應存儲在距離運算節點較近的節點上,以減小數據移動所帶來的性能損耗。
針對這一問題,默認的HDFS系統采用了機架感知策略,即將數據塊的多個副本存放在本地機架的不同節點上,然后隨機選取一個遠端機架某一節點存儲另外一個副本。這樣當客戶發起讀取數據請求時就可以從本地節點讀取數據,且當本地節點失效時,就可以從遠端節點恢復數據。但是該策略在選取遠端節點所采用的隨機策略卻可能導致數據恢復時不必要的性能損失,且所隨機選取的節點可能會因為數據存儲量不同而導致數據負載不均衡。
在HDFS中系統默認的為數據存放三個副本,其默認的存放策略如圖1所示。
按照機架感知策略進行存放,保證了數據良好的本地性;另外一個副本存放在隨機選擇的遠端機架的一個節點上,保證了數據的安全性。如果還有更多的副本,則將其存放于在整個集群中隨機選取的節點。只有當整個本地節點失效時,HDFS才會通過復制遠端機架上的數據副本來恢復到標準的副本數量。

圖1 HDFS默認副本存儲示意
在HDFS默認的數據存放策略中,較好地平衡了數據的本地性和平衡性,但由于HDFS的集群框架由大量廉價設備所組成,系統中常常存在程序bug,操作系統崩潰,人為操作失誤等不可預知錯誤所導致的節點失效。這種情況時有發生,所以數據恢復是系統運行的常態。而數據恢復所占用的時間就成了影響整個系統性能的一個重要因素。因為其采用的是隨機選取遠端機架節點的策略,如果副本存放在較遠的機架上,當數據副本恢復時就會因為耗費過長的時間而造成整個系統的時間損失。另外,因為采用的是隨機選取遠端機架節點,可能在系統運行的過程中會出現有些節點存儲了很多數據而有的節點卻存儲很少數據,影響了數據的平衡性,當新的節點加入整個集群時這種情況尤其明顯。雖然在HDFS中提出了Balancer程序可以對各個節點進行相應的存儲負載平衡,但是在調用Balancer程序的時候,不會將數據中一個節點移動到另一個節點中,需要手動進行操作,且占用很大的網絡帶寬。
針對默認存儲策略的這些問題,對HDFS系統中數據副本個數以及節點的選擇進行研究,綜合考慮遠端網絡節點的距離,數據節點的負載均衡,副本數量個數的優化,可以提升HDFS系統的性能。

由于HDFS的默認數據副本存儲是3個,這種策略的使用會提高數據的可靠性同時也可以實現數據并發讀性能要求,但是若將全部的數據都按照3個副本的數量存儲的話,可能會造成存儲空間的浪費、系統性能的損失以及維護成本的提升。因為在整個集群中各個節點的網絡環境或者是硬件性能都有所差異,因此其各個節點的數據可用性不盡相同。據此根據數據節點的失效率、數據塊的可用性提出了一種基于概率模型的數據復制策略。
該策略的核心思想是:建立基于概率的數據復制優化模型。綜合考慮以上幾種問題,通過求解模型并在滿足數據可用性的要求下優化數據的復制個數。下面對這種模型做出具體的描述。
假設在Hadoop系統中有m個數據塊需要存儲在n個數據節點中。假設fi是數據節點的失效概率(0<i<n+1),預先對數據塊j的設計的復制個數為rj(0<j<m+ 1),概率事件P(Ni)表示節點i的可用性,用概率事件P(Bj)表示數據塊j的可用性,則其失效率(Bj),因為在系統中每個數據塊的復制份數為rj,且每個數據塊副本都存在各自獨立的數據節點上,因此數據塊Bj的失效率為:

假設一個文件F是由c個數據塊組成,且每個文件塊的存放相互獨立。則整個文件F的失效率為:

則此文件的可用性為:

我們假設希望數據的可用性是E,則理論上E應該滿足不等式:

這樣我們就可以提前預設一個數據的期望可用性E,并根約束不等式來計算出優化后的數據復制個數。為了保證整個系統數據的安全性,數據副本個數rj∈[2,4]。

根據HDFS默認的數據放置策略可知,在默認的副本個數即3個情況下,其中有一個副本是要安置在遠端機架上的某個節點,因為采取的隨機選擇策略,所選擇的遠端節點可能會距離本地節點較遠,從而影響數據復制或者恢復的效率。
因此,在選擇遠端節點進行副本存儲的時候綜合考慮節點所在網絡的帶寬,以及遠端節點與本地節點的距離。雖然根據公式(1)計算出的副本個數可能低于3,但是還是要確保一個副本存儲在遠端節點,這是為了保證數據的安全可靠性,這樣在本地機架發生故障的時候,仍然可以確保數據恢復成功。將數據存放在距離本地節點較近的機架上可以是數據的傳輸較快完成,從而提升數據存儲或恢復時的性能。另外,用來存放數據副本的存儲節點的負載應該保持一定的均衡,防止出現節點空轉或者節點負載過重的現象,提高節點的利用率。
NameNode選擇DataNode存儲數據副本的時候,可以綜合考慮這兩方面的因素,先從集群中選取一定數量的不同機架的DataNode,再獲取各個DataNode距離本地節點的距離信息和其本身的負載信息,結合這兩方面信息從而給出一個評價系數V,最后NameNode根據V的值選取合適的DataNode進行副本存儲,過程如圖2所示。

圖2 DataNode評價系數的選擇

如上面所說,對于每一個節點,都會根據其當前的負載信息和距離計算出一個評價系數V,其具體的計算公式可表示為:

其中l為節點的負載系數,與節點當前的存儲狀況成負比關系。d為節點的距離系數,反比與該DataNode與當前DataNode的距離。B表示平衡因子,B∈[0,1],反映在系統中與d的權重。B可由系統管理人員根據系統的負載要求和傳輸要求自行設置。
在Hadoop中距離的計算是將整個集群網絡看成是樹的結構,而兩個節點之間的距離就是這兩個節點分別到共同祖先節點的距離之和。同一個機架上的兩個節點距離是2,同一數據中心不同機架上的節點之間的距離為4,對于不同數據中心之間兩個節點之間的距離則要視情況而定。
整個改進放置策略的算法表示:
①當有新的數據塊到達要進行副本存儲。根據公式(1)計算出要存儲的副本個數C,根據副本存儲規則計算出所需要選取的遠端節點M的個數。
②如果已經選取的節點小于指定值N(N≤機架總數),并將已經選取的節點加入節點集nodeList,然后隨機選取節點randomNode。
③如果randomNode與nodeList中的任意節點都不在都一個機架上,那么將randomNode加入nodeList。遍歷nodeList,如果在nodeList中存在待評價的節點,對這些節點逐個計算評價系數V。
④將所有節點的V加入評價系數列表ValueList。
⑤將ValueList按降序排序。選擇V值最高的M個節點。其中M是所需要的遠端節點的個數,由C確定。
⑥返回這M個已經選取的節點。

采用的仿真平臺由5臺普通PC以及一臺客戶端PC組成的,其中一臺PC作為控制節點,另外四臺作為數據節點,基本配置如表1。整個仿真平臺運行在千兆內網內的,操作系統選用 Ubuntu 11.10 server,對Hadoop中六個配置文件進行配置,完成Hadoop平臺的整體部署。

表1 平臺機器配置

實驗選取不同規模的數據集,比較默認存儲策略與優化后的策略所需要的存儲時間。選擇的數據集大小是64M,96M,128M,256M,512M,768M,1G,分別設置評價系數為0.35和0.5,得到存儲時間綜合對比如圖3所示??梢钥吹?,當存儲數據規模較小時,改進策略比默認策略的存儲時間接近,性能改善并不明顯。但隨著存儲大規模數據時,改進策略因為其減少了不必要的數據傳輸時間和有效控制了副本個數,存儲時間隨著數據塊的增大而減緩增長,存儲性能的優勢逐漸體現。同時,設置的評價系數小即設置的網絡距離的權重高,存儲的時間也會隨之降低。改進策略通過用戶可配置的方式,讓用戶根據實際需要來設置評價系數,增加了用戶的體驗性。

圖3 存儲時間對比圖
云計算環境下的分布存儲主要研究數據在數據中心上的組織和管理,數據中心通常由百萬級以上節點組成,存儲其上的數據規模往往達到PB級甚至EB級,數據失效將會極大地限制了云計算的應用和推廣。因此,提高云存儲的可擴展性和容錯性成為關鍵。論文重點研究基于復制的容錯技術中的數據復制策略,包括副本的創建時機、副本的數量、副本的放置等問題。通過對副本個數的靈活性選擇,避免了不必要的數據復制;通過計算節點的評價系數,避免了數據傳輸及恢復時因為距離過遠導致的數據傳輸時間損失。實驗表明,隨著數據規模的增加,改進后的策略提高了系統的存儲性能。
[1]李喬,鄭嘯.云計算研究現狀綜述[J].計算機科學,2011,38(4):32-37.
[2]Tom Wbite.Hadoop權威指南[M].周敏奇,王曉玲,金澈清等譯.北京:清華大學出版社,2011.
[3]張興旺,李晨暉,秦曉珠.構建于廉價計算機集群上的云存儲的研究與初步實現[J].情報雜志,2011.30(11):166-172.
[4]秦秀磊,張文博,魏峻等.云計算環境下分布式緩存技術的現狀與挑戰[J].軟件學報.2013,24(1):50-66.
[5]王意潔,孫偉東,周松等.云計算環境下的分布存儲關鍵技術[J].軟件學報,2012,23(4):962-986.
[6]Dhruba Borthakur,Jonathan Gray,Joydeep Sen Sarma,et al.Apache Hadoop Goes Realtime at Facebook[C].Proceedings of the 2011 International Conference on Management of data,2011:1071-1080.
[7]馮登國,張敏,張妍等.云計算安全研究[J].軟件學報,2011,22(1):71-83
HDFS;Storage Strategy;Data Copy;Evaluation Coefficient
Research and Optimization of the Hadoop Cloud Storage Strategy
LIN Sui1,ZHU Yan1,YANG You-ke2
(1.School of Computer,Guangdong University of Technology,Guangzhou 510006;2.Guangdong Moring Star Technology CO.LTD.,Guangzhou 510530)
1007-1423(2016)02-0033-05
10.3969/j.issn.1007-1423.2016.02.008
林穗(1972-),女,廣東人,副教授,研究方向為云計算、云存儲等
朱巖(1990-),男,山東人,碩士,研究方向為云存儲
楊有科(1977-),男,廣東人,研究方向為大數據與云計算
2015-12-04
2015-12-30
分布式文件系統(HDFS)是海量數據的主要存儲方式。HDFS默認的存儲策略中,采用固定的數據副本個數以及隨機選擇遠端節點的策略來保證數據的本地性和安全性,但當系統發生故障需要進行數據恢復時,默認策略將會造成系統時間的損失和節點存儲負載的不均衡。提出一種改進的HDFS存儲策略,根據節點的失效率以及期望的數據可用性建立一種概率模型,通過模型來優化數據副本個數,并根據節點的評價系數來選擇遠端節點進行副本存儲。實驗結果表明該策略針對海量數據時提高系統的存儲性能。
分布式文件系統;存儲策略;數據副本;評價系數
廣州市科技項目(No.2014XYD-007)
HDFS is the main storage method of massive data.In the default storage strategy,HDFS uses fixed data replica and randomly chooses remote node to ensure data locality and security.However,when system needs data recovery because of system fault,random strategy will cause loss of system time and imbalance of node storage load.In this case,puts forward an improved HDFS storage strategy to generate a probability model based on node failure rate and expected data availability.It can optimize the number of data replica by the model and select remote node as copy storage according to its evaluation coefficient.The experiment result shows the strategy can improve system performance aiming at massive data.