簡介
spark的yarn運行模式根據Driver在集群中的位置分成兩種:
1)yarn-client 客戶端模式
2)yarn-cluster 集群模式
yarn模式和standalone模式不同,standalone模式需要啟動spark獨立集群,這樣SparkContext才能與Master進行交互通信。而yarn模式的資源管理全部托管給的ResourceManager了,所以它不需要啟動spark獨立集群,那么也就意味着你無法訪問http://master:8080這個頁面了。
yarn集群模式
spark的yarn集群模式,Driver運行在Application Master上,Application Master進程同時負責驅動我們的代碼程序和從ResourceManager申請資源。由於它直接運行在yarn的Container當中,所以並不需要客戶端,客戶端可以在提交完畢之后就關閉,如圖:
1)客戶端將生成作業信息並提交給ResourceManager
2)ResourceManager會選擇一個NodeManager去啟動container,並且把ApplicationMaster分配給它去運行
3)NodeManager接收到以后就會啟動ApplicationMaster並初始化dag作業,此時NodeManager就成為Driver
4)ApplicationMaster向ResourceManager申請資源
5)ResourceManager分配資源的同時通知其它NodeManager啟動相應的executor去執行task,並反饋執行情況
6)執行完畢,釋放資源
yarn客戶端模式
yarn客戶端模式和yarn集群模式的區別很明顯,就是在於ApplicationMaster僅僅負責從ResourceManager申請資源,而驅動代碼程序的任務還是由Client客戶端負責,所以Client客戶端在整個過程中保持運行不會像集群模式一樣提交完就關閉,如圖:
1)客戶端生成作業信息並提交給ResourceManager
2)ResourceManager在本地NodeManager啟動container並分配運行ApplicationMaster
3)Client節點會初始化dag作業,通過ApplicationMaster去向ResourceManager申請資源
4)Client節點將任務分發給executor去執行,executor反饋執行情況
5)任務執行完畢,釋放資源
yarn-client和yarn-cluster的區別
1)在yarn-cluster模式中,Driver運行在ApplicationMaster上,而在yarn-client模式中Driver運行在Client上
2)yarn-cluster模式中,Client提交完可以直接關閉,yarn-client模式中保持運行並和executor通信
3)yarn-cluster模式中,ApplicationMaster負責資源申請和驅動程序運行,yarn-client模式中只負責資源申請,運行程序由Client負責
4)yarn-cluster適合生產環境,而yarn-client適合交互和調試
參考書籍:《spark大數據技術與應用》