HDFS學習筆記

HDFS 分佈式文件系統node


一,基本理解數據庫

       簡單而談,分佈式是分而治之,HDFS也是這個思想,將大量的大文件和大數據,分佈式的放在大量的服務器上,以便採用分而治之的方式對海量的數據進行運算分析。因此,它的做用也就是爲各種的分佈式運算框架(mapreduce,spark等)提供數據存儲服務服務器

 

        其重要的特性爲:負載均衡

        1.HDFS中的文件在物理上是分塊存儲(block),塊的大小能夠經過配置參數( dfs.blocksize)來規定,默認大小在hadoop2.x版本中是128M,老版本中是64M。框架

        2.HDFS文件系統會給客戶端提供一個統一的抽象目錄樹,客戶端經過路徑來訪問文件,形如:hdfs://namenode:port/dir-a/dir-b/dir-c/file.data。分佈式

        3.目錄結構及文件分塊信息(元數據)的管理由namenode節點承擔。oop

        4.文件的各個切片(block)的存儲管理由datanode節點承擔。大數據

        5.HDFS是設計成適應一次寫入,屢次讀出的場景,且不支持文件的修改spa

 

二,HDFS工做機制設計

        1.要清楚HDFS並非相似與網盤的的機制。

             網盤就是一個抽象化的共享,一個數據資源一個用戶上傳過,那這個資源會變爲一個鏈接,而後再一個數據庫中被共享。若是一個文件有1g,那麼每一個用戶存有這個文件的網盤大小會被佔有1g, 但其實這1g只是被抽象了的一個鏈接。

        2.HDFS集羣分爲兩大角色:NameNode(負責整個文件的元數據),DataNode(負責管理用戶的文件數據塊)。

        3.文件會按照固定大小(blocksize)切成若干塊分佈式存儲在若干臺DataNode。

        4.每個切塊能夠有多個副本,保存在不一樣的DataNode上,Datanode會按期向Namenode彙報自身所保存的文件block信息,而namenode則會負責保持文件的副本數量。

        5. HDFS的內部工做機制對客戶端保持透明,客戶端請求訪問HDFS都是經過向namenode申請來進行

 

三,NameNode的工做機制

       1,NameNode的功能:負責客戶端請求的響應,元數據的管理和修改,配置和應用副本存放策略,管理集羣數據塊負載均衡問題。

       2,NameData對數據的管理採用了三種存儲形式:內存元數據(NameSystem),磁盤元數據鏡像文件,數據操做日誌文件(可經過日誌運算出元數據)。

 

       3,元數據存儲機制:內存中有一份完整的元數據(內存 meta.data),磁盤中的一個準完整的元數據鏡像(在NameData的工做目錄中),用於銜接內存metadata和持久化元數據鏡像fsimage之間的操做日誌(edits文件)。

       注:當客戶端對HDFS中的文件進行增刪時,操做記錄會記錄在edits日誌文件中,當客戶端操做成功後,相應的元數據會更新到內存meta.data。

       4,元數據的checkpoint:每隔一段時間,seconder namenode將namenode上積累的edits和一個最新的fsimage下載到本地,並加載到內存進行merge(這個過程稱爲checkpoint)。namenode和secondary namenode的工做目錄存儲結構徹底相同,因此,當namenode故障退出須要從新恢復時,能夠從secondary namenode的工做目錄中將fsimage拷貝到namenode的工做目錄,以恢復namenode的元數。

 

四,DataNode的工做機制

       1,DataNode的功能:儲存管理用戶的文件塊數據,按期向NameNode彙報自身所持有的block信息(經過心跳信息上傳,當集羣中有的副本失效時,NameNode就能及時恢復數據)。

 

五,HDFS寫數據的流程

 

 

       簡述:客戶端要向HDFS寫數據,首先要向NameNode通訊以確承認以寫數據並得到接收block(數據塊)的DataNode  ,而後客戶端按照順序將逐個block發送給相對應的DatanNode。最後,由接收block的DAtaNode向 其餘的DataNone複製備份。

 

六,HDFS讀數據的流程

 

 

       簡述:客戶端將要讀取的文件路徑發送給NameNode,NameNode獲取文件的元數據(主要是block的存放位置)返回客戶端,客戶端根據返回的信息找到相對應的DataNode依次讀取文件的block,在客戶端進行數據追加合併獲得整個文件。

相關文章
相關標籤/搜索