• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

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

      2016-10-28 09:30朱永強周珂李丹趙亞萌
      計算機時代 2016年9期
      關(guān)鍵詞:文件類型

      朱永強++周珂++李丹++趙亞萌

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

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

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

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

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

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

      1.1 HDFS基本架構(gòu)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

      3 實驗結(jié)果與分析

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

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

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

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

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

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

      4 結(jié)束語

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

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

      參考文獻(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] 劉鵬.云計算[M].電子工業(yè)出版社,2011.

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

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

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

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

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

      大學(xué),2013.3.

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

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

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

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

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

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

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

      SOFTWARE,2015.2.

      猜你喜歡
      文件類型
      利用“WinFR界面版” 恢復(fù)文件更簡單
      快速替換文件類型的默認(rèn)圖標(biāo)
      讓桌面圖標(biāo)的使用更快捷
      Windows 10默認(rèn)應(yīng)用總重置?一分鐘搞定
      共享文件有變化 監(jiān)視報告有辦法
      小工具讓全文搜索更便捷
      把我的秘密藏起來
      Kickass Undelete
      繞過黑客鏈 解包不中招
      TC幫忙 快速找到需要的文件
      绥江县| 迭部县| 穆棱市| 武陟县| 灵璧县| 铜川市| 抚松县| 南木林县| 霞浦县| 宜川县| 瑞金市| 普兰县| 祁门县| 岳阳县| 大同县| 获嘉县| 佛坪县| 盐池县| 聂荣县| 孟州市| 吉首市| 军事| 济阳县| 日照市| 犍为县| 凉山| 即墨市| 营山县| 上林县| 沂源县| 航空| 仲巴县| 石楼县| 临江市| 团风县| 诸暨市| 光泽县| 平江县| 武清区| 广汉市| 璧山县|