hdfs 概述

hdfs 

簡單說是分佈式的文件系統 

 

一、hdfs的角色劃分

client:分block

NameNode:是Master節點。管理數據塊映射;處理客戶端的讀寫請求;配置副本策略;管理HDFS的名稱空間;

SecondaryNameNode:是一個小弟,分擔大哥namenode的工作量;是NameNode的冷備份;合併fsimage和fsedits然後再發給namenode。

DataNode:Slave節點,幹活的。負責存儲client發來的數據塊block;執行數據塊的讀寫操作。

fsimage:元數據鏡像文件(文件系統的目錄樹。)

edits:元數據的操作日誌(針對文件系統做的修改操作記錄)

fsimage+edits 類比數據庫中的數據表和日誌表

namenode內存中存儲的是fsimage+edits。

 

SecondaryNameNode默認1小時,從namenode上,獲取fsimage和edits來進行合併,然後再發送給namenode。減少namenode的工作量。

 

二、啓動過程

http://blog.csdn.net/amber_amber/article/details/38268407

1、namenode

1》Server成員的構造(用於RCP)

2》FSNameSystem的構造 

核心數據結構包括:

l  blocksMap:map,保存數據塊block相關的映射關係,包括文件與塊,塊與datanode的映射等。

l  curruptReplicasMap:保存所有損壞的塊,所有副本都損壞。

l  datanodeMap:曾近連接過的所有的datanode,是全集。

l  recentInvalidateSets:最近失效的block。

l  excessReplicateMap:機器與機器上多餘的block的映射,這些block等待被刪除。

l  Heartbeats:當前發送心跳包的datanode,也就是alive的datanode。

FSDirectory對象:這裏存放着文件系統的層次結構。

 

過程:初始化blocksMap等數據結構,加載fsimage文件到類FSImage中,讀取edits文件,利用fsimage和edits構造文件系統層次結構。

 

 

3》啓動後臺守護進程

l  PendingReplicaitonBlocks$PendingReplicationMonitor: 監控block的copy過程

l  FSNamesystem$HeartbeatMonitor,心跳包的檢測

l  FSNamesystem$ReplicationMonitor: 監控複本數量,如果不足,就copy。

l  LeaseManager$Monitor:控制寫請求,文件不能同時多人寫。

l  DecommissionManager$Monitor:處理數據節點的退役

 

2、啓動datanode

 

1》獲取並設置各種配置信息,整理自己的block信息並進行封裝

2》從namenode獲取namespaceID, version以及StorageID等信息

3》datanode向namenode註冊。

向namenode發送服務地址,信息查詢端口,客戶端訪問端口以及datanodeID等,還包括block_report塊數據;FSNameSystem先驗證該datanode是否被允許掛載(通過dfs.hosts列表驗證),然後把datanode數據映射到元數據中,這裏主要是獲取block_report塊與datanode的映射關係,添加到BlocksMap中[hx1] ,然後再把這個datanode添加到heartsbeats中進行監控。

 

4》啓動datanode線程。週期性向namenode發送block_Report和heartbeats,同時接受namenode的指令。

3、Secondary namenode的啓動

註冊到namenode,並且從namenode同步當前的fsimage,edits等文件信息;啓動secondary namenode上用於輪訓的進程,定期執行檢查點的創建操作。

 

 

三、寫操作的流程

http://www.cnblogs.com/laov/p/3434917.html

1、client通知namenode,獲得datanodes

2、具體寫每個block和package(內部複製)

3、寫別的block

4、通知nn結束

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章