在一個全配置的集羣上,運行Hadoop意味着在網絡分佈的不一樣服務器上運行一組守護進程 (daemons),這些守護進程或運行在單個服務器上,或運行與多個服務器上,他們包括:
node
(1) NameNode(名字節點)服務器
(2) DataNode(數據節點)網絡
(3) Secondary NameNode (次名節點) 分佈式
(4) JobTracker (做業跟蹤節點)oop
(5) TaskTracker (任務跟蹤節點)spa
NameNodeblog
被認爲是Hadoop守護進程中最重要的一個,能夠說,NameNode就是一個大腦。進程
運行NameNode會消耗掉大量的內存和I/O資源,所以,爲了減輕機器的負載,駐留NameNode的服務器通常不會負責MapReduce的計算、存儲用戶數據。這也意味着,NameNode不會和JobTracker\TashTracker存在於同一臺服務器上。一旦NameNode服務器出現宕機,形成的影響通常會比較嚴重。內存
DataNode資源
每一個集羣的從節點上都會駐留一個DataNode的守護進程,來執行分佈式文件系統的繁重工做——將HDFS數據快讀取或寫入到本地文件系統的實際文件中。當但願對HDFS文件進行讀寫時,文件被分割爲多個塊,有NameNode告知客戶端每一個數據塊駐留在那個DataNode。客戶端直接與DataNode守護進程進行通訊,來處理與數據塊對相對應的本地文件。DataNode與DataNode節點直接也能夠直接進行通訊,用於完成數據的複製。
上圖解釋了NameNode和DataNode節點的做用,NameNode指明瞭數據存放的名稱和位置,分別爲/user/chuck/data1 下的一、二、3文件和存儲在 /user/james/data2下的
四、5文件。四個DataNode實現了一、二、三、四、5文件的複製。確保了任何一個DataNode節點失敗後任然能夠正常工做。DataNode會不斷的向NameNode節點報告,將當前節點存儲的數據塊告知NameNode,爲之提供本地修改的相關信息,同時接受指令的建立、移動或刪除本地磁盤上的數據塊。
Secondary NameNode
JobTracker
jobtracker守護進程是Hadoop和應用程序之間的紐帶,一旦代碼提交到集羣上,JobTracker就會執行肯定的任務,包括決定處理哪些文件,爲不一樣的任務分配節點以及監控全部任務的運行,若是任務失敗,jobTracker將會自動重啓任務,可是所分配的節點可能會不一樣。
每一個Hadoop集羣只有一個JobTracker守護進程,他一般運行在服務器的主節點上。
TaskTracker
下面的圖形描述了一個Hadoop集羣的拓撲結構,這是一個主/從結構,特色是主節點上運行NameNode和JobTracker,而從節點上運行DataNode和TaskTracker。並使用獨立的節點運行SSN,以防止主節點運行失敗。
瞭解了以上信息,咱們來關注一下Hadoop的NameNode和JobTracker究竟分別執行什麼樣的功能?
一、從存儲角度來理解:集羣是由一個Namenode和若干datanode組成,而secondary做爲Namenode的一個備份