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ù)量為:
注意:所有核共用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,可以以此來查程序中bugspark.network.timeout
所有網(wǎng)絡的交互間隔時間,如果超過這個時間executor將停止spark.executor.heartbeatInterval
executor給driver發(fā)送心跳的時間間隔,在任務執(zhí)行的過程中,executot需要一直給driver發(fā)送心跳,如果超過該間隔,driver認為任務執(zhí)行失敗。單位ms,另外該值需要遠小于spark.network.timeoutspark.executor.extraJavaOptions
要傳遞給executors的一串額外JVM選項。 例如,GC設置或其他日志記錄。