1. 程式人生 > >Hadoop五個程序的作用和聯絡

Hadoop五個程序的作用和聯絡

1.NameNode:

    相當於一個領導者,負責排程 ,比如你需要存一個1280m的檔案
    如果按照128m分塊 那麼namenode就會把這10個塊(這裡不考慮副本)
    分配到叢集中的datanode上並記錄對於關係 。當你要下載這個檔案的時    候namenode就知道在那些節點上給你取這些資料了。它主要維護兩個    map 一個是檔案到塊的對應關係 一個是塊到節點的對應關係。

2. secondarynamenode:
    它是namenode的一個快照,會根據configuration中設定的值來
    決定多少時間週期性的去cp一下namenode,記錄namenode中
    的metadata及其它資料    

3. NodeManager(NM):
    是YARN中每個節點上的代理,它管理Hadoop叢集中單個計算節點
    包括與ResourceManger保持通訊,監督Container的生命週期管理,
    監控每個Container的資源使用(記憶體、CPU等)情況,追蹤節點健
    康狀況,管理日誌和不同應用程式用到的附屬服務(auxiliary service)

4.DataNode:

      a.DataNode的需要完成的首要任務是K-V儲存

      b.完成和namenode 通訊 ,這個通過IPC 心跳連線實現。
         此外還有和客戶端 其它datanode之前的資訊交換

      c.完成和客戶端還有其它節點的大規模通訊,這個需要直接
         通過socket 協議實現。
    


5.ResourceManager:
    在YARN中,ResourceManager負責叢集中所有資源的統一管理和分配,它接收來自各個節點(NodeManager)的資源彙報資訊,並把這些資訊按照一定的策略分配給各個應用程式(實際上是ApplicationManager)
RM與每個節點的NodeManagers (NMs)和每個應用的ApplicationMasters (AMs)一起工作。
    a.NodeManagers 遵循來自ResourceManager的指令來管理單一節點上的可用資源。
    b.ApplicationMasters負責與ResourceManager協商資源與NodeManagers合作啟動容器

上面的一些名詞解釋

ApplicationMaster
    計算應用的資源需求,資源可以是靜態或動態計算的,靜態的一般是Client申請時就指定了,動態則需要ApplicationMaster根據應用的執行狀態來決定  根據資料來申請對應位置的資源(Data Locality)  向ResourceManager申請資源,與NodeManager互動進行程式的執行和監控,監控申請的資源的使用情況,監控作業進度  跟蹤任務狀態和進度,定時向ResourceManager傳送心跳訊息,報告資源的使用情況和應用的進度資訊 負責本作業內的任務的容錯

Container的一些基本概

念和工作流程如下:

(1)  Container是YARN中資源的抽象,它封裝了某個節點上一定量的資源(CPU和記憶體兩類資源)。它跟Linux Container沒有任何關係,僅僅是YARN提出的一個概念(從實現上看,可看做一個可序列化/反序列化的Java類)。

(2)  Container由ApplicationMaster向ResourceManager申請的,由ResouceManager中的資源排程器非同步分配給ApplicationMaster;

(3) Container的執行是由ApplicationMaster向資源所在的NodeManager發起的,Container執行時需提供內部執行的任務命令(可以使任何命令,比如java、Python、C++程序啟動命令均可)以及該命令執行所需的環境變數和外部資源(比如詞典檔案、可執行檔案、jar包等)。

另外,一個應用程式所需的Container分為兩大類,如下:

(1) 執行ApplicationMaster的Container:這是由ResourceManager(向內部的資源排程器)申請和啟動的,使用者提交應用程式時,可指定唯一的ApplicationMaster所需的資源;

(2) 執行各類任務的Container:這是由ApplicationMaster向ResourceManager申請的,並由ApplicationMaster與NodeManager通訊以啟動之。以上兩類Container可能在任意節點上,它們的位置通常而言是隨機的,即ApplicationMaster可能與它管理的任務執行在一個節點上。