亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Hadoop分布式文件系統(tǒng)的單點(diǎn)問題的研究

        2014-12-13 20:01:48宋繼紅,李夢楠,郝得智
        軟件工程 2014年12期

        宋繼紅,李夢楠,郝得智

        摘? 要:從Hadoop分布式文件系統(tǒng)的架構(gòu)出發(fā),對NameNode節(jié)點(diǎn)存在的單點(diǎn)問題進(jìn)行了分析與研究。在這個前提下,針對單點(diǎn)內(nèi)存瓶頸問題,提出了一個小文件歸并算法。此算法以Hadoop為基礎(chǔ),利用Hadoop分布式文件系統(tǒng)的特點(diǎn),將歸并后生成的大文件序列化到Hadoop分布式文件系統(tǒng),很好地解決了小文件過多時NameNode單點(diǎn)內(nèi)存瓶頸問題,并提高了系統(tǒng)的性能和可靠性。

        關(guān)鍵詞:Hadoop;小文件歸并;分布式文件系統(tǒng)

        中圖分類號:TP393.0?????????? 文獻(xiàn)標(biāo)識碼:A

        1?? 引言(Introduction)

        如今網(wǎng)絡(luò)的飛速發(fā)展,數(shù)據(jù)量的增多,這就要求數(shù)據(jù)庫能夠具有處理超大規(guī)模數(shù)據(jù)的能力。Hadoop分布式平臺的出現(xiàn),很好地解決了處理海量數(shù)據(jù)的難題。Hadoop集群架構(gòu)有兩個核心的設(shè)計,分別是HDFS(Hadoop Distributed File System)和MapReduce[1]。由于HDFS只有一個元數(shù)據(jù)服務(wù)器NameNode,導(dǎo)致HDFS存在單點(diǎn)故障,單點(diǎn)內(nèi)存不足等問題。本文在分析研究HDFS單點(diǎn)問題的基礎(chǔ)上,針對單點(diǎn)內(nèi)存瓶頸問題,提出了一種新型的上層歸檔文件系統(tǒng),用來優(yōu)化海量小文件的處理,可有效地解決單點(diǎn)內(nèi)存瓶頸問題。

        2?? HDFS架構(gòu)(HDFS architecture)

        Hadoop分布式文件系統(tǒng)(HDFS)是Hadoop分布式平臺的一個核心組件,其設(shè)計目的是為了解決超大文件存儲難題[2]。HDFS是由一個主節(jié)點(diǎn)和多個子節(jié)點(diǎn)構(gòu)成的主從結(jié)構(gòu)。主節(jié)點(diǎn)被稱為名稱節(jié)點(diǎn)(NameNode),子節(jié)點(diǎn)被稱為數(shù)據(jù)節(jié)點(diǎn)(DataNode)。HDFS的架構(gòu)圖如圖1所示。

        圖1 HDFS架構(gòu)圖

        Fig.1 The architecture diagram of HDFS

        名稱節(jié)點(diǎn)主要負(fù)責(zé)管理分布式文件系統(tǒng)中的元數(shù)據(jù)信息,處理用戶文件訪問操作請求等。而被上傳到Hadoop分布式文件系統(tǒng)中的大數(shù)據(jù)則保存在數(shù)據(jù)節(jié)點(diǎn)中。通過心跳機(jī)制,每隔一段時間數(shù)據(jù)節(jié)點(diǎn)與名稱節(jié)點(diǎn)進(jìn)行信息交互[3]。

        Hadoop分布式文件系統(tǒng)包含名稱節(jié)點(diǎn)、數(shù)據(jù)節(jié)點(diǎn)、數(shù)據(jù)塊、數(shù)據(jù)包等組件。

        名稱節(jié)點(diǎn)(NameNode)是HDFS的主節(jié)點(diǎn),負(fù)責(zé)管理并維護(hù)整個分布式文件系統(tǒng)的元數(shù)據(jù)信息,即:FSImage信息和EditLog信息[4]。NameNode又決定了大數(shù)據(jù)文件與數(shù)據(jù)塊之間的映射,數(shù)據(jù)塊與數(shù)據(jù)節(jié)點(diǎn)之間的映射,處理客戶端發(fā)來的文件操作訪問請求。

        數(shù)據(jù)節(jié)點(diǎn)(DataNode)主要負(fù)責(zé)存儲數(shù)據(jù)文件,并且每隔一段時間向主節(jié)點(diǎn)發(fā)送存儲數(shù)據(jù)映射列表。

        數(shù)據(jù)塊(Data Block)。分布式文件系統(tǒng)存儲的數(shù)據(jù)都存儲在數(shù)據(jù)塊中[5]。上傳的數(shù)據(jù)文件首先被分割成默認(rèn)大小64MB的數(shù)據(jù)塊,然后文件以數(shù)據(jù)塊的形式存放在不同的DataNode節(jié)點(diǎn)上,是分布式文件系統(tǒng)存儲數(shù)據(jù)的基本單位。為了防止數(shù)據(jù)塊丟失,每塊默認(rèn)復(fù)制三塊,其中兩個數(shù)據(jù)塊存儲在一個機(jī)架中,另一個數(shù)據(jù)塊則被存儲在其他的機(jī)架中,大大提高了HDFS數(shù)據(jù)的可用性。

        數(shù)據(jù)包(Data Packet)。在執(zhí)行寫操作時,需要將上傳的數(shù)據(jù)先保存在本地目錄中,待累計到系統(tǒng)規(guī)定值后才將數(shù)據(jù)一次寫入到Hadoop分布式文件系統(tǒng)中。這樣,每次上傳的數(shù)據(jù)稱為一個數(shù)據(jù)包。

        3?? NameNode單點(diǎn)問題分析(NameNode single

        point problem analysis)

        3.1?? 單點(diǎn)故障

        單點(diǎn)故障是指引起系統(tǒng)整體失效的部件,當(dāng)該部件失效時,會造成整個系統(tǒng)無法工作。Hadoop分布式文件系統(tǒng)由一個主節(jié)點(diǎn)和多個子節(jié)點(diǎn)構(gòu)成的。NameNode節(jié)點(diǎn)負(fù)責(zé)管理和維護(hù)所有的命名空間和元數(shù)據(jù)信息,名稱節(jié)點(diǎn)主要負(fù)責(zé)管理分布式文件系統(tǒng)中的元數(shù)據(jù)信息,處理用戶文件訪問操作請求等。一旦發(fā)生主節(jié)點(diǎn)故障會使整個系統(tǒng)無法正常工作,這對于使用者來說是災(zāi)難性的。

        3.2?? 性能瓶頸

        NameNode節(jié)點(diǎn)主要負(fù)責(zé)管理并維護(hù)整個分布式文件系統(tǒng)的元數(shù)據(jù)信息,處理用戶文件訪問操作請求。每次用戶發(fā)出文件訪問操作請求時,NameNode節(jié)點(diǎn)都需要響應(yīng)客戶端的請求[6]。由于HDFS僅有一個名稱節(jié)點(diǎn),當(dāng)大量客戶端同時發(fā)出文件訪問操作請求,單一的名稱節(jié)點(diǎn)無法及時一一做出響應(yīng),這必然會對HDFS正常運(yùn)行造成嚴(yán)重的影響,是HDFS的性能瓶頸。

        3.3?? 內(nèi)存瓶頸

        NameNode節(jié)點(diǎn)中保存了整個系統(tǒng)的命名空間,負(fù)責(zé)管理并維護(hù)整個分布式文件系統(tǒng)的元數(shù)據(jù)信息,即:FSImage信息和EditLog信息。對于每個上傳的文件,NameNode節(jié)點(diǎn)會為其自動生成相應(yīng)的元數(shù)據(jù)信息,而這些元數(shù)據(jù)信息會占用少許的主節(jié)點(diǎn)內(nèi)存空間[7]。HDFS適合存儲大數(shù)據(jù)文件,一般情況下,NameNode節(jié)點(diǎn)存儲的元數(shù)據(jù)信息不會對整個Hadoop集群造成影響。上傳文件后,用戶更多的是與數(shù)據(jù)節(jié)點(diǎn)進(jìn)行訪問交互,不會對訪問性能造成影響。然而用戶選擇上傳海量的小文件時,元數(shù)據(jù)節(jié)點(diǎn)需要為每個小文件生成對應(yīng)的元數(shù)據(jù)信息,這勢必對NameNode單點(diǎn)內(nèi)存性能造成影響,從而對整個Hadoop集群的擴(kuò)展性造成影響。一般,當(dāng)用戶上傳小文件數(shù)量達(dá)到一億,相應(yīng)的元數(shù)據(jù)信息約占主節(jié)點(diǎn)20G的存儲空間。若上傳的小文件以指數(shù)級增長,HDFS集群將不足以支持海量文件的存儲。同樣,NameNode內(nèi)存瓶頸嚴(yán)重制約了集群的擴(kuò)展。endprint

        目前,Hadoop0.18.0版本引入了HAR(Hadoop archives)技術(shù),它可以將眾多小文件打包成一個大文件進(jìn)行存儲,減少HDFS中小文件數(shù)量,主要解決的是小文件占用大量Namenode內(nèi)存空間。但是它是一個人工干預(yù)的過程,同時既不能夠支持自動刪除原小文件,也不支持追加操作,當(dāng)有新文件進(jìn)來以后,需要重新打包。還有一些針對具體問題的小文件解決方案,如WebGIS提出適用于地理信息系統(tǒng)信息存儲機(jī)制,和指定存儲格式為PPT格式的解決方案。這些解決方案可以有效解決HDFS單點(diǎn)內(nèi)存瓶頸問題[8],但均局限于指定的應(yīng)用環(huán)境,不適用其他類型文件的存儲,如海量存儲MP3格式的文件。

        針對HDFS單點(diǎn)內(nèi)存瓶頸問題,本文提出了新型的上層歸檔文件系統(tǒng),用來優(yōu)化海量小文件的處理。

        4? 對小文件存儲優(yōu)化的實(shí)現(xiàn)(Implementation of

        small file storage optimization)

        4.1?? 基本思想

        上傳小文件前,首先對海量小文件進(jìn)行預(yù)處理,將本地目錄中需要處理的小文件寫入HashMap集合中,同時通過格式轉(zhuǎn)換生成文件流式集合,其中小文件文件名作為key,文件內(nèi)容作為value。然后以SequenceFile作為容器,再將HashMap中存儲的海量小文件進(jìn)行歸檔合并成一個大文件。最后,將合并后的大文件上傳Hadoop服務(wù)器序列化存儲在HDFS中,從而緩解了NameNode節(jié)點(diǎn)內(nèi)存瓶頸問題。處理海量小文件流程如圖2所示。

        圖2 海量小文件處理

        Fig.2 Massive small files processing

        4.2?? SmallFilesWrite類的實(shí)現(xiàn)

        SmallFilesWrite類中,成員變量有兩個,就是String類型的靜態(tài)成員變量SOURCE_PATH和TARGET_PATH,SOURCE_PATH變量表示源路徑,即預(yù)上傳文件本地目錄路徑。TARGET_PATH表示目標(biāo)路徑,即上傳到指定Hadoop分布式文件系統(tǒng)路徑。成員方法主要有readFiles方法、file2Bytes方法和main方法。

        (1)readFiles方法

        上傳小文件前,首先對海量小文件進(jìn)行預(yù)處理,將本地目錄中需要處理的小文件寫入HashMap集合中,其中小文件文件名作為key,文件內(nèi)容作為value。

        首先,在readFiles方法中創(chuàng)建一個File的對象directory,然后調(diào)用listFiles方法獲取SOURCE_PATH指定路徑中的文件的內(nèi)容。將獲取的文件存儲在創(chuàng)建的File[]數(shù)組中。最后map對象調(diào)用put方法,將讀取的小文件循環(huán)寫入到HashMap集合中。這里file[]數(shù)組元素調(diào)用getName方法獲取文件名,作為Map集合中的key,同時調(diào)用file2Bytes方法,將文件內(nèi)容作為Map集合中的value存儲。

        (2)file2Bytes方法

        在Hadoop分布式文件系統(tǒng)中,讀寫數(shù)據(jù)的方式滿足流式讀寫,目的可以提高數(shù)據(jù)訪問的吞吐量。為支持不同格式小文件合并,編寫了一個file2Bytes方法,該方法的形式參數(shù)為String類型的filename,這個參數(shù)代表本地目錄中預(yù)處理文件的文件名。創(chuàng)建FileInputStream對象fis,對其進(jìn)行初始化,并拋出異常。然后使用對象fis的available方法,目的使其可以不受阻塞地從此輸入流中讀?。ɑ蛱^)的估計剩余字節(jié)數(shù)。再然后定義一個byte類型的long_buf數(shù)組,將本地目錄中的小文件進(jìn)行格式轉(zhuǎn)換,轉(zhuǎn)換成字節(jié)流寫入long_buf數(shù)組中。這樣讀寫數(shù)據(jù)的方式滿足流式讀寫,同時解決了不同格式的小文件合并問題。

        (3)main方法

        main方法實(shí)現(xiàn)了將海量小文件進(jìn)行歸并處理,生成一個大文件,最后將其分布并發(fā)存儲到HDFS中。通過遍歷Map,迭代輸出集合中元素;創(chuàng)建Text對象key,BytesWritable對象value,key調(diào)用set方法獲取輸出集合中元素的key值,value調(diào)用set方法獲取拷貝的文件內(nèi)容,偏移量及文件長度;返回一個SequenceFile.Writer實(shí)例,這里需要創(chuàng)建FileSystem和Path對象,將數(shù)據(jù)內(nèi)容寫入path對象,調(diào)用append方法完成小文件的追加寫入。實(shí)現(xiàn)將海量小文件歸并處理,生成一個大文件。

        4.3?? 文件的訪問

        自定義一個FileOutputStream文件輸出流對象,指定輸出目錄將需要訪問的文件流式讀出,將讀出的文件返回給需要訪問的用戶。訪問某文件時,首先獲取SmallFilesWrite中HDFS中輸入目錄,創(chuàng)建SequenceFile.Reader對象,通過迭代獲取序列文件名和該文件名所對應(yīng)的文件。

        5?? 結(jié)論(Conclusion)

        本文針對Hadoop分布式文件系統(tǒng)的單點(diǎn)內(nèi)存瓶頸問題,提出了采用小文件歸并的優(yōu)化算法。根據(jù)Hadoop存儲數(shù)據(jù)特點(diǎn),利用小文件合并大文件,可有效減少元數(shù)據(jù)的生成,解決了單點(diǎn)內(nèi)存瓶頸問題。在Hadoop分布式文件系統(tǒng)單點(diǎn)內(nèi)存瓶頸優(yōu)化的基礎(chǔ)上,對Hadoop分布式文件系統(tǒng)的性能瓶頸的優(yōu)化將是本人未來主要研究的內(nèi)容。

        參考文獻(xiàn)(Reference)

        [1] Tom White,Hadoop.周敏齊,等,譯.權(quán)威指南(第二版)[M].北

        京:清華大學(xué)出版社,2011.

        [2] Chuck Lam.Hadoop.韓冀中,譯.實(shí)戰(zhàn)[M].北京:人民郵電出版

        社,2011.

        [3] 雷萬云,等.云計算:技術(shù)、平臺及應(yīng)用案例[M].北京:清華大

        學(xué)出版社,2011.

        [4] The Apache Software Foundation HDFS ArchitectureGuide[EB/

        OL].[2011-05-04].http://hadoop.apache.org/co-mmon/docs/

        current/hdfs_design.html.

        [5] DANIELN,RICH Wolski,CHRISG,etal.The Eucalyptus

        OpenSource Cloud-Computing System[J].IEEE Computer

        Society,2009,24(08):124-131.

        [6] Venner J. Pro Hadoop[M]. New York:Apress,2009.

        [7] Hadoop[EB/OL],http://hadoop.apache.org/.2011.

        [8] Grant Mackey,Saba Sehrish,Jun Wang.Improving Metadata

        Management for Small Files in HDFS[J].IEEE International

        Conference on Cluster Computing and Workshops,2009:1-4.

        作者簡介:

        宋繼紅(1963-),女,碩士,副教授.研究領(lǐng)域:計算機(jī)網(wǎng)絡(luò)

        通信,計算機(jī)網(wǎng)絡(luò)遠(yuǎn)程控制,嵌入式技術(shù).

        李夢楠(1989-),男,碩士生.研究領(lǐng)域:計算機(jī)網(wǎng)絡(luò).

        郝得智(1989-),男,碩士生.研究領(lǐng)域:計算機(jī)控制.endprint

        [2] Chuck Lam.Hadoop.韓冀中,譯.實(shí)戰(zhàn)[M].北京:人民郵電出版

        ;?;?;?;?; 社,2011.

        [3] 雷萬云,等.云計算:技術(shù)、平臺及應(yīng)用案例[M].北京:清華大

        ;?;?;?; 學(xué)出版社,2011.

        [4] The Apache Software Foundation HDFS ArchitectureGuide[EB/

        ;?;?;?; OL].[2011-05-04].http://hadoop.apache.org/co-mmon/docs/

        ;?;?;?; current/hdfs_design.html.

        [5] DANIELN,RICH Wolski,CHRISG,etal.The Eucalyptus

        ;?;?; OpenSource Cloud-Computing System[J].IEEE Computer

        ;?;?;?;?; Society,2009,24(08):124-131.

        [6] Venner J. Pro Hadoop[M]. New York:Apress,2009.

        [7] Hadoop[EB/OL],http://hadoop.apache.org/.2011.

        [8] Grant Mackey,Saba Sehrish,Jun Wang.Improving Metadata

        ;?; Management for Small Files in HDFS[J].IEEE International

        ;?;?;?; Conference on Cluster Computing and Workshops,2009:1-4.

        作者簡介:

        宋繼紅(1963-),女,碩士,副教授.研究領(lǐng)域:計算機(jī)網(wǎng)絡(luò)

        ;?;?;?;?;?; 通信,計算機(jī)網(wǎng)絡(luò)遠(yuǎn)程控制,嵌入式技術(shù).

        李夢楠(1989-),男,碩士生.研究領(lǐng)域:計算機(jī)網(wǎng)絡(luò).

        郝得智(1989-),男,碩士生.研究領(lǐng)域:計算機(jī)控制.endprint

        [2] Chuck Lam.Hadoop.韓冀中,譯.實(shí)戰(zhàn)[M].北京:人民郵電出版

        ;?;?;?;?; 社,2011.

        [3] 雷萬云,等.云計算:技術(shù)、平臺及應(yīng)用案例[M].北京:清華大

        ;?;?;?; 學(xué)出版社,2011.

        [4] The Apache Software Foundation HDFS ArchitectureGuide[EB/

        ;?;?;?; OL].[2011-05-04].http://hadoop.apache.org/co-mmon/docs/

        ;?;?;?; current/hdfs_design.html.

        [5] DANIELN,RICH Wolski,CHRISG,etal.The Eucalyptus

        ;?;?; OpenSource Cloud-Computing System[J].IEEE Computer

        ;?;?;?;?; Society,2009,24(08):124-131.

        [6] Venner J. Pro Hadoop[M]. New York:Apress,2009.

        [7] Hadoop[EB/OL],http://hadoop.apache.org/.2011.

        [8] Grant Mackey,Saba Sehrish,Jun Wang.Improving Metadata

        ;?; Management for Small Files in HDFS[J].IEEE International

        ;?;?;?; Conference on Cluster Computing and Workshops,2009:1-4.

        作者簡介:

        宋繼紅(1963-),女,碩士,副教授.研究領(lǐng)域:計算機(jī)網(wǎng)絡(luò)

        ;?;?;?;?;?; 通信,計算機(jī)網(wǎng)絡(luò)遠(yuǎn)程控制,嵌入式技術(shù).

        李夢楠(1989-),男,碩士生.研究領(lǐng)域:計算機(jī)網(wǎng)絡(luò).

        郝得智(1989-),男,碩士生.研究領(lǐng)域:計算機(jī)控制.endprint

        [2] Chuck Lam.Hadoop.韓冀中,譯.實(shí)戰(zhàn)[M].北京:人民郵電出版

        ;?;?;?;?; 社,2011.

        [3] 雷萬云,等.云計算:技術(shù)、平臺及應(yīng)用案例[M].北京:清華大

        ;?;?;?; 學(xué)出版社,2011.

        [4] The Apache Software Foundation HDFS ArchitectureGuide[EB/

        ;?;?;?; OL].[2011-05-04].http://hadoop.apache.org/co-mmon/docs/

        ;?;?;?; current/hdfs_design.html.

        [5] DANIELN,RICH Wolski,CHRISG,etal.The Eucalyptus

        ;?;?; OpenSource Cloud-Computing System[J].IEEE Computer

        ;?;?;?;?; Society,2009,24(08):124-131.

        [6] Venner J. Pro Hadoop[M]. New York:Apress,2009.

        [7] Hadoop[EB/OL],http://hadoop.apache.org/.2011.

        [8] Grant Mackey,Saba Sehrish,Jun Wang.Improving Metadata

        ;?; Management for Small Files in HDFS[J].IEEE International

        ;?;?;?; Conference on Cluster Computing and Workshops,2009:1-4.

        作者簡介:

        宋繼紅(1963-),女,碩士,副教授.研究領(lǐng)域:計算機(jī)網(wǎng)絡(luò)

        ;?;?;?;?;?; 通信,計算機(jī)網(wǎng)絡(luò)遠(yuǎn)程控制,嵌入式技術(shù).

        李夢楠(1989-),男,碩士生.研究領(lǐng)域:計算機(jī)網(wǎng)絡(luò).

        郝得智(1989-),男,碩士生.研究領(lǐng)域:計算機(jī)控制.endprint

        国产网友自拍视频在线观看| 少妇人妻在线视频| 久久亚洲国产成人亚| 国产性感主播一区二区| 青春草免费在线观看视频| 天天天天躁天天爱天天碰| 无码日日模日日碰夜夜爽| 亚洲一级天堂作爱av| 影音先锋久久久久av综合网成人| 国产卡一卡二卡三| 亚洲国产精品悠悠久久琪琪| 夜色视频在线观看麻豆| 青春草在线视频观看| 国产精品igao视频| AV无码免费不卡在线观看| 国内偷拍精品一区二区| 久久伊人少妇熟女大香线蕉| 亚洲黄色电影| 日韩女优一区二区视频| 女同同志熟女人妻二区| 亚洲色婷婷一区二区三区| 中文字幕久久久久人妻无码 | 人妻av在线一区二区三区| 久久精品中文字幕| 中文字幕人妻中文av不卡专区| 国产丝袜无码一区二区三区视频| 日韩欧美国产自由二区| 中文亚洲一区二区三区| 丝袜美腿在线观看一区| 国产成人精品综合在线观看| 女人体免费一区二区| 少妇深夜吞精一区二区| 成年免费a级毛片免费看| 四虎成人精品无码永久在线| 偷拍女厕尿尿在线免费看| 日本不卡在线视频二区三区| 国产美女自慰在线观看| 三级全黄的视频在线观看| 国产情侣亚洲自拍第一页| 无码任你躁久久久久久老妇| 国产成人美女AV|