文章位址:http://www.haha174.top/article/details/257573
一.Standalone 模式基于spark自己的 Master-Worker 叢集。
就是之前的 spark-submit 送出的方式這裡不再詳細叙述。如果不清楚可以看這篇文章 如果要切換成第二種,第三種模式。将之前的submit腳本添加上–master 參數 設定為yarn-cluster 或yarn-client 即可。如果沒有設定就是Standalone 模式。
二.基于YARN的yarn-cluster 模式
1.當我們使用spark submit 送出到yarn-cluster .此時發送請求到 ResourceManager 。 請求啟動applicationMaster。applicationMaster啟動後會向ResourceManager 請求container,ResourceManager接受到這個請求後會配置設定一個container.
2.然後在某個NodeManager上啟動ApplicationMaster.ApplicationMaster(相當于driver)啟動後會去和ResourceManager進行通信請求container 。
3.此時ResourceManager 會給 ApplicationMaster 配置設定一定量的 container 去啟動executer.然後ApplicationMaster去連接配接其他的NodeManager。來啟動executer。然後executer 啟動後向ApplicationMaster反向注冊。
三.基于YARN的yarn-client 模式
1.當我們使用spark submit 送出到yarn-client .本地會啟動一個driver程序同時發送請求到 ResourceManager 。 請求啟動ExecutorLanucher。ExecutorLanucher啟動後會向ResourceManager請求 container,ResourceManager接受到這個請求後會配置設定一個container.
2.然後在某個NodeManager上啟動ExecutorLanucher(其實類似與上文中的ApplicationMaster,但是功能有限,不同點在1,3) .ExecutorLanucher啟動後會去和ResourceManager進行通信請求container 。
3.此時ResourceManager 會給 ApplicationMaster 配置設定一定量的 container 去啟動executer.然後ExecutorLanucher去連接配接其他的NodeManager。來啟動executer。但是executer 啟動後向spark 本地的driver程序反向注冊。
總結:yarn-client 用于調試 driver 啟動在本地。本地可以看到log 友善調試。
而且本地排程會産生大量的網卡流量。
yarn-cluster 一般用于生産。但是調試不友善。
使用yarn 需要在spark-env.sh 中添加Hadoop home