袁曉春
(廣東電網(wǎng)有限責(zé)任公司惠州供電局,廣東惠州 516001)
基于Hadoop的小文件分布式存儲技術(shù)研究
袁曉春
(廣東電網(wǎng)有限責(zé)任公司惠州供電局,廣東惠州 516001)
HDFS(Hadoop Distributed File System)以其高容錯性、高伸縮性等優(yōu)點(diǎn),允許用戶將Hadoop部署在低廉的硬件上,廣泛適用于大文件存儲。然而對于海量小文件,因?yàn)閮?nèi)存開銷過高,因此對數(shù)據(jù)的存儲技術(shù)提出了更高的要求。基于Hadoop分布式文件系統(tǒng)(HDFS)架構(gòu),研究小文件在Hadoop架構(gòu)下的數(shù)據(jù)處理策略,通過實(shí)驗(yàn)將其與傳統(tǒng)的文件系統(tǒng)的讀寫、計算速度進(jìn)行比較。
分布式存儲;HDFS;MapReduce
Hadoop是開源的分布式計算平臺,允許用戶在低廉的硬件上部署分布式集群,所以用戶可以利用Hadoop輕松地組織計算機(jī)資源,充分利用計算機(jī)集群的計算和存儲能力進(jìn)行海量數(shù)據(jù)處理[1]。HDFS是由Namenode和Datanode組成的,由于Na?menode將文件系統(tǒng)的元數(shù)據(jù)放置于內(nèi)存中,所以文件系統(tǒng)所容納的文件數(shù)目會受到Namenode內(nèi)存大小的限制[2],不能很好地解決海量小文件存儲問題(例如現(xiàn)實(shí)生活中圖片、音樂、日志等比較零散的數(shù)據(jù)存儲,都屬于小文件存儲)[3-5]。
小文件是指文件容量小于HDFS的分塊(block)大小的文件。HDFS是為大文件存儲、讀取而開發(fā)的,若訪問海量小文件則需要在Datanode間不停跳轉(zhuǎn),影響效率。顯然,因?yàn)槿蝿?wù)啟動將耗費(fèi)大量時間在啟動和釋放任務(wù)上,系統(tǒng)處理海量小文件總和的速度,顯著低于同等容量下的大文件處理速度。
針對小文件的解決方案,Hadoop框架提供了幾種解決方案,分別為:Hadoop Archive,Se?quence file和Combine File Input Format[3]。Hadoop Archive簡稱HAR,它將多個小文件打包成一個HAR文件,放入塊中,以減少Namenode內(nèi)存使用。HAR也有缺陷,創(chuàng)建后Archives便不可更改,要增加或刪除其中文件必須重新創(chuàng)建。Se?quence files是由二進(jìn)制的(Key,Value)對組成的,定義鍵Key為小文件名,值Value為文件內(nèi)容,將海量小文件合并成大文件,并實(shí)現(xiàn)快速查找。Combine File Input Format是則定義了一種新的數(shù)據(jù)格式,可以將多個文件合并成一個單獨(dú)的分塊[3]。
圖1 HDFS架構(gòu)
2.1 HDFS系統(tǒng)框架
如圖1所示,HDFS是一個分布式文件系統(tǒng)的超級大集群。該系統(tǒng)有一個以上的公共節(jié)點(diǎn)和兩個服務(wù)器,這可同時用作服務(wù)器是HDFS文件系統(tǒng)和MapReduce名稱服務(wù)器計算平臺作業(yè)調(diào)度器(JobTracker),不僅是作為HDFS文件系統(tǒng)的數(shù)據(jù)節(jié)點(diǎn)的其余節(jié)點(diǎn)(Datanode),而且還作為一個計算平臺的MapReduce任務(wù)執(zhí)行(Task Tracker)。將大規(guī)模的網(wǎng)絡(luò)數(shù)據(jù)變成“本地處理”,大大提高海量數(shù)據(jù)處理速度,實(shí)現(xiàn)高效率計算。存儲在HDFS大量存在于一個塊的形式的文件,在相同塊中的文件的大小,用不同的塊大小的文件的其他文件只有最后一個塊。對于容錯,屬于文件塊需要復(fù)制保存。復(fù)制該文件的大小的塊的數(shù)目,并可以為每個文件設(shè)定。HDFS符合一次編寫原則,同一時刻只允許單個用戶寫入。Namenode節(jié)點(diǎn)負(fù)責(zé)文件塊復(fù)制管理,將各Na?menode節(jié)點(diǎn)塊復(fù)制的日志反饋,根據(jù)日志判斷復(fù)制目標(biāo)塊。
HDFS與其他分布式文件系統(tǒng)功能不同的是其性能和相關(guān)數(shù)據(jù)塊副本的位置選擇比較大的可靠性。HDFS使用感知機(jī)制(rack-aware)策略以提高數(shù)據(jù)可用性和利用網(wǎng)絡(luò)帶寬的可靠性。一般在大型計算機(jī)集群系統(tǒng)運(yùn)行的HDFS實(shí)例,不同的服務(wù)器集群可以跨機(jī)柜部署,相異節(jié)點(diǎn)之間通過交換機(jī)相互連通。通常相同機(jī)柜比不同機(jī)柜節(jié)點(diǎn)之間的通信速度更快,因?yàn)闄C(jī)柜內(nèi)失效的概率比機(jī)器故障的概率小得多,這樣部署可以在不降低數(shù)據(jù)的可靠性和可用性的條件下,有效降低機(jī)柜內(nèi)的寫入流量,大大提高寫入性能。
在啟動時不發(fā)生文件塊的復(fù)制稱為Namenode節(jié)點(diǎn)安全模式。每個數(shù)據(jù)塊記錄副本的某個最小數(shù)值,當(dāng)Namenode的節(jié)點(diǎn)發(fā)現(xiàn)數(shù)據(jù)庫有多個副本的最小數(shù)值時,說明副本已被安全復(fù)制。Nameno?de節(jié)點(diǎn)則自動退出安全模式的條件是有足夠的塊來完成副本復(fù)制。
圖2 基于Hadoop的文件系統(tǒng)計算框架
基于Hadoop的文件系統(tǒng)計算框架如圖2所示。
文獻(xiàn)[4]針對WebGIS數(shù)據(jù),將相鄰的小文件合并為大文件,并對所有小文件建立全局哈希索引,有效提高小文件的存取效率。文獻(xiàn)[5]針對BlueSky系統(tǒng)中的文檔文件,將同類PPT小文件合并成為一個大文件,并對每個大文件建立局部索引,以上兩種方法充分利用了計算機(jī)緩存機(jī)制,提高了小文件的存取效率,是目前比較適用的小文件存儲方法。
2.2 小文件處理方法在HDFS框架下的實(shí)現(xiàn)
本節(jié)試圖在系統(tǒng)層面解決HDFS小文件存儲,存儲流程如圖3所示。
圖3 基于Hadoop的小文件系統(tǒng)存儲流程
讀取流程如圖4所示。
3.1 實(shí)驗(yàn)?zāi)康?/p>
根據(jù)本文設(shè)計的框架設(shè)計相關(guān)的實(shí)驗(yàn)來驗(yàn)證本文設(shè)計框架的可操作性。實(shí)驗(yàn)數(shù)據(jù)被分成兩組,一組是采用傳統(tǒng)的分布式計算方案,使用Shell腳本處理日志,另一組為使用本文設(shè)計的系統(tǒng)框架運(yùn)行分布式算法進(jìn)行計算。
3.2 實(shí)驗(yàn)環(huán)境的配置
實(shí)驗(yàn)建立四個服務(wù)器的Hadoop集群,一臺做Namenode,三臺做Datanode,客戶端通過Na?menode提交數(shù)據(jù)。所述網(wǎng)絡(luò)服務(wù)器內(nèi)用于內(nèi)網(wǎng)系統(tǒng)的24 G實(shí)驗(yàn)數(shù)據(jù)記錄,由10萬個200~250 kB的日志記錄組成。表1是一個具體的機(jī)器實(shí)驗(yàn)室環(huán)境。
3.3 實(shí)驗(yàn)結(jié)果分析
圖5和圖6是傳統(tǒng)HDFS MapReduce工作和小文件框架下統(tǒng)計計算的對比,從中可以清楚地看到,小文件框架工作運(yùn)行時間比傳統(tǒng)HDFS運(yùn)行時間顯著縮短。在內(nèi)存方面?zhèn)鹘y(tǒng)HDFS則明顯耗費(fèi)了大量的內(nèi)存。
圖4 基于Hadoop的小文件系統(tǒng)讀取流程
表1 集群服務(wù)器配置信息
Hadoop中目前還沒有通用的解決HDFS小文件問題的解決框架,現(xiàn)有的框架包括Hadoop Ar?chive,Sequence file和Combine File Input Format,需要用戶按需自定義程序邏輯,比較繁瑣,本文在對Hadoop集群架構(gòu)研究的基礎(chǔ)上,給出了一個基于Hadoop的小文件分布式存儲方法。實(shí)驗(yàn)結(jié)果表明,該平臺可以大大提高小文件在HDFS框架下的讀寫速度。
Research on Storage of Hadoop Distributed Small File System
YUAN Xiao-chun
(Huizhou Power Supply Bureau,Huiizhou516001,China)
HDFS(Hadoop Distributed File System)for its high fault tolerance,high scalability,etc.,allows the user to deploy Hadoop inexpensive hardware,is widely used in large file storage.However,for the mass of small files,because the memory overhead is too high,so the data storage technology put forward higher requirements.Based on Hadoop distributed file system(HDFS)architecture,small file data processing policy in the Hadoop framework,by comparing the read and write test with the traditional file system,the calculation speed.
distributed storage;HDFS;MapReduce
TM73
:A
:1009-9492(2014)12-0159-03
10.3969/j.issn.1009-9492.2014.12.040
2014-11-14