- 相關(guān)推薦
基于Hadoop分布式文件系統(tǒng)的單點(diǎn)問題的研究論文
1 引言
如今網(wǎng)絡(luò)的飛速發(fā)展,數(shù)據(jù)量的增多,這就要求數(shù)據(jù)庫(kù)能夠具有處理超大規(guī)模數(shù)據(jù)的能力。Hadoop分布式平臺(tái)的出現(xiàn),很好地解決了處理海量數(shù)據(jù)的難題。Hadoop集群架構(gòu)有兩個(gè)核心的設(shè)計(jì),分別是HDFS(Hadoop Distributed FileSystem)和MapReduce。由于HDFS只有一個(gè)元數(shù)據(jù)服務(wù)器NameNode,導(dǎo)致HDFS存在單點(diǎn)故障,單點(diǎn)內(nèi)存不足等問題。本文在分析研究HDFS單點(diǎn)問題的基礎(chǔ)上,針對(duì)單點(diǎn)內(nèi)存瓶頸問題,提出了一種新型的上層歸檔文件系統(tǒng),用來(lái)優(yōu)化海量小文件的處理,可有效地解決單點(diǎn)內(nèi)存瓶頸問題。
2 HDFS架構(gòu)
Hadoop分布式文件系統(tǒng)(HDFS)是Hadoop分布式平臺(tái)的一個(gè)核心組件,其設(shè)計(jì)目的是為了解決超大文件存儲(chǔ)難題。HDFS是由一個(gè)主節(jié)點(diǎn)和多個(gè)子節(jié)點(diǎn)構(gòu)成的主從結(jié)構(gòu)。主節(jié)點(diǎn)被稱為名稱節(jié)點(diǎn)(NameNode),子節(jié)點(diǎn)被稱為數(shù)據(jù)節(jié)點(diǎn)(DataNode)。
名稱節(jié)點(diǎn)主要負(fù)責(zé)管理分布式文件系統(tǒng)中的元數(shù)據(jù)信息,處理用戶文件訪問操作請(qǐng)求等。而被上傳到Hadoop分布式文件系統(tǒng)中的大數(shù)據(jù)則保存在數(shù)據(jù)節(jié)點(diǎn)中。通過心跳機(jī)制,每隔一段時(shí)間數(shù)據(jù)節(jié)點(diǎn)與名稱節(jié)點(diǎn)進(jìn)行信息交互。
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ù)整個(gè)分布式文件系統(tǒng)的元數(shù)據(jù)信息,即:FSImage信息和EditLog信息。NameNode又決定了大數(shù)據(jù)文件與數(shù)據(jù)塊之間的映射,數(shù)據(jù)塊與數(shù)據(jù)節(jié)點(diǎn)之間的映射,處理客戶端發(fā)來(lái)的文件操作訪問請(qǐng)求。
數(shù)據(jù)節(jié)點(diǎn)(DataNode)主要負(fù)責(zé)存儲(chǔ)數(shù)據(jù)文件,并且每隔一段時(shí)間向主節(jié)點(diǎn)發(fā)送存儲(chǔ)數(shù)據(jù)映射列表。
數(shù)據(jù)塊(Data Block)。分布式文件系統(tǒng)存儲(chǔ)的數(shù)據(jù)都存儲(chǔ)在數(shù)據(jù)塊中。上傳的數(shù)據(jù)文件首先被分割成默認(rèn)大小64MB的數(shù)據(jù)塊,然后文件以數(shù)據(jù)塊的形式存放在不同的DataNode節(jié)點(diǎn)上,是分布式文件系統(tǒng)存儲(chǔ)數(shù)據(jù)的基本單位。為了防止數(shù)據(jù)塊丟失,每塊默認(rèn)復(fù)制三塊,其中兩個(gè)數(shù)據(jù)塊存儲(chǔ)在一個(gè)機(jī)架中,另一個(gè)數(shù)據(jù)塊則被存儲(chǔ)在其他的機(jī)架中,大大提高了HDFS數(shù)據(jù)的可用性。
數(shù)據(jù)包(Data Packet)。在執(zhí)行寫操作時(shí),需要將上傳的數(shù)據(jù)先保存在本地目錄中,待累計(jì)到系統(tǒng)規(guī)定值后才將數(shù)據(jù)一次寫入到Hadoop分布式文件系統(tǒng)中。這樣,每次上傳的數(shù)據(jù)稱為一個(gè)數(shù)據(jù)包。
3 NameNode單點(diǎn)問題分析
3.1 單點(diǎn)故障
單點(diǎn)故障是指引起系統(tǒng)整體失效的部件,當(dāng)該部件失效時(shí),會(huì)造成整個(gè)系統(tǒng)無(wú)法工作。Hadoop分布式文件系統(tǒng)由一個(gè)主節(jié)點(diǎn)和多個(gè)子節(jié)點(diǎn)構(gòu)成的。NameNode節(jié)點(diǎn)負(fù)責(zé)管理和維護(hù)所有的命名空間和元數(shù)據(jù)信息,名稱節(jié)點(diǎn)主要負(fù)責(zé)管理分布式文件系統(tǒng)中的元數(shù)據(jù)信息,處理用戶文件訪問操作請(qǐng)求等。一旦發(fā)生主節(jié)點(diǎn)故障會(huì)使整個(gè)系統(tǒng)無(wú)法正常工作,這對(duì)于使用者來(lái)說(shuō)是災(zāi)難性的。
3.2 性能瓶頸
NameNode節(jié)點(diǎn)主要負(fù)責(zé)管理并維護(hù)整個(gè)分布式文件系統(tǒng)的元數(shù)據(jù)信息,處理用戶文件訪問操作請(qǐng)求。每次用戶發(fā)出文件訪問操作請(qǐng)求時(shí),NameNode節(jié)點(diǎn)都需要響應(yīng)客戶端的請(qǐng)求。由于HDFS僅有一個(gè)名稱節(jié)點(diǎn),當(dāng)大量客戶端同時(shí)發(fā)出文件訪問操作請(qǐng)求,單一的名稱節(jié)點(diǎn)無(wú)法及時(shí)一一做出響應(yīng),這必然會(huì)對(duì)HDFS正常運(yùn)行造成嚴(yán)重的影響,是HDFS的性能瓶頸。
3.3 內(nèi)存瓶頸
NameNode節(jié)點(diǎn)中保存了整個(gè)系統(tǒng)的命名空間,負(fù)責(zé)管理并維護(hù)整個(gè)分布式文件系統(tǒng)的元數(shù)據(jù)信息,即:FSImage信息和EditLog信息。對(duì)于每個(gè)上傳的文件,NameNode節(jié)點(diǎn)會(huì)為其自動(dòng)生成相應(yīng)的元數(shù)據(jù)信息,而這些元數(shù)據(jù)信息會(huì)占用少許的主節(jié)點(diǎn)內(nèi)存空間。HDFS適合存儲(chǔ)大數(shù)據(jù)文件,一般情況下,NameNode節(jié)點(diǎn)存儲(chǔ)的元數(shù)據(jù)信息不會(huì)對(duì)整個(gè)Hadoop集群造成影響。上傳文件后,用戶更多的是與數(shù)據(jù)節(jié)點(diǎn)進(jìn)行訪問交互,不會(huì)對(duì)訪問性能造成影響。然而用戶選擇上傳海量的小文件時(shí),元數(shù)據(jù)節(jié)點(diǎn)需要為每個(gè)小文件生成對(duì)應(yīng)的元數(shù)據(jù)信息,這勢(shì)必對(duì)NameNode單點(diǎn)內(nèi)存性能造成影響,從而對(duì)整個(gè)Hadoop集群的擴(kuò)展性造成影響。一般,當(dāng)用戶上傳小文件數(shù)量達(dá)到一億,相應(yīng)的元數(shù)據(jù)信息約占主節(jié)點(diǎn)20G的存儲(chǔ)空間。若上傳的小文件以指數(shù)級(jí)增長(zhǎng),HDFS集群將不足以支持海量文件的存儲(chǔ)。同樣,NameNode內(nèi)存瓶頸嚴(yán)重制約了集群的擴(kuò)展。
4 對(duì)小文件存儲(chǔ)優(yōu)化的實(shí)現(xiàn)
上傳小文件前,首先對(duì)海量小文件進(jìn)行預(yù)處理,將本地目錄中需要處理的小文件寫入HashMap集合中,同時(shí)通過格式轉(zhuǎn)換生成文件流式集合,其中小文件文件名作為key,文件內(nèi)容作為value。然后以SequenceFile作為容器,再將HashMap中存儲(chǔ)的海量小文件進(jìn)行歸檔合并成一個(gè)大文件。最后,將合并后的大文件上傳Hadoop服務(wù)器序列化存儲(chǔ)在HDFS中,從而緩解了NameNode節(jié)點(diǎn)內(nèi)存瓶頸問題。
SmallFilesWrite類中,成員變量有兩個(gè),就是String類型的靜態(tài)成員變量SOURCE_PATH和TARGET_PATH,SOURCE_PATH變量表示源路徑,即預(yù)上傳文件本地目錄路徑。TARGET_PATH表示目標(biāo)路徑,即上傳到指定Hadoop分布式文件系統(tǒng)路徑。成員方法主要有readFiles方法、file2Bytes方法和main方法。
5 結(jié)論
本文針對(duì)Hadoop分布式文件系統(tǒng)的單點(diǎn)內(nèi)存瓶頸問題,提出了采用小文件歸并的優(yōu)化算法。根據(jù)Hadoop存儲(chǔ)數(shù)據(jù)特點(diǎn),利用小文件合并大文件,可有效減少元數(shù)據(jù)的生成,解決了單點(diǎn)內(nèi)存瓶頸問題。在Hadoop分布式文件系統(tǒng)單點(diǎn)內(nèi)存瓶頸優(yōu)化的基礎(chǔ)上,對(duì)Hadoop分布式文件系統(tǒng)的性能瓶頸的優(yōu)化將是本人未來(lái)主要研究的內(nèi)容。
【基于Hadoop分布式文件系統(tǒng)的單點(diǎn)問題的研究論文】相關(guān)文章:
基于問題導(dǎo)引的探究式教學(xué)研究論文08-03
高職院;趩栴}模式的高等數(shù)學(xué)教學(xué)的研究論文05-06
基于渠道建設(shè)的體育用品營(yíng)銷創(chuàng)新問題的研究論文04-28
基于幼兒園日常問題的項(xiàng)目式研究的組織與實(shí)施論文04-25
電壓跌落問題的研究論文05-05
淺談急診急救的問題的研究論文04-27
成本核算的問題研究論文05-01