1. 程式人生 > >yarn-cluster和yarn-client模式剖析

yarn-cluster和yarn-client模式剖析

之前以standalone模式剖析過spark程式的執行流程,這裡來剖析下其他兩種模式(yarn-cluster和yarn-client)的區別。

一般yarn-client用於測試環境除錯程式;yarn-cluster用於生產環境。看完下面的剖析就明白為什麼。

一、yarn-cluster

與standalone模式不同,yarn-cluster是基於yarn叢集,yarn叢集上有ResourceManager(RM)和NodeManager(NM)。


1、傳送請求到RM,請求啟動AM

2、RM會分配container,在某個NM上啟動AM

3、AM啟動後,和RM通訊,請求container來啟動executor

4、RM會給AM提供一批container用於啟動executor

5、AM連線其他NM啟動executor

6、executor啟動後向AM反向註冊

7、後續的DAGScheduler、TaskScheduler、Shuffle等操作都是和standaloe一樣。詳見前面的blog

二、yarn-client


從上圖可以看出,yarn-client和yarn-cluster的區別就在於,Driver是執行在本地客戶端,它的AM只是作為一個Executor啟動器,並沒有Driver程序。

看到這裡,開頭為什麼說yarn-client用於測試環境除錯程式;yarn-cluster用於生產環境就清楚了。

1、yarn-client,driver執行在本地客戶端,負責排程Application,會與yarn叢集產生大量的網路通訊,從而導致網絡卡流量激增。好處是,執行時可以在本地看到所有的log,便於除錯。所以一般用於測試環境。

2、yarn-cluster,driver執行在NodeManager,每次執行都是隨機分配到NM機器上去,不會有網絡卡流量激增的問題。缺點就是本地提交後看不到log,只能通過yarn application-logs application id命令來檢視。比較麻煩。