国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種適應(yīng)于Mapreduce計(jì)算模型的小文件存儲(chǔ)系統(tǒng)的制作方法

      文檔序號(hào):6512347閱讀:307來(lái)源:國(guó)知局
      一種適應(yīng)于Mapreduce計(jì)算模型的小文件存儲(chǔ)系統(tǒng)的制作方法【專利摘要】本發(fā)明設(shè)計(jì)了Hadoop上HDFS的在線將小文件合并到大文件的方式,如圖1,減少了MaprReduce中啟動(dòng)的map的數(shù)量。本發(fā)明主要提供了一種新的上傳小文件的接口,同時(shí)提供了對(duì)應(yīng)的輸入格式類,通過(guò)使用本發(fā)明提供的上傳接口和輸入類,能夠完成這種在線的小文件存儲(chǔ)和處理?!緦@f(shuō)明】一種適應(yīng)于Mapreduce計(jì)算模型的小文件存儲(chǔ)系統(tǒng)【
      技術(shù)領(lǐng)域
      】[0001]本發(fā)明涉及MapReduce和小文件存儲(chǔ)領(lǐng)域,具體涉及一種適應(yīng)于MapReduce計(jì)算模型的小文件存儲(chǔ)系統(tǒng)?!?br>背景技術(shù)
      】[0002]Hadoop是一個(gè)分布式的基礎(chǔ)架構(gòu),由DougCutting及其所在的Yahoo的開(kāi)發(fā)小組開(kāi)發(fā)。該開(kāi)發(fā)小組在Google發(fā)表的關(guān)于GFS和MapReduce的論文的思路下,用Java語(yǔ)言實(shí)現(xiàn)了一個(gè)類似于Google的MapReduce的實(shí)現(xiàn),即Hadoop,以及一個(gè)分布式文件系統(tǒng)HDFS。[0003]小文件問(wèn)題逐漸在學(xué)術(shù)界和工業(yè)界引起了一些關(guān)注。著名社交網(wǎng)站Facebook存儲(chǔ)了2600億張圖片,容量超過(guò)20PB,這些文件絕大部分都小于64MB?;ヂ?lián)網(wǎng)上訪問(wèn)的數(shù)據(jù)多為高訪問(wèn)頻率的小文件。[0004]GFS技術(shù)領(lǐng)導(dǎo)人SeanQuinlan在GFS訪談中提到BigTable的其中一個(gè)應(yīng)用場(chǎng)景即面向小文件。著名Hadoop應(yīng)用公司Cloudera發(fā)布的關(guān)于SmallFileProblem的報(bào)告也指出Hadoop在處理海量小文件方面存在問(wèn)題。[0005]處理這樣的小文件給HDFS的性能和擴(kuò)展性帶來(lái)了嚴(yán)重的問(wèn)題。第一,海量小文件帶來(lái)了大量的元數(shù)據(jù),因?yàn)镠DFS中的每個(gè)目錄和文件的元數(shù)據(jù)信息都存放在名稱節(jié)點(diǎn)的內(nèi)存中,如果系統(tǒng)中存在大量的小文件,則無(wú)疑會(huì)降低整個(gè)存儲(chǔ)系統(tǒng)的存儲(chǔ)效率和存儲(chǔ)能力。例如,假如系統(tǒng)中有I千萬(wàn)個(gè)小文件,每個(gè)小文件需占用一個(gè)block,則Namenode大約需要3G空間,因此Namenode的內(nèi)存容量嚴(yán)重制約了集群的擴(kuò)展。第二,訪問(wèn)大量小文件的速度遠(yuǎn)遠(yuǎn)小于訪問(wèn)幾個(gè)大文件的速度,因?yàn)槿绻L問(wèn)大量的小文件,需要不斷地從一個(gè)DataNode跳到另一個(gè)DataNote,這是一種低效的數(shù)據(jù)訪問(wèn)模式。第三,訪問(wèn)大文件與訪問(wèn)小文件使用的map任務(wù)數(shù)相差很大,例如,一個(gè)IG的文件分成16個(gè)64MB的塊,和10000個(gè)100KB(共1GB)的文件,則這10000個(gè)文件每一個(gè)都需要一個(gè)map,最終Mapreduce作業(yè)時(shí)間可能會(huì)比一個(gè)IG的作業(yè)時(shí)間長(zhǎng)數(shù)百倍。盡管Hadoop使用JVM重用等,但仍不能很好解決這些問(wèn)題。[0006]Hadoop本身提供了Hadooparchive(HAR)用來(lái)將小文件合并成大文件。HAR文件是通過(guò)HDFS上構(gòu)建一個(gè)層次化的文件系統(tǒng)來(lái)工作的,一個(gè)HAR文件是通過(guò)Hadoop的archive命令進(jìn)行創(chuàng)建,這個(gè)命令實(shí)際運(yùn)行了一個(gè)Mapreudce任務(wù)來(lái)將小文件打包成HAR文件?!?br/>發(fā)明內(nèi)容】[0007]本發(fā)明設(shè)計(jì)了一種在線的將小文件合并存儲(chǔ)的方法,并提供了適用于MapReduce計(jì)算過(guò)程的。[0008]首先,在Hadoop中,存放小文件的目錄下上傳第一個(gè)文件到Hadoop時(shí),系統(tǒng)會(huì)創(chuàng)建一個(gè)大小為64MB的大文件(稱之為塊),其中從文件偏移量為O處開(kāi)始寫入該小文件的內(nèi)容,并在塊的末尾寫入塊當(dāng)前存放的小文件數(shù)目計(jì)數(shù)1,并寫入該小文件的文件名,該小文件在塊內(nèi)的偏移量和該小文件的大小。隨后在該目錄下上傳文件時(shí),將該小文件的內(nèi)容寫入塊內(nèi)當(dāng)前空白的開(kāi)頭,并將該小文件的文件名,該小文件在塊內(nèi)的偏移量和該小文件的大小寫入空白的結(jié)尾,并更新塊末尾的小文件數(shù)目計(jì)數(shù)。換言之,小文件的內(nèi)容從塊的開(kāi)頭開(kāi)始依次存放,小文件在塊內(nèi)的檢索信息從塊的結(jié)尾依次存放,更新小文件數(shù)目計(jì)數(shù)。[0009]存放方式如圖1.[0010]MapReduce讀取該小文件時(shí),首先分析文件頭部的這些小文件信息,然后組織成key-value對(duì),在map中處理。所以需要實(shí)現(xiàn)針對(duì)該合并方案的中的小文件讀取輸入類。[0011]Hadoop中的MapReduce框架依賴InputFormat提供數(shù)據(jù),依賴OutputFormat輸出數(shù)據(jù);每一個(gè)MapReduce程序都需要通過(guò)這些類進(jìn)行輸入輸出。Hadoop提供了一系列InputFormat和OutputFormat方便開(kāi)發(fā)。如TextInputFormat用于讀取純文本文件,文件被分為一系列以LF或者CR結(jié)束的行,key是每一行的位置(偏移量,Longffritable類型),value是每一行的內(nèi)容,Text類型。KeyValueTextlnputFormat同樣用于讀取文件,如果行被分隔符(缺省是tab)分割為兩部分,第一部分為key,剩下的部分為value;如果沒(méi)有分隔符,整行作為key,value為空。SequenceFileInputFormat用于讀取sequencefile。sequencefile是Hadoop用于存儲(chǔ)數(shù)據(jù)自定義格式的binary文件。它有兩個(gè)子類:SequenceFiIeAsBinaryInputFormat,將key和value以Bytesffritable的類型讀出;SequenceFileAsTextInputFormat,將key和value以Text的類型讀出。[0012]本發(fā)明中需要自定義輸入類SmallBulkInputFormat用于從大塊的文件中讀取小文件并將每一個(gè)小文件作為一個(gè)key-value進(jìn)行map操作(這種應(yīng)用在大量圖片處理等領(lǐng)域十分常見(jiàn))?!緦@綀D】【附圖說(shuō)明】[0013]圖1是塊內(nèi)小文件存放方式示意圖。【具體實(shí)施方式】[0014]步驟1:改進(jìn)HDFS讀寫小文件的流程。[0015]Hadoop寫小文件時(shí),首先預(yù)先生成若干個(gè)64M的大塊文件,然后在NameServer收到客戶端寫文件請(qǐng)求后,根據(jù)負(fù)載均衡策略,選擇一個(gè)DataServer,接收此次寫請(qǐng)求,并將這個(gè)DataServer的信息發(fā)給客戶端,客戶端調(diào)用改進(jìn)的寫入函數(shù)接口(跟原有的寫入函數(shù)接口實(shí)現(xiàn)相同,只是函數(shù)名不一致)AataServer收到這個(gè)寫請(qǐng)求后,首先選擇一個(gè)預(yù)分配的64M的文件,將寫請(qǐng)求中小文件的內(nèi)容寫入該大文件,并在文件中記錄該小文件的檢索信息。[0016]步驟2:提供新的輸入類。[0017]首先定義SmallBulkInputFormat繼承自FileInputFormat,核心代碼下:[0018]【權(quán)利要求】1.在線的HDFS小文件存儲(chǔ),其特征在于在線存儲(chǔ)小文件,而不是HAR方式的離線的壓縮文件方式。本發(fā)明提供了新的上傳小文件的接口函數(shù),用于進(jìn)行在線的小文件存儲(chǔ)使用。2.提供新的輸入格式SmallBulkInputFormat,其特征在于:通過(guò)使用這種輸入格式類,就可以對(duì)通過(guò)使用新的上傳小文件接口創(chuàng)建的這些小文件作為一個(gè)一個(gè)的key-value進(jìn)行map操作?!疚臋n編號(hào)】G06F9/44GK103500089SQ201310430402【公開(kāi)日】2014年1月8日申請(qǐng)日期:2013年9月18日優(yōu)先權(quán)日:2013年9月18日【發(fā)明者】王雷,王魯俊,龍翔申請(qǐng)人:北京航空航天大學(xué)
      網(wǎng)友詢問(wèn)留言 已有0條留言
      • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1