Spark服務啓動的一些總結

一、我理解經常使用的Spark部署方式有三種web

1)、本地服務,就是所謂的local,在IDE上本地跑程序,用於調試shell

2)、Standalone,使用本身的master/worker進行服務的調度。  脫離yarn的資源管理app

3)、Spark on yarn。 使用yarn來進行資源的調度ui

二、在spark-env.sh中配置export HADOOP_CONF_DIR= ,這樣就可使用hdfs了。spa

三、提交應用使用bin/spark-submit,經過指定master來肯定是使用什麼模式,即spark:// yarn-cluster yarn-client。若是使用的spark://,那麼表明就是standalone模式,那麼就須要sbin/start-all.sh啓動一下spark集羣進行資源調度。調試

四、使用bin/spark-shell來進行本地交互式查詢。  但使用spark-shell貌似最好在standalone模式下進行日誌

五、最終執行進程是Executor,它的資源使用在submit時指定--executor-cores,--executor-memory,--num-executors,若是沒有指定,那麼就會讀取spark-env.sh配置文件中的SPARK_EXECUTOR_CORES,SPARK_EXECUTOR_MEMORY進程

六、在yarn模式下Executor進程名叫作CoarseGrainedExecutorBackend,在standalone模式下,Executor進程名叫作CoarseGrainedExecutorBackend。 (。。。我一直覺得進程名稱不同呢,原來是同樣的。 好吧,我是出來搞笑的)資源

七、yarn-client,yarn-cluster區別在於driver的位置。  所謂driver是指定你的運行代碼。  client模式下,你的client就是在你在客戶端中。 cluster模式下,彷佛應該是在ApplicationMaster中,它出現的位置是隨機的。部署

形象的舉個例子就清楚了,若是你在你的執行代碼中輸出了日誌,那麼在client模式下是能夠看到日誌的,但在cluster模式下是不太容易看到日誌輸出的,若是想要看到, 那麼須要去yarn的webui看。或者執行命令yarn application -logs xxxxxxxxxxxxx(若是我沒有記錯的話) 。  

我的使用經從來看,若是是使用spark streaming ,那麼用client感受我的會好一些。

後續會讀源代碼,在源代碼中瞭解一下client 和 cluster使用的區別,才能肯定哪一個應用場景會更好些。

 

暫時就這些,回頭有想到的再補充

相關文章
相關標籤/搜索