
執行流程
- client模式提交任務后,會在客戶端啟動Driver進程。
- Driver會向Master申請啟動Application啟動的資源。
- 資源申請成功,Driver端將task發送到worker端執行。
- worker將task執行結果返回到Driver端。
總結
client模式適用於測試調試程序。Driver進程是在客戶端啟動的,這里的客戶端就是指提交應用程序的當前節點。在Driver端可以看到task執行的情況。生產環境下不能使用client模式,是因為:假設要提交100個application到集群運行,Driver每次都會在client端啟動,那么就會導致客戶端100次網卡流量暴增的問題。

執行流程
- cluster模式提交應用程序后,會向Master請求啟動Driver.
- Master接受請求,隨機在集群一台節點啟動Driver進程。
- Driver啟動后為當前的應用程序申請資源。
- Driver端發送task到worker節點上執行。
- worker將執行情況和執行結果返回給Driver端。
總結
Driver進程是在集群某一台Worker上啟動的,在客戶端是無法查看task的執行情況的。假設要提交100個application到集群運行,每次Driver會隨機在集群中某一台Worker上啟動,那么這100次網卡流量暴增的問題就散布在集群上。
總結Standalone兩種方式提交任務,Driver與集群的通信包括:
- Driver負責應用程序資源的申請
- 任務的分發。
- 結果的回收。
- 監控task執行情況。

執行流程
- 客戶端提交一個Application,在客戶端啟動一個Driver進程。
- 應用程序啟動后會向RS(ResourceManager)發送請求,啟動AM(ApplicationMaster)的資源。
- RS收到請求,隨機選擇一台NM(NodeManager)啟動AM。這里的NM相當於Standalone中的Worker節點。
- AM啟動后,會向RS請求一批container資源,用於啟動Executor.
- RS會找到一批NM返回給AM,用於啟動Executor。
- AM會向NM發送命令啟動Executor。
- Executor啟動后,會反向注冊給Driver,Driver發送task到Executor,執行情況和結果返回給Driver端。
總結
Yarn-client模式同樣是適用於測試,因為Driver運行在本地,Driver會與yarn集群中的Executor進行大量的通信,會造成客戶機網卡流量的大量增加.
ApplicationMaster的作用:
- 為當前的Application申請資源
- 給NameNode發送消息啟動Executor。
注意:ApplicationMaster有launchExecutor和申請資源的功能,並沒有作業調度的功能。

執行流程
- 客戶機提交Application應用程序,發送請求到RS(ResourceManager),請求啟動AM(ApplicationMaster)。
- RS收到請求后隨機在一台NM(NodeManager)上啟動AM(相當於Driver端)。
- AM啟動,AM發送請求到RS,請求一批container用於啟動Executor。
- RS返回一批NM節點給AM。
- AM連接到NM,發送請求到NM啟動Executor。
- Executor反向注冊到AM所在的節點的Driver。Driver發送task到Executor。
總結
Yarn-Cluster主要用於生產環境中,因為Driver運行在Yarn集群中某一台nodeManager中,每次提交任務的Driver所在的機器都是隨機的,不會產生某一台機器網卡流量激增的現象,缺點是任務提交后不能看到日志。只能通過yarn查看日志。
ApplicationMaster的作用:
- 為當前的Application申請資源
- 給NameNode發送消息啟動Excutor。
- 任務調度。
停止集群任務命令:yarn application -kill applicationID
