Spark服務啓動的一些總結

1、我理解常用的Spark部署方式有三種

1)、本地服務,就是所謂的local,在IDE上本地跑程序,用於調試
2)、Standalone,使用自己的master/worker進行服務的調度。 脫離yarn的資源管理
3)、Spark on yarn。 使用yarn來進行資源的調度

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

3、提交應用使用bin/spark-submit,通過指定master來確定是使用什麼模式,即spark:// yarn-cluster yarn-client。如果使用的spark://,那麼代表就是standalone模式,那麼就需要sbin/start-all.sh啓動一下spark集羣進行資源調度。

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

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

6、在yarn模式下Executor進程名叫做CoarseGrainedExecutorBackend,在standalone模式下,Executor進程名叫做CoarseGrainedExecutorBackend。 (。。。我一直以爲進程名稱不一樣呢,原來是一樣的。 好吧,我是出來搞笑的)

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

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

個人使用經歷來看,如果是使用spark streaming ,那麼用client感覺個人會好一些。

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

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