999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

HDFS小文件讀寫優(yōu)化策略*

2016-10-28 09:30:33朱永強(qiáng)周珂李丹趙亞萌
計(jì)算機(jī)時(shí)代 2016年9期

朱永強(qiáng)++周珂++李丹++趙亞萌

DOI:10.16644/j.cnki.cn33-1094/tp.2016.09.003

摘 要: HDFS是一種高容錯(cuò)性的分布式系統(tǒng)。它支持的數(shù)據(jù)集在GB到TB級別,然而對大量小文件存取支持不足。由于在處理大數(shù)量級的小文件時(shí),會(huì)使得NameNode內(nèi)存消耗過度,造成文件的存取性能降低。因此提出了一種根據(jù)文件類型分類小文件的合并策略。通過建立索引信息服務(wù)器來存儲(chǔ)存放在用戶文件中的小文件的元數(shù)據(jù)信息,可以達(dá)到高效讀取小文件的目的。實(shí)驗(yàn)結(jié)果表明,該優(yōu)化策略能有效降低NameNode內(nèi)存消耗,提高HDFS文件系統(tǒng)對大量小文件讀取效率。

關(guān)鍵詞: HDFS; 小文件存取; 文件類型; 用戶文件; 元數(shù)據(jù)信息

中圖分類號:TP391 文獻(xiàn)標(biāo)志碼:A 文章編號:1006-8228(2016)09-09-04

HDFS small file read and write optimization strategy

Zhu Yongqiang1,2, Zhou Ke1,2, Li Dan1,2, Zhao Yameng2

(1. School of Computer and Information Engineering Henan University, Kaifeng, Henan 475004, China;

2. Institute of Remote Sensing and Digital Earth Chinese Academy of Sciences)

Abstract: HDFS is a kind of distributed system with high fault tolerance. It supports data set at the GB to the TB level, but lacks of support for the access to a large number of small files. The processing of large number of small files will make the NameNode memory consumption excessive, and result in a reduction of the file access performance. This paper presents a method of merging small files according to the file type. Through the establishment of an index information server to store the metadata of small files stored in the user files, the purpose of reading small files efficiently can be achieved. Experimental results show that the optimization strategy can effectively reduce the NameNode memory consumption, improve the reading efficiency of HDFS file system to a large number of small files.

Key words: HDFS; small file access; file type; user file; Metadata information

0 引言

隨著網(wǎng)絡(luò)和信息技術(shù)的不斷普及,人類產(chǎn)生的數(shù)據(jù)量正在呈指數(shù)級增長,大約每兩年翻一番,根據(jù)監(jiān)測,這個(gè)速度在2020年之前會(huì)繼續(xù)保持下去,這意味著人類在最近兩年產(chǎn)生的數(shù)據(jù)量相當(dāng)于之前產(chǎn)生的數(shù)據(jù)量總和。資料顯示,2011年,全球數(shù)據(jù)規(guī)模為1.8ZB,可以填滿575億個(gè)32GB的iPad,這些iPad可以在中國修建兩座長城。淘寶網(wǎng)網(wǎng)站每天有超過數(shù)千萬筆交易,單日產(chǎn)生數(shù)據(jù)量超過50TB,存儲(chǔ)量40PB(1PB等于1000TB)。百度公司存儲(chǔ)網(wǎng)頁數(shù)量接近1萬億頁,每天約處理60億次搜索請求,幾十PB數(shù)據(jù)[1]。云計(jì)算[2]已成為當(dāng)今研究的熱門課題,它很好的解決了大數(shù)據(jù)運(yùn)算與存儲(chǔ)的難題。HDFS是Apache Hadoop Core項(xiàng)目的一部分,現(xiàn)在已成為研究大數(shù)據(jù),實(shí)現(xiàn)云存儲(chǔ)服務(wù)的一個(gè)很好的模型[3],它是一個(gè)不錯(cuò)的分布式文件系統(tǒng),大部分的HDFS程序?qū)ξ募僮餍枰氖且淮螌懚啻巫x的操作模式[4]。它是一個(gè)主從結(jié)構(gòu),一個(gè)HDFS集群是由一個(gè)名字節(jié)點(diǎn)和多個(gè)數(shù)據(jù)節(jié)點(diǎn)組成,名字節(jié)點(diǎn)是一個(gè)管理文件命名空間和調(diào)節(jié)客戶端訪問文件的主服務(wù)器,數(shù)據(jù)節(jié)點(diǎn)用于存儲(chǔ)數(shù)據(jù)。HDFS采用的是流式讀取海量級數(shù)據(jù),然而它在文件存儲(chǔ)方面也有不足。這是由于HDFS是由單一NameNode多DataNode組成的,在集群運(yùn)行時(shí) NameNode的內(nèi)存中加載了命名空間的元數(shù)據(jù)信息,因此大量小文件的使用會(huì)造成節(jié)點(diǎn)的內(nèi)存消耗過多從而使系統(tǒng)的性能降低[5]。

社交網(wǎng)絡(luò)、電商平臺(tái)以及其他大數(shù)據(jù)領(lǐng)域每天都會(huì)產(chǎn)生大量的數(shù)據(jù)文件。據(jù)統(tǒng)計(jì)分析,郵件、文本、音樂、視頻、互聯(lián)網(wǎng)檔案、網(wǎng)站圖片等小于1M的海量小文件會(huì)占據(jù)整個(gè)集群小文件總數(shù)的90%以上。根據(jù)美國國家能源研究科學(xué)計(jì)算中心一個(gè)關(guān)于共享并行文件系統(tǒng)的研究顯示,該系統(tǒng)存儲(chǔ)的1300萬個(gè)文件中,99%的文件大小不超過64MB,43%的文件大小不超過64KB[6]。由于HDFS是面向大文件存儲(chǔ)與訪問而設(shè)計(jì)的,面對這些大量小文件的存在,NameNode元數(shù)據(jù)的檢索效率就會(huì)降低。本文提出了一種根據(jù)文件類型分類的小文件的合并策略,通過將不同類型的小文件的元數(shù)據(jù)信息存放在用戶文件的不同位置,從而實(shí)現(xiàn)將小文件合并為大文件,很好的解決了HDFS存取海量小文件效率低下的問題。

1 研究現(xiàn)狀以及存在的問題及分析

1.1 HDFS基本架構(gòu)

如圖1所示,HDFS是一個(gè)主/從(Mater/Slave)體系結(jié)構(gòu),HDFS集群擁有一個(gè)NameNode和多個(gè)DataNode。NameNode管理文件系統(tǒng)的元數(shù)據(jù),DataNode存儲(chǔ)實(shí)際的數(shù)據(jù)。客戶端通過同NameNode和DataNodes的交互訪問文件系統(tǒng)。客戶端聯(lián)系NameNode以獲取文件的元數(shù)據(jù),而真正的文件I/O操作是直接和DataNode進(jìn)行交互的。

1.2 現(xiàn)有的小文件存取方案

HDFS能夠很好的支持大數(shù)據(jù)集的讀寫,提供很高的聚合帶寬,通常支持大數(shù)量級的文件(GB級別甚至更大的文件)[7],然而對小文件的支持卻有缺陷。主要原因在以下三個(gè)方面。

⑴ 由于HDFS文件系統(tǒng)命名空間中的元數(shù)據(jù)信息以及文件系統(tǒng)內(nèi)部配置數(shù)據(jù)都存放在一個(gè)叫做FSImage的文件中,每次集群啟動(dòng)時(shí)都會(huì)將這個(gè)文件加載到內(nèi)存中,若小文件數(shù)量巨大就會(huì)造成節(jié)點(diǎn)的內(nèi)存消耗過多。

⑵ HDFS文件系統(tǒng)默認(rèn)每一個(gè)block的大小為64MB,存儲(chǔ)在DataNode中。大文件可能跨越多個(gè)數(shù)據(jù)塊,理想情況下除了最后一個(gè)數(shù)據(jù)塊會(huì)產(chǎn)生磁盤碎片,其余都會(huì)寫滿。小文件容量一般小于數(shù)據(jù)塊的容量,多個(gè)文件存儲(chǔ)在一個(gè)數(shù)據(jù)塊,當(dāng)數(shù)據(jù)塊的碎片容量小于最小的文件大小時(shí),這些空間將得不到利用,造成空間浪費(fèi)。

⑶ 在頻繁的與客戶端交互過程中會(huì)形成大量的I/O操作,消耗在操作控制的時(shí)間遠(yuǎn)大于傳輸時(shí)間,造成網(wǎng)絡(luò)通信延時(shí)高,從而使HDFS的性能下降。

Hadoop本身提供了一種將小文件進(jìn)行歸檔的工具Hadoop Archives簡稱HAR Files,通過Hadoop的archive命令可以將大量小文件歸檔打包成一個(gè)HAR文件[8],因?yàn)樵L問HAR中的小文件要進(jìn)行兩次索引才能讀取到小文件。還有多NameNode架構(gòu),文件元數(shù)據(jù)信息存儲(chǔ)在多個(gè)NameNode節(jié)點(diǎn)上,需要采用映射文件來對NameNode進(jìn)行映射,如果映射文件較大時(shí)也會(huì)嚴(yán)重影響系統(tǒng)的性能。現(xiàn)有的HDFS小文件解決方案都有著自身的不足。

2 基于文件合并策略的優(yōu)化方案

合并小文件是為了減少NameNode內(nèi)存消耗和提高其訪問性能。我們在集群中為每個(gè)用戶建立一個(gè)用戶文件UserFile,該文件分成不同的文件類型區(qū)域(Part1、Part2…),利用HDFS提供的Append文件追加操作以流的形式將我們前面所提到的這些類型的小文件合并到用戶文件的不同區(qū)域中,這樣在HDFS集群中所表現(xiàn)出來的就是相當(dāng)于一個(gè)文件,有效降低了 NameNode 的內(nèi)存消耗。

2.1 小文件的存儲(chǔ)結(jié)構(gòu)設(shè)計(jì)

我們提出了小文件的合并策略,采取了如圖2的架構(gòu)設(shè)計(jì)。HDFS應(yīng)用服務(wù)器封裝了對HDFS中文件的基本操作,用戶直接訪問HDFS應(yīng)用服務(wù)器就可以對HDFS集群中的文件進(jìn)行操作,此外還有一個(gè)小文件索引信息服務(wù)器,這個(gè)服務(wù)器主要是針對優(yōu)化小文件存儲(chǔ)用的。在進(jìn)行小文件的合并時(shí)需要記錄小文件在UserFile中的偏移值和文件的大小,文件索引信息服務(wù)器存儲(chǔ)了小文件的相關(guān)元數(shù)據(jù)信息并為其建立索引,從而提高了小文件的存取效率。

2.2 小文件優(yōu)化方案的實(shí)現(xiàn)

當(dāng)客戶端上傳文件,發(fā)出上傳請求,根據(jù)文件的大小,HDFS執(zhí)行不同的操作,對于大文件則直接上傳至HDFS文件系統(tǒng)中。設(shè)置小文件的閾值為1MB,如果文件的大小小于閾值,判斷小文件的類型,根據(jù)文件的類型將小文件以追加寫的方式寫到用戶文件的不同區(qū)域中。待小文件上傳完畢,我們將小文件的大小和偏移值記錄在小文件索引信息服務(wù)器上,以便用戶快速定位小文件,對小文件進(jìn)行讀取。

當(dāng)客戶端訪問文件時(shí),發(fā)出讀取文件請求,先判斷文件大小,若是大文件就直接從HDFS集群中讀取文件。如果小于設(shè)定的文件閾值,根據(jù)文件名稱和文件類型派生出的一個(gè)哈希函數(shù),此哈希函數(shù)H(key)的值均勻分布在哈希表中,哈希表將按文件類型分離許許多多的索引文件。哈希函數(shù)的作用是定位文件分類,找到文件索引,哈希代碼除以該類型小文件數(shù)得出一個(gè)值,根據(jù)這個(gè)值定位元數(shù)據(jù)文件中的index文件(類型文件),根據(jù)文件名稱從而定位到Part文件中文件實(shí)際位置,最后根據(jù)文件大小length以流式讀取文件。在實(shí)現(xiàn)的過程中,用到了一層索引,就定位到了小文件的實(shí)際位置[9]。由于小文件的數(shù)量龐大,用文件名稱和文件類型派生出的哈希函數(shù)檢索,效率會(huì)提升很多。根據(jù)文件類型對小文件進(jìn)行一次篩選,大大縮小了檢索的范圍,能夠快速地定位小文件的位置,達(dá)到快速讀取小文件的目的。

3 實(shí)驗(yàn)結(jié)果與分析

實(shí)驗(yàn)的硬件環(huán)境:DFS服務(wù)器,小文件索引信息服務(wù)器,名稱節(jié)點(diǎn),數(shù)據(jù)節(jié)點(diǎn)。

實(shí)驗(yàn)的軟件環(huán)境:linux,Hadoop,JDK,Tomcat,Mysql。

我們用程序生成2000,5000,8000,10000,30000個(gè)不同類型的測試小文件,這些小文件的大小都是小于我們在前面設(shè)定的小文件閾值,平均大小為50KB。我們根據(jù)測試結(jié)果的平均值進(jìn)行測試數(shù)據(jù)的對比,包括改進(jìn)前和改進(jìn)后的HDFS架構(gòu)NameNode內(nèi)存消耗以及寫入文件和讀取文件的效率比較。

實(shí)驗(yàn)結(jié)果對比分析:由于改進(jìn)后的HDFS架構(gòu)的小文件元數(shù)據(jù)信息是存放在小文件索引服務(wù)器上,沒有存放到NameNode節(jié)點(diǎn)上,所以在集群啟動(dòng)時(shí),內(nèi)存并不會(huì)隨著文件的增多而占用過多內(nèi)存,如圖3所示。

從圖4可以發(fā)現(xiàn),在小文件數(shù)量小的時(shí)候,改進(jìn)后HDFS架構(gòu)文件上傳時(shí)間會(huì)比改進(jìn)前的時(shí)間長,這是由于改進(jìn)架構(gòu)后,對于小于文件閾值的小文件,我們根據(jù)文件類型的判斷,將文件以追加寫的方式寫到用戶文件的不同區(qū)域中,這樣會(huì)比改進(jìn)前直接添加元數(shù)據(jù)信息和文件所需要的時(shí)間會(huì)長一些。隨著小文件的數(shù)量趨向龐大,由于改進(jìn)的HDFS架構(gòu)的NameNode的內(nèi)存使用得到優(yōu)化,使得文件寫入的性能有所提升,但是優(yōu)化的性能不太明顯。

如圖5所示,改進(jìn)后的HDFS架構(gòu),讀取文件的速度顯著提高。這是由于改進(jìn)后的架構(gòu)中小文件是從索引服務(wù)器讀取其元數(shù)據(jù)信息、偏移值,由構(gòu)造的哈希函數(shù)所得值去定位用戶文件中的某個(gè)區(qū)域該小文件的具體位置,達(dá)到快速讀取小文件的目的。相比改進(jìn)前的架構(gòu),遍歷NameNode索引,檢索效率大大提升。

4 結(jié)束語

本文闡述了基于文件類型分類的小文件存儲(chǔ)架構(gòu),針對HDFS分布式文件系統(tǒng)在處理大量小文件時(shí)存在空間資源浪費(fèi)以及內(nèi)存消耗嚴(yán)重的問題,提出了一種根據(jù)文件類型分類的小文件合并策略。將小于文件閾值的小文件根據(jù)文件類型合并到一起,存放在用戶文件中。通過哈希函數(shù)提出一種新的索引策略,定位文件類型索引號,再根據(jù)文件名稱定位文件位置。單層索引,可以將定位文件的位置最簡化,降低了檢索文件的索引時(shí)間。改進(jìn)后的HDFS架構(gòu),有效利用了磁盤空間資源以及解決了大量小文件元數(shù)據(jù)信息在NameNode節(jié)點(diǎn)上,造成內(nèi)存過度消耗的問題,提高了小文件的存取效率,優(yōu)化了系統(tǒng)的整體性能。

在實(shí)際運(yùn)行測試環(huán)境中,改進(jìn)后的小文件存儲(chǔ)架構(gòu),能很好地解決空間資源浪費(fèi)和內(nèi)存過度消耗的問題,但同時(shí)也存在一些缺點(diǎn)和不足,比如在文件上傳時(shí)需按照文件類型分區(qū)域存儲(chǔ)在用戶文件中,這樣會(huì)花費(fèi)HDFS一些時(shí)間。下一步將研究小文件寫入效率以及參數(shù)優(yōu)化問題,小文件存儲(chǔ)架構(gòu)也需要進(jìn)一步的設(shè)計(jì)和探討。通過優(yōu)化小文件存儲(chǔ)架構(gòu),內(nèi)存利用率仍有可能加以改善。對此,我們將在后續(xù)的工作中進(jìn)一步研究和完善。

參考文獻(xiàn)(References):

[1] 唐永建.“大數(shù)據(jù)”現(xiàn)狀及發(fā)展淺談[EB\OL].http://www.

zbeic.gov.cn/art/2013/12/9/art_2344_171250.html,2013.8.

[2] 劉鵬.云計(jì)算[M].電子工業(yè)出版社,2011.

[3] 張春明,芮建武,何婷婷.一種Hadoop小文件存儲(chǔ)和讀取的

方法[J].計(jì)算機(jī)應(yīng)用與軟件,2012.11.

[4] 馬建紅,張海.基于HDFS的小文件存儲(chǔ)與讀取優(yōu)化策略[J].

計(jì)算機(jī)系統(tǒng)應(yīng)用,2014.5.

[5] 陳光景.Hadoop小文件處理技術(shù)的研究與實(shí)現(xiàn)[D].南京郵電

大學(xué),2013.3.

[6] 周國安,李強(qiáng),陳新,胡旭.云環(huán)境下海量小文件存儲(chǔ)技術(shù)研究

綜述[J].信息網(wǎng)絡(luò)安全,2014.6.

[7] 陳劍,龔發(fā)根.一種優(yōu)化分布式文件系統(tǒng)的文件合并策略[J].

計(jì)算機(jī)應(yīng)用,2011.12.

[8] 蔡睿誠.基于HDFS的小文件處理與相關(guān)MapReduce計(jì)算

模型性能的優(yōu)化與改進(jìn)[D].吉林大學(xué),2012.4.

[9] 左大鵬,徐薇.基于Hadoop處理小文件的優(yōu)化策略[J].

SOFTWARE,2015.2.

主站蜘蛛池模板: 亚洲swag精品自拍一区| 国产h视频免费观看| 国产xx在线观看| 国产97公开成人免费视频| 黄色国产在线| 99视频在线精品免费观看6| 国产高清色视频免费看的网址| 青青草国产一区二区三区| 国产网站免费观看| 国内精品自在自线视频香蕉 | 国内视频精品| 亚洲一区二区三区麻豆| 国产精品30p| 欧洲欧美人成免费全部视频| 午夜视频免费试看| 婷婷亚洲视频| 欧美在线综合视频| 狠狠操夜夜爽| 亚洲成人在线免费观看| 99久久精品国产综合婷婷| 久996视频精品免费观看| 国产精品视频公开费视频| 国产精品成人观看视频国产| 最新国产高清在线| 亚洲人成影视在线观看| 久久一本精品久久久ー99| 国产一区二区三区在线精品专区| 亚洲国产综合精品一区| 国产新AV天堂| 国产一级α片| 久99久热只有精品国产15| 91色爱欧美精品www| 久热re国产手机在线观看| 奇米影视狠狠精品7777| 国产性爱网站| 97色婷婷成人综合在线观看| 中文纯内无码H| 1024国产在线| 老熟妇喷水一区二区三区| 国产福利拍拍拍| 色爽网免费视频| 久久伊伊香蕉综合精品| 亚洲精品免费网站| 国产欧美精品一区二区 | 亚洲无码熟妇人妻AV在线| 色综合手机在线| 国产成人精品一区二区| 国产成人精品优优av| 亚洲AⅤ综合在线欧美一区| 亚洲天天更新| 亚洲精品色AV无码看| 69精品在线观看| 亚洲成a人片77777在线播放| 五月天福利视频| 香蕉视频在线观看www| 91福利在线观看视频| 成人国产三级在线播放| 国产剧情国内精品原创| 亚洲人视频在线观看| 激情综合网激情综合| 亚卅精品无码久久毛片乌克兰| 国产男女免费视频| 狠狠色噜噜狠狠狠狠色综合久 | 亚洲第一成人在线| 国产亚洲欧美日韩在线一区| 国产免费黄| 国产第一页亚洲| 亚洲精品爱草草视频在线| 日本一区二区不卡视频| 欧美人人干| 91国内在线视频| 亚洲日韩Av中文字幕无码| 国产亚洲视频中文字幕视频| 亚洲日韩高清无码| 精品在线免费播放| 国产午夜在线观看视频| 中文字幕av一区二区三区欲色| 伊人久综合| 666精品国产精品亚洲| 亚洲午夜综合网| 国产丝袜一区二区三区视频免下载| 福利在线不卡|