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