spark-submit 參數說明


spark-submit 任務提交

spark-submit \
--class sparksql.Oracle_Sqs_Hive \
--master yarn \
--deploy-mode cluster \
/home/spark/333.jar

 

幾個重要的參數說明:

(1)executor_cores*num_executors
表示能夠並行執行Task的數目不宜太小或太大!一般不超過總隊列 cores 的 25%,比如隊列總 cores 400,最大不要超過100,最小不建議低於40,除非日志量很小。
(2)executor_cores
不宜為1!否則 work 進程中線程數過少,一般 2~4 為宜。
(3)executor_memory
一般 6~10g 為宜,最大不超過20G,否則會導致GC代價過高,或資源浪費嚴重。
(4)driver-memory
driver 不做任何計算和存儲,只是下發任務與yarn資源管理器和task交互,除非你是 spark-shell,否則一般 1-2g
增加每個executor的內存量,增加了內存量以后,對性能的提升,有三點:
(5)如果需要對RDD進行cache,那么更多的內存,就可以緩存更多的數據,將更少的數據寫入磁盤,
甚至不寫入磁盤。減少了磁盤IO。
(6)對於shuffle操作,reduce端,會需要內存來存放拉取的數據並進行聚合。如果內存不夠,也會寫入磁盤。
如果給executor分配更多內存以后,就有更少的數據,需要寫入磁盤,甚至不需要寫入磁盤。減少了磁盤IO,提升了性能。
(7)對於task的執行,可能會創建很多對象.如果內存比較小,可能會頻繁導致JVM堆內存滿了,然后頻繁GC,垃圾回收 ,minor GC和full GC.(速度很慢).內存加大以后,帶來更少的GC,垃圾回收,避免了速度變慢,性能提升。

spark提交參數的設置非常的重要,如果設置的不合理,會影響性能,所以大家要根據具體的情況適當的調整參數的配置有助於提高程序執行的性能

--conf spark.executor.userClassPathFirst=true
--conf spark.driver.userClassPathFirst=true
設置自己上傳的jar包在executor和driver上優先級高於集群自己jar包,倆個參數都要配
參考鏈接:https://www.jianshu.com/p/e51bb7a5da6f
 

spark-submit 詳細參數說明

參數名 參數說明
--master  master 的地址,提交任務到哪里執行,例如 spark://host:port,  yarn,  local
--deploy-mode  在本地 (client) 啟動 driver 或在 cluster 上啟動,默認是 client
--class  應用程序的主類(包名+類名),僅針對 java 或 scala 應用
--name  應用程序的名稱
--jars  用逗號分隔的本地 jar 包,設置后,這些 jar 將包含在 driver 和 executor 的 classpath 下
--packages  包含在driver 和executor 的 classpath 中的 jar 的 maven 坐標
--exclude-packages  為了避免沖突 而指定不包含的 package
--repositories  遠程 repository
--conf PROP=VALUE

 指定 spark 配置屬性的值,

 例如 -conf spark.executor.extraJavaOptions="-XX:MaxPermSize=256m"

 

spark.executor.userClassPathFirst=true
實驗性)當在executor中加載類時,是否用戶添加的jar比Spark自己的jar優先級高。這個屬性可以降低Spark依賴和用戶依賴的沖突。它現在還是一個實驗性的特征。
spark.driver.userClassPathFirst=true
實驗性)當在driver中加載類時,是否用戶添加的jar比Spark自己的jar, 優先級高。這個屬性可以降低Spark依賴和用戶依賴的沖突。它現在還是一個實驗性的特征。

 

--properties-file  加載的配置文件,默認為 conf/spark-defaults.conf
--driver-memory  Driver內存,默認 1G
--driver-java-options  傳給 driver 的額外的 Java 選項
--driver-library-path  傳給 driver 的額外的庫路徑
--driver-class-path  傳給 driver 的額外的類路徑
--driver-cores  Driver 的核數,默認是1。在 yarn 或者 standalone 下使用
--executor-memory  每個 executor 的內存,默認是1G
--total-executor-cores  所有 executor 總共的核數。僅僅在 mesos 或者 standalone 下使用
--num-executors  啟動的 executor 數量。默認為2。在 yarn 下使用
--executor-cores  每個 executor 的核數。在yarn或者standalone下使用
--files 用逗號隔開的文件列表,會放置在每個 executor 工作目錄中


免責聲明!

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



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