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

 

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM