1. 程式人生 > >大資料---hadoop生態圈之架構HDFS-MR-YARN原理圖彙總終極篇

大資料---hadoop生態圈之架構HDFS-MR-YARN原理圖彙總終極篇

1、HDFS架構原理圖

Secondary Namenode流程圖


HDFS寫流程


官方HDFS架構圖


副本存放策略


各個元件概念和作業

Namenode:

儲存:檔案系統的名稱空間

  • a.檔名稱;
  • b.檔案目錄結構;
  • c.檔案的屬性[許可權,建立時間,副本數];
  • d.檔案對應哪些資料塊-->資料塊對應哪些datanode節點
  •  [blockmap當然namenode節點不會持久的儲存這種對映關係,是通過叢集在啟動和運時,datanode 定期傳送blockReport給namenode,以此namenode在記憶體中來動態維護的這種 對映關係]

 作用:

管理檔案系統的名稱空間。它維護著檔案系統樹及整棵樹內所有的檔案和目錄。

這些資訊以兩個檔案形式永久儲存在本地磁碟上:名稱空間映象檔案fsimage和編輯日誌檔案editlog。

Datanode:

儲存:資料塊和資料塊校驗和與Namenode通訊:

  • a.每隔3秒傳送一個心跳包
  • b.每十次心跳傳送一次blockReport.

 作用(主要):讀寫檔案的資料塊

Scondarynode:

儲存:fsimage+editlog
 作用:定期合併fsimage+editlog檔案為新的fsimage 推送給namenode.俗稱檢查點動作,checkpoint.
 引數:fs.checkpoint.period-->1h fs.checkpoint.size -->64M

2、hadoop MapReduce  YARN體系

MapReduce 1.x


MR1是hadoop1.x中作為計算和資源排程使用,

含有JobTracke TaskTracke 作為計算 

map task

reduce task

MapReduce 2.x

YARN工作流程(mr提交應用程式)

1:使用者向YARN中提交應用程式,其中包括ApplicationMaster程式、啟動ApplicationMaster的命令、使用者程式等。
2:ResourceManager為該應用程式分配第一個Container,並與對應的Node-Manager通訊,要求它在這個Container中啟動應用程式的ApplicationMaster。
3:ApplicationMaster首先向ResourceManager註冊,這樣使用者可以直接通過ResourceManage檢視應用程式的執行狀態,然後
它將為各個任務申請資源,並監控它的執行狀態,直到執行結束,即重複步驟4~7。
4:ApplicationMaster採用輪詢的方式通過RPC協議向ResourceManager申請和領取資源。
5:一旦ApplicationMaster申請到資源後,便與對應的NodeManager通訊,要求它啟動任務。
6:NodeManager為任務設定好執行環境(包括環境變數、JAR包、二進位制程式等)後,將任務啟動命令寫到一個指令碼中,並通
過執行該指令碼啟動任務。
7:各個任務通過某個RPC協議向ApplicationMaster彙報自己的狀態和進度,以讓ApplicationMaster隨時掌握各個任務的執行
狀態,從而可以在任務失敗時重新啟動任務。在應用程式執行過程中,使用者可隨時通過RPC向ApplicationMaster查詢應用程式
的當前執行狀態。

8:應用程式執行完成後,ApplicationMaster向ResourceManager登出並關閉自己

總結:  
Yarn的基本思想是拆分資源管理的功能,作業排程/監控到單獨的守護程序
ApplicationMaster 每一個job有一個ApplicationMaster
NodeManager,NodeManager是基本的計算框架 NodeManager節點,包含Container(執行任務容器)

角色
ResourceManager(RM):
主要接收客戶端任務請求,接收和監控NodeManager(NM)的資源情況彙報,
負責資源的分配與排程,啟動和監控ApplicationMaster(AM)。


ResourceManager(RM):
負責對各NM上的資源進行統一管理和排程。將AM分配空閒的Container執行並監控其執行狀態。
對AM申請的資源請求分配相應的空閒Container。主要由兩個元件構成:排程器和應用程式管理器。

排程器(Scheduler):
排程器根據容量、佇列等限制條件(如每個佇列分配一定的資源,最多執行一定數量的作業等),將系
統中的資源分配給各個正在執行的應用程式。排程器僅根據各個應用程式的資源需求進行資源分配,而資源分配單位是
Container,從而限定每個任務使用的資源量。Shceduler不負責監控或者跟蹤應用程式的狀態,也不負責任務因為各種原 因而需要的重啟(由ApplicationMaster負責)。總之,排程器根據應用程式的資源要求,以及叢集機器的資源情況,為應用程式分配封裝在Container中的資源。
排程器是可插拔的,例如CapacityScheduler、FairScheduler。


應用程式管理器(Applications Manager):
應用程式管理器負責管理整個系統中所有應用程式,包括應用程式提交、與排程器
協商資源以啟動AM、監控AM執行狀態並在失敗時重新啟動等,跟蹤分給的Container的進度、狀態也是其職責。

NodeManager (NM):
NM是每個節點上的資源和工作管理員。它會定時地向RM彙報本節點上的資源使用情況和各個Container的
執行狀態;同時會接收並處理來自AM的Container 啟動/停止等請求。


ApplicationMaster (AM):
使用者提交的應用程式均包含一個AM,負責應用的監控,跟蹤應用執行狀態,重啟失敗任務等。
ApplicationMaster是應用框架,它負責向ResourceManager協調資源,並且與NodeManager協同工作完成Task的執行和監控。
MapReduce就是原生支援的一種框架,可以在YARN上執行Mapreduce作業。有很多分散式應用都開發了對應的應用程式框架,用
於在YARN上執行任務,例如Spark,Storm等。如果需要,我們也可以自己寫一個符合規範的YARN application。

Container:
是YARN中的資源抽象,它封裝了某個節點上的多維度資源,如記憶體、CPU、磁碟、網路等,當AM向RM申請資源時,
RM為AM返回的資源便是用Container 表示的。 YARN會為每個任務分配一個Container且該任務只能使用該Container中
描述的資源。