楊姍姍+陳彩+梁毅
摘 要:大數(shù)據(jù)時代的到來,給海量數(shù)據(jù)的存儲與管理帶來了更為嚴峻的挑戰(zhàn)。HDFS能夠有效緩解飛速增長的海量數(shù)據(jù)存儲需求。最初HDFS被設計用于同構的硬件環(huán)境,然而隨著集群硬件的迭代更新,存儲介質的硬件異構特性愈發(fā)明顯。為了充分利用高性能存儲介質,提升HDFS的數(shù)據(jù)訪問性能,設計了一種基于層次分析法的異構存儲的HDFS副本選擇策略,并在擴展的CloudSim仿真系統(tǒng)中實現(xiàn)了該策略。實驗結果表明,該策略在HDFS數(shù)據(jù)訪問性能方面優(yōu)于HDFS默認副本選擇策略。
關鍵詞:大數(shù)據(jù);異構存儲;HDFS;副本選擇策略;CloudSim
DOIDOI:10.11907/rjdk.171284
中圖分類號:TP301
文獻標識碼:A 文章編號:1672-7800(2017)007-0011-03
0 引言
云存儲技術已經(jīng)受到了商業(yè)與學術領域的廣泛關注,目前已成為大數(shù)據(jù)時代的研究熱點。隨著大數(shù)據(jù)時代的到來,大數(shù)據(jù)的存儲需求成倍增長,分布式存儲技術是大數(shù)據(jù)時代應對存儲容量的壓力與成本等諸多挑戰(zhàn)下的極為重要的解決方案。HDFS是大數(shù)據(jù)領域最受關注的具備高度容錯性與高吞吐量的海量數(shù)據(jù)存儲的開源框架[1]。
近年來,計算機硬件技術的飛速發(fā)展,使得固態(tài)硬盤的性能不斷提升,價格快速下降。由于固態(tài)硬盤具有較高的I/O性能,目前已經(jīng)被應用于HDFS中以提升海量數(shù)據(jù)的存儲性能。但是固態(tài)硬盤的使用成本仍舊高于機械硬盤,綜合考慮大規(guī)模HDFS的基礎設施成本與存儲的性能需求,將固態(tài)硬盤與機械硬盤混合應用是一種有效的解決手段。
副本選擇策略是HDFS數(shù)據(jù)訪問的基礎,副本選擇策略的優(yōu)劣將直接影響HDFS集群的數(shù)據(jù)訪問性能。為了充分利用異構的存儲介質,同時避免集群負載不均所帶來的瓶頸,本文充分考慮副本所在存儲介質與集群中節(jié)點的負載差異,構建了數(shù)學模型,提出了一種異構存儲下的HDFS副本讀取選擇(Heterogeneous Storage Replica Selection,HSRS)策略。
1 HDFS的異構存儲
最初,Hadoop默認所有存儲介質都是同構的,但是隨著Hadoop集群硬件的迭代更新,使得在集群中出現(xiàn)了異構的存儲介質。不同的存儲介質具有不同的I/O性能。機械硬盤作為目前主流的存儲介質,盡管價格低、容量大,但是由于其機械構造、磁盤尋道時間與定位時間難以被消除,使得機械硬盤在讀寫性能上難以有進一步提升。隨著多核處理器的飛速發(fā)展,機械硬盤的訪問性能與處理器和內(nèi)存之間的差距越來越大。機械硬盤的I/O性能已經(jīng)成為分布式存儲系統(tǒng)訪問性能的主要瓶頸之一。固態(tài)硬盤無需尋道,讀寫延遲遠遠小于機械硬盤,并且提供了良好的隨機訪問性能,并且比機械硬盤的能耗更低[2]。
為了充分利用異構存儲介質的性能特點,Hadoop于2.6.0版本中添加了對異構存儲的支持,同時引入了存儲策略的新概念,在數(shù)據(jù)寫入至HDFS時可以為數(shù)據(jù)指定不同的存儲策略,使得數(shù)據(jù)可以寫入不同類型的存儲介質中。然而在副本選擇策略方面仍舊采用就近副本選擇策略。
在此之前,許多學者研究如何在HDFS中將機械硬盤與固態(tài)硬盤混合使用以充分發(fā)揮不同存儲介質的性能。Islam等[3-5]提出將固態(tài)硬盤作為機械硬盤的緩存層的HDFS架構; Krish等[6-7]提出了固態(tài)硬盤與機械硬盤混合使用的HDFS系統(tǒng)架構,并提出了數(shù)據(jù)放置與查詢策略,有效提升了HDFS的系統(tǒng)訪問性能。Chen等[8]在操作系統(tǒng)內(nèi)核層面進行了異構存儲的HDFS數(shù)據(jù)放置策略設計與實現(xiàn)。目前,異構混合存儲的HDFS主要集中于架構設計,在副本選擇策略方面仍具備較大的研究空間。
2 異構存儲的HDFS副本選擇策略
2.1 HDFS讀過程分析
為了避免分布式文件系統(tǒng)中存儲節(jié)點失效帶來的數(shù)據(jù)丟失情況,HDFS采用數(shù)據(jù)多副本分塊對數(shù)據(jù)進行冗余存儲。這在保證數(shù)據(jù)安全性的同時也提升了數(shù)據(jù)的訪問性能,多客戶端可并發(fā)地從不同數(shù)據(jù)節(jié)點中讀取數(shù)據(jù)。HDFS讀過程如圖 1所示。
盡管HDFS支持了異構存儲類型并引入了存儲策略,然而在進行副本讀取節(jié)點選擇時,HDFS默認的副本讀取選擇策略仍舊為副本就近讀取選擇策略。以最小化訪問延遲與集群中全局網(wǎng)絡帶寬為目標,只考慮了數(shù)據(jù)副本所在數(shù)據(jù)節(jié)點的網(wǎng)絡拓撲距離,選擇與請求節(jié)點網(wǎng)絡拓撲距離最小的副本進行訪問,選擇可用節(jié)點而不是最佳訪問節(jié)點。
在異構存儲的HDFS中,在相同負載場景下,從具有較高訪問性能的存儲介質讀取數(shù)據(jù)能夠大幅度地提升副本的訪問速率。集群中的各個數(shù)據(jù)節(jié)點存儲了不同的數(shù)據(jù)副本,不同數(shù)據(jù)副本的訪問呈現(xiàn)動態(tài)性,數(shù)據(jù)節(jié)點的負載情況也會影響數(shù)據(jù)訪問性能。如果從負載過重的節(jié)點中讀取數(shù)據(jù)塊會加重該數(shù)據(jù)節(jié)點的任務量,易導致讀取性能的降低。選擇負載較輕的數(shù)據(jù)節(jié)點能夠有效提高數(shù)據(jù)傳輸速度。
如何從存儲數(shù)據(jù)副本的多個數(shù)據(jù)節(jié)點中選擇出最佳節(jié)點進行訪問以提升數(shù)據(jù)訪問速度,是異構存儲的HDFS副本選擇的關鍵問題之一。
2.2 數(shù)學描述
在異構存儲的HDFS中,多副本分散存儲于集群中的不同數(shù)據(jù)節(jié)點之上。影響數(shù)據(jù)訪問性能的因子包含副本所在存儲介質的負載情況、網(wǎng)絡拓撲距離與數(shù)據(jù)節(jié)點的負載情況等。
2.2.1 數(shù)據(jù)節(jié)點集
設HDFS中數(shù)據(jù)塊Bi所在的數(shù)據(jù)節(jié)點集合為DN(Bi)={DN1,…,DNi,…,DNn},DNi用于表示編號為i的數(shù)據(jù)節(jié)點。
2.2.2 網(wǎng)絡拓撲距離
HDFS集群節(jié)點通常會部署于多個機架上。機架內(nèi)機器之間的網(wǎng)絡速度通常都會高于跨機架機器之間的網(wǎng)絡速度,網(wǎng)絡拓撲距離會直接影響客戶端到數(shù)據(jù)節(jié)點訪問請求的響應時間。本文對網(wǎng)絡拓撲距離進行了量化設置,當客戶端與數(shù)據(jù)節(jié)點位于相同物理節(jié)點中,網(wǎng)絡拓撲距離為0;當客戶端與數(shù)據(jù)節(jié)點位于相同機架的不同物理節(jié)點中,網(wǎng)絡拓撲距離為2;當客戶端與數(shù)據(jù)節(jié)點位于不同機架的物理節(jié)點中,網(wǎng)絡拓撲距離為4,di則用于表示目標數(shù)據(jù)節(jié)點與編號為i的數(shù)據(jù)節(jié)點的網(wǎng)絡拓撲距離,dmax用于表示集群中的最遠網(wǎng)絡拓撲距離。
2.2.3 數(shù)據(jù)節(jié)點負載
設數(shù)據(jù)節(jié)點負載定義為Li={CPUi,Memi,Diskidev},分別表示為CPU使用率、內(nèi)存使用率和負載所在存儲介質的使用率。然而由于存儲介質的異構性,固態(tài)硬盤與機械硬盤的數(shù)據(jù)訪問性能具有較大的差距。因此,需要對磁盤使用率進行數(shù)值上的處理,使得磁盤使用率這一指標能夠無差別地表示不同存儲介質的IO使用情況。
綜上所述,數(shù)據(jù)節(jié)點 DNi上的副本訪問性能進行評估函數(shù)如式(1)所示,其中ωj為對應項的權系數(shù),W=(ω1,ω2,…,ωn)T為權向量,∑njωj=1;Speedidev表示副本所在存儲介質的速度;SpeedMAX表示集群中最大的存儲介質訪問速度。Perf(DNi)的值越小,說明DNi的副本訪問性能越差,值越大,則反之。
為了確定每個影響因子對于數(shù)據(jù)節(jié)點副本訪問性能的影響程度,本文采用了層次分析法來確定權系數(shù)的值。由美國運籌學家T L Satty[9]提出的層次分析法是一種定性和定量相結合的、系統(tǒng)化、層次化的分析方法。它的應用已遍及能源政策和分配、行為科學、軍事指揮和運輸?shù)阮I域。該方法將復雜的問題分解成若干關鍵因素,將每兩個關鍵因素的重要程度進行比對并進行定量計算后作出選擇與判斷。
根據(jù)層次分析法計算得出權向量為:
由于數(shù)據(jù)節(jié)點的影響因子是以一定的時間周期進行收集,在主節(jié)點中存儲的數(shù)據(jù)節(jié)點的影響因子數(shù)值是歷史某一時刻的快照值,無法用于表示數(shù)據(jù)節(jié)點的實時性能狀況,如果僅僅以Perf(DNi)值排列順序作為目標數(shù)據(jù)節(jié)點選擇優(yōu)先級的依據(jù),會造成短期內(nèi)所有訪問請求均被發(fā)送至Perf(DNi)值最大的數(shù)據(jù)節(jié)點中,使得該數(shù)據(jù)節(jié)點需要處理過多的數(shù)據(jù)訪問請求。
本文采取基于數(shù)據(jù)節(jié)點評估值概率的輪盤賭選擇策略,Perf(DNi)值高的數(shù)據(jù)節(jié)點被選中的概率更大,Perf(DNi)值低的數(shù)據(jù)節(jié)點被選中的概率更小。節(jié)點DNi的選擇概率計算公式為:
在選擇時利用計算機生成的[0,1]隨機數(shù)確定目標數(shù)據(jù)節(jié)點。通過這種基于概率的選擇策略可以保證訪問請求的有效分發(fā),避免短期內(nèi)數(shù)據(jù)節(jié)點訪問過熱情況的發(fā)生。
2.3 HSRS策略流程
基于上述分析,異構存儲的HDFS副本選擇策略流程如下:①根據(jù)集群的網(wǎng)絡拓撲結構,初始化所有數(shù)據(jù)節(jié)點的網(wǎng)絡拓撲距離;②根據(jù)用戶請求從主節(jié)點中獲取候選副本所在的數(shù)據(jù)節(jié)點集合DN(Bi);③根據(jù)式(1)計算集合DN(Bi)中的數(shù)據(jù)節(jié)點副本訪問性能評估值;④根據(jù)式(2)計算集合DN(Bi)中數(shù)據(jù)節(jié)點選擇概率值;⑤生成范圍[0,1]的隨機數(shù)r,當Probability(DNi-1)≤r≤Probability(DNi)時,則選擇編號為i的數(shù)據(jù)節(jié)點中的數(shù)據(jù)副本進行讀??;⑥重復步驟②至步驟⑤直至數(shù)據(jù)全部讀取完畢。
3 實驗結果及分析
3.1 實驗環(huán)境
本實驗將擴展后的CloudSim 4.0作為異構存儲的HDFS仿真工具。CloudSim的配置文件包括集群硬件配置文件,數(shù)據(jù)配置文件以及任務配置文件。在本實驗中,將100臺主機節(jié)點按照集群硬件配置文件分布在5個機架之上,設置了8種不同硬件配置的主機類型。本實驗參考真實機械硬盤與固態(tài)硬盤的讀取速度,設置仿真機械硬盤的讀取速度為300MB/s,固態(tài)硬盤的讀取速度為100MB/s,機架內(nèi)最大數(shù)據(jù)傳輸帶寬為1 000MB/s,機架間最大數(shù)據(jù)傳輸帶寬為500MB/s。
3.2 性能分析
本實驗參考HDFS默認的數(shù)據(jù)上傳流程,采用ONE_SSD的數(shù)據(jù)存儲策略,在集群中每個數(shù)據(jù)包含3個副本,每個數(shù)據(jù)均有一個副本放置于SSD中。在進行仿真實驗之前,預先向HDFS中寫入任務所需的數(shù)據(jù)。每個數(shù)據(jù)的大小為2 048MB,每個數(shù)據(jù)共3個副本,數(shù)據(jù)塊大小為64MB,共寫入10 000個數(shù)據(jù)。本實驗通過程序自動生成所有任務,任務到達服從λ=5.0的泊松分布。任務總數(shù)量分別為50、100、150、200、250和300個。
作為對比實驗的HDFS默認副本選擇策略(Default Replica Select, DRS)的任務運行結果,與本文提出的異構存儲的HDFS副本選擇策略任務運行結果如圖 2和圖3所示。
本實驗中采用任務平均讀取速度與集群中SSD總訪問次數(shù)兩個指標將DRS策略與HSRS策略進行對比。如式(3)所示,n個任務的平均讀取速度即為讀取的數(shù)據(jù)總量除以讀取的所有時間。
圖2是集群中SSD總訪問次數(shù)對比。從圖 2可以看出,在不同任務總量下,HSRS策略集群中的SSD總訪問次數(shù)高于DRS策略。在任務總量為300個的實驗中,采用HSRS策略的SSD總訪問次數(shù)是DRS策略的2.61倍。SSD的讀取性能優(yōu)于機械硬盤,充分利用SSD可以有效提升數(shù)據(jù)的訪問性能。
圖3為采用DRS策略與采用HSRS策略時不同任務總量下的任務平均讀取速度對比。由圖 3可知,在不同的任務總量下,采用HSRS策略的HDFS任務平均讀取速度均優(yōu)于DRS策略。
4 結語
實驗結果表明,在異構存儲的HDFS下,本文提出的HSRS策略在不同的任務量下性能優(yōu)于DRS策略,具有較好的可擴展性。主要原因在于:DRS策略僅僅考慮了請求節(jié)點與副本所在數(shù)據(jù)節(jié)點之間的網(wǎng)絡距離,而本文所提出的HSRS策略在DRS策略的基礎之上考慮了副本所在數(shù)據(jù)節(jié)點的負載以及副本存儲介質的差異,避免了數(shù)據(jù)節(jié)點負載過于集中的情況,充分利用了高性能存儲介質的數(shù)據(jù)讀取能力,能夠有效提升數(shù)據(jù)的讀取性能。
參考文獻:
[1]SHVACHKO K,KUANG H,RADIA S.The hadoop distributed file system[C].2010 IEEE 26th symposium on mass storage systems and technologies (MSST),2010:1-10.
[2]MOON S,LEE J,KEE Y S.Introducing SSDs to the hadoop mapReduce framework[C].2014 IEEE 7th International Conference on Cloud Computing,2014:272-279.
[3]POLATO I,BARBOSA D,HINDLE A.Hybrid HDFS:decreasing energy consumption and speeding up hadoop using SSDs[R].e1626,PeerJ PrePrints,2015.
[4]KRISH K R,IQBAL M S,BUTT A R.VENU:orchestrating SSDs in hadoop storage[C].2014 IEEE International Conference on Big Data (Big Data),2014:207-212.
[5]ISLAM N S,LU X,WASI-UR-RAHMAN M.Triple-H:a hybrid approach to accelerate HDFS on HPC clusters with heterogeneous storage architecture[C].2015 15th IEEE/ACM International Symposium on Cluster,Cloud and Grid Computing,2015:101-110.
[6]KRISH K R,ANWAR A,BUTT A R.HatS:a heterogeneity-aware tiered storage for hadoop[C].2014 14th IEEE/ACM International Symposium on Cluster,Cloud and Grid Computing, 2014:502-511.
[7]KRISH K R,ANWAR A,BUTT A R.Sched:a heterogeneity-aware hadoop workflow scheduler[C].2014 IEEE 22nd International Symposium on Modelling,Analysis & Simulation of Computer and Telecommunication Systems (MASCOTS),2014:255-264.
[8]CHEN F,KOUFATY D A,ZHANG X.Hystor: making the best use of solid state drives in high performance storage systems[C].Proceedings of the International Conference on Supercomputing,2011:22-32.
[9]SAATY T L.Decision making with the analytic hierarchy process[J].International journal of services sciences,2008(1):83-98.