spark-submit參數(shù)

1、簡介

本文主要講述spark-submit/spark-shell等spark啟動指令的參數(shù)機器作用。
參數(shù)調(diào)用方式:-- 參數(shù)key 參數(shù)value。

2、參數(shù)說明

2.1 通用參數(shù)(java,scala,python等程序)

  • master master
    這個master_url可以是如下幾種:
spark://host:port   #standalone
mesos://host:port
yarn
yarn-cluster
yarn-client
local
  • deploy-mode deploy-mode
    Driver 程序的運行模式,client或者cluster,client表示master就是本地機器作為master,使用cluster表示使用有yarn從集群中選擇機器作為master。建議使用client,使用client可以從本地關閉進程,即方便控制程序。

  • class class_name
    應用程序的入口點,main函數(shù)所在的類。主類的名稱,包括完整的包路徑,可借助pwd+相對路徑,

  • name name
    spark application的名字,即該spark任務的名稱

  • queue queue_name
    提交應用程序給哪個yarn隊列, 默認的隊列是default隊列, 僅限與spark on yarn模式。

  • properties-file file
    設置應用程序?qū)傩缘奈募窂?,默認是$SPARK_HOME/conf/spark-defaults.conf。

executor運行(內(nèi)存/線程)參數(shù):

  • executor-memory
    每個執(zhí)行程序進程使用的內(nèi)存量,e.g. 2g/2G
  • executor-cores num
    單個executor運行使用的核數(shù),即開多少線程來并發(fā)執(zhí)行task,默認為1, 僅限于spark on yarn模式。
  • num-executors num
    executor運行個數(shù),即執(zhí)行節(jié)點的個數(shù),默認為2, 僅限于spark on yarn模式。
  • total-executor-cores num
    executor的運行使用的總核數(shù),僅限與standalone和spark on mesos。

spark 任務中的最高并發(fā)的 task 數(shù)量為:
total\_task = executor\_num * executor\_cores
注意:所有核共用Executor的內(nèi)存,所以要在內(nèi)存和核數(shù)之間做好平衡$

driver 參數(shù):

  • driver-memory mem
    Driver 程序運行時需要的內(nèi)存, 默認為1g。該參數(shù)一般使用默認的即可,如果使用到了collect操作或者任務的平行度變大,可以將該參數(shù)變大一點;

  • driver-cores num
    Driver的運行核數(shù),默認為1個,僅限于standalone模式。

  • conf:Key = value格式的任意Spark配置屬性。對于包含空格的值,用引號括起“key = value”,eg:
    --conf spark.driver.maxResultSize=0

總結

在執(zhí)行 Spark 的應用程序時,Spark 集群會啟動 Driver 和 Executor 兩種 JVM 進程,前者為主控進程,負責創(chuàng)建 Spark 上下文,提交 Spark 作業(yè)(Job),并將作業(yè)轉化為計算任務(Task),在各個 Executor 進程間協(xié)調(diào)任務的調(diào)度,后者負責在工作節(jié)點上執(zhí)行具體的計算任務,并將結果返回給 Driver,同時為需要持久化的 RDD 提供存儲功能。
spark-shuffle中的read和write操所需要的內(nèi)存主要是在exector中的堆內(nèi)內(nèi)存中運行。

2.2 java參數(shù)介紹

  • driver-library-path path
    Driver程序依賴的第三方jar包。

  • driver-java-options
    Driver應用程序運行時的一些java配置選項,例如GC的相關信息等。

  • jars jars
    加入到Driver和集群executor的類路徑中的jar包列表,以逗號進行分隔,可以是本地列表

  • packages package1,package2
    項目所需要包,集群模式下該參數(shù)需要跟repositories參數(shù)一起使用

  • repositories remoteAdress
    maven格式的遠程存儲庫列表,如果不給定,則會使用機器安裝的默認源,package指定的包也從這里下載。

spark 應用程序第三方jar文件依賴解決方法
1、將第三方jar文件打包到最終形成的spark應用程序jar文件中,適應于第三方jar文件比較小
2、使用spark-submit提交的參數(shù):--jars,適應于spark-submit命令的機器上存在對應的jar文件
3、使用spark-submit提交命令的參數(shù):--package,適應于遠程倉庫中的jar包

2.3 python參數(shù)介紹

  • py-files py-files
    使用逗號分隔的放置在python應用程序PYTHONPATH 上的.zip, .egg, .py的文件列表。

3、conf常用參數(shù)

3.1 使用方法

--conf key=value

3.2 常用key

  • spark.driver.maxResultSize
    每個Spark操作(例如,收集)的所有分區(qū)的序列化結果的總大小限制(以字節(jié)為單位)。 應至少為1M,或0為無限制。 如果總大小超過此限制,則將中止作業(yè)。 具有高限制可能會導致驅(qū)動程序中出現(xiàn)內(nèi)存不足錯誤(取決于spark.driver.memory和JVM中對象的內(nèi)存開銷)。 設置適當?shù)南拗瓶梢员Wo驅(qū)動程序免受內(nèi)存不足錯誤的影響。但常用0,可以以此來查程序中bug

  • spark.network.timeout
    所有網(wǎng)絡的交互間隔時間,如果超過這個時間executor將停止

  • spark.executor.heartbeatInterval
    executor給driver發(fā)送心跳的時間間隔,在任務執(zhí)行的過程中,executot需要一直給driver發(fā)送心跳,如果超過該間隔,driver認為任務執(zhí)行失敗。單位ms,另外該值需要遠小于spark.network.timeout

  • spark.executor.extraJavaOptions
    要傳遞給executors的一串額外JVM選項。 例如,GC設置或其他日志記錄。

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容