yarn-cluster和yarn-client提交模式的區別

1、你要切換到yarn-cluster或者yarn-client模式,很簡單,將我們之前用於提交spark應用程序的spark-submit腳本,加上--master參數,設置爲yarn-cluster,或yarn-client,即可。如果你沒設置,那麼,就是standalone模式


2、yarn集羣分爲主節點和從節點,一個主節點是ResourceManager(RM),多個從節點是NodeManager(NM)。


3、
3.1、如果是yarn-cluster模式,spark-submit在提交的時候請求到ResourceManager,請求來啓動ApplicationMaster,ResourceManager接收到請求後會分配一個container,在某個NodeManager上啓動ApplicationMaster,ApplicationMaster(AM)啓動後會反過來向ResourceManager進行通訊,其實這個ApplicationMaster就相當於是driver,AM找RM請求container,啓動excutor,然後RM會分配一批container,用於啓動executor,AM鏈接其他的NM,來啓動executor,這裏的NM相當於worker,executor向AM反向註冊。ResourceManager相當於之前的master。


3.2、yarn-client模式,spark-submit在提交的時候發送給RM,請求啓動AM,分配一個container,在某個NM上,啓動AM,但是這裏的AM只是一個ExecutorLauncher,功能是很有限的。AM啓動後會找RM申請container,啓動executor,AM鏈接其他的NM,用container的資源來啓動executor。executor會反向註冊到本地的driver上。


4、區別:yarn-cluster的driver相當於就是在NodeManager上的某一個ApplicationMaster;yarn-client的driver還是在本地啓動的一個進程,在NodeManager啓動的ApplicationMaster只是一個ExecutorLauncher,ExecutorLauncher只會向ResourceManager申請資源,然後用container資源去鏈接其他的NodeManager,然後去啓動executor,executor啓動後會反向註冊到提交應用程序的本地客戶端的driver進程上,通過本地客戶端的driver進程裏面的DAGScheduler(如果是yarn-cluster的話就是在集羣上、TaskScheduler會大量進行task的調度,發送到NodeManager上的executor上去執行。

 注意:下圖這裏面有一個錯誤,那就是executor是運行在container裏面的,意思就是需要container先起來,然後在裏面在啓動executor

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