2016-03-27 63 views
2

我有一對夫婦的關於作業提交到HDFS和Hadoop的紗線結構問題:紗和Hadoop

所以在Hadoop的生態系統,你必須爲每個集羣一個NameNode的,可以包含任意數量的存儲數據的節點你的數據。將作業提交給Hadoop時,NameNode上的作業跟蹤器將選擇每個作業並將其分配給數據節點上存在該文件的任務跟蹤器。

所以我的問題是YARN的組件如何在HDFS中一起工作:?

所以YARN由NodeManager和資源管理器組成。在這兩個組件之外:NodeManager是否在每個DataNode上運行,並且ResourceManager在每個集羣的每個NameNode上運行?因此,當任務跟蹤器(在每個DataNode中)從作業跟蹤器(在NameNode中)分配任務時,特定數據節點中的NodeManager將創建一個容器,該容器將從NameNode中的ResourceManager請求資源。因此,只有當數據節點中的任務跟蹤器從NameNode中的作業跟蹤器獲取作業時,此資源管理器和節點管理器纔會發揮作用,其中NodeManager將向ResourceManager請求要執行作業的資源。它是否正確?

回答

3

你是部分正確的。 YARN被帶入了圖片,以避免Jobtracker負擔調度和監控的負擔。所以對於YARN,您沒有任何Job跟蹤器或任務跟蹤器。 Job tracker完成的工作現在由資源管理器完成,資源管理器包含兩個主要組件:Scheduler(爲應用程序分配資源)和ApplicationsManager(接受作業提交併在出現任何故障時重新啓動ApplicationMaster)。現在,每個應用程序都有一個ApplicationMaster,它可以在調度程序中協商運行應用程序的容器(運行作業的位置)。

Nodemanager在每個從節點/數據節點上運行。資源管理器可能/可能不會安裝在namenode存在的位置。對於大型集羣,我們通常需要將主設備分開,以便負載不會轉到單臺設備上。

+1

你好Vignesh,這很清楚!因此,如果沒有JobTracker或TaskTracker,ResourceManager會處理所有作業「分發」並與每個DataNode上的NodeManager進行通信,以查看它是否可以在該DataNode上分配資源和容器以運行「任務」。那麼現在,當客戶端向HDFS提交作業時,它首先會與ResourceManager或NameNode進行通信?由於首先需要確定NameNode只能使用其元數據訪問HDFS上的文件的位置? – LP45

+1

不需要它,它不需要Namenode幫助。請記住,輸入拆分的計算由客戶端的Job或JobSubmitter完成,現在拆分被放置在HDFS中(因此RM不需要元數據),這在資源管理器接收到提交應用程序的請求之前完成。 –

+0

這意味着當向HDFS提交作業(從HDFS讀取)時,您將與NameNode進行交互以找出您想要保留的文件在哪個DataNode上? – LP45