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命令來查看。比較麻煩。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章