1. 程式人生 > >Spark服務啟動的一些總結

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使用的區別,才能確定哪個應用場景會更好些。