1. 程式人生 > >Hadoop節點介紹

Hadoop節點介紹

1.namenode

目錄的管理者,每個叢集都會有一個,它可以記錄實時資料,如果沒有namenode,HDFS就沒辦法工作,系統中的檔案也會丟失,就無法將不同datanode上的block重建檔案,因此他的容錯機制很有必要
namenode主要負責:
1.接收使用者的請求;
2.維護檔案系統的目錄結構
3.管理檔案與block之間的關係

2.datanode

是檔案系統的節點,他們會根據客戶端和namenode的排程儲存和檢索,並定期向namenode傳送他們儲存的block列表。
叢集的每一個伺服器都存在一個datanode後臺程式,這個後臺程式負責把HDFS資料塊讀取到本地的檔案系統,如果需要客戶端讀/寫某個資料時,先有namenode告訴客戶端去哪個datanode進行具體的讀/寫操作,然後由客戶端直接與datanode進行通訊,進行具體的相關資料的操作。
datanode主要負責:
1.儲存資料
2.把檔案切割成block的形式儲存到磁碟上

3.Secondarynamenode

SecondaryNameNode是一個用來監控HDFS狀態的輔助後臺程式。就想NameNode一樣,每個叢集都有一個SecondaryNameNode,並且部署在一個單獨的伺服器上。SecondaryNameNode不同於NameNode,它不接受或者記錄任何實時的資料變化,但是,它會與NameNode進行通訊,以便定期地儲存HDFS元資料的快照。由於NameNode是單點的,通過SecondaryNameNode的快照功能,可以將NameNode的宕機時間和資料損失降低到最小。同時,如果NameNode發生問題,SecondaryNameNode可以及時地作為備用NameNode使用。

它主要將namenode image(fsimage)和Edit log合併的。

這兩個檔案的作用:

fsimage包含Hadoop檔案系統中的所有目錄和檔案idnode的序列化資訊,其中對於檔案包含了檔案的修改時間、訪問時間、塊大小和組成一個檔案塊資訊等。對於資料夾而言包含的資訊主要有修改時間、訪問控制權限等資訊。而Edits檔案主要是進行客戶端對檔案操作的記錄,比如上傳新檔案等。並且edits檔案會定期與fsimage檔案進行合併操作。

當客戶端執行寫操作,則NameNode會在edit log記錄下來,並在記憶體中儲存一份檔案系統的元資料。

要注意,fsimage檔案是檔案系統元資料的持久化檢查點,不會在寫操作後馬上更新,這是因為fsimage的寫入是非常緩慢的。

由於Edit log不斷增長,在NameNode重啟時,會造成長時間NameNode處於安全模式,不可用狀態,是非常不符合Hadoop的設計初衷。所以要週期性合併Edit log,但是這個工作由NameNode來完成,會佔用大量資源,這樣就出現了Secondary NameNode,它可以進行image檢查點的處理工作。步驟如下:

(1)SecondaryNameNode請求NameNode進行edit log的滾動(即建立一個新的edit log),將新的編輯操作記錄到新生成的edit log檔案;

(2)通過http get方式,讀取NameNode上的fsimage和edits檔案,到SecondaryNameNode上;

(3)讀取fsimage到記憶體中,即載入fsimage到記憶體,然後執行edits中所有操作,並生成一個新的fsimage檔案,即這個檢查點被建立;

(4)通過http post方式,將新的fsimage檔案傳送到NameNode;

(5)NameNode使用新的fsimage替換原來的fsimage檔案,讓(1)建立的edits替代原來的edits檔案;並且更新fsimage檔案的檢查點時間。

整個處理過程完成。

SecondaryNameNode的處理,是將fsimage和edites檔案週期的合併,不會造成nameNode重啟時造成長時間不可訪問的情況。

4.Resourcemanager

(1)與客戶端進行互動,處理來自於客戶端的請求,如查詢應用的執行情況等。

(2)啟動和管理各個應用的ApplicationMaster,並且為ApplicationMaster申請第一個Container用於啟動和在它執行失敗時將它重新啟動。

(3)管理NodeManager,接收來自NodeManager的資源和節點健康情況彙報,並向NodeManager下達管理資源命令,例如kill掉某個container。

(4)資源管理和排程,接收來自ApplicationMaster的資源申請,並且為其進行分配。這個是它的最重要的職能。

5.Nodemanager

NM是ResourceManager在每臺機器上的代理,負責容器管理,並監控它們的資源使用情況,以及向ResourceManager/Scheduler提供資源使用報告。
總結:

(1)NameNode與ResourceManager分開部署(都是老大)

(2)NodeManager 也就是Resoucemanager 的“小弟”,它來做這事情,讀取hdfs 上的資料,資料儲存在datanode上,所以如果資料叢集,datanode 與NodeManager ,一定要儲存在同一個節點上

(3)Resoucemanager : 佔用埠:8088 進行排程資源(老大),進行任務分配的,誰來做這個事情