1、簡介
本文主要講述spark-submit/spark-shell等spark啟動指令的參數(shù)機(jī)器作用鹏往。
參數(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 程序的運(yùn)行模式絮姆,client或者cluster沼瘫,client表示master就是本地機(jī)器作為master平痰,使用cluster表示使用有yarn從集群中選擇機(jī)器作為master。建議使用client夕凝,使用client可以從本地關(guān)閉進(jìn)程铃绒,即方便控制程序鸽照。class class_name
應(yīng)用程序的入口點(diǎn),main函數(shù)所在的類颠悬。主類的名稱矮燎,包括完整的包路徑,可借助pwd+相對路徑赔癌,name name
spark application的名字诞外,即該spark任務(wù)的名稱queue queue_name
提交應(yīng)用程序給哪個yarn隊列, 默認(rèn)的隊列是default隊列灾票, 僅限與spark on yarn模式峡谊。properties-file file
設(shè)置應(yīng)用程序?qū)傩缘奈募窂剑J(rèn)是$SPARK_HOME/conf/spark-defaults.conf刊苍。
executor運(yùn)行(內(nèi)存/線程)參數(shù):
- executor-memory
每個執(zhí)行程序進(jìn)程使用的內(nèi)存量既们,e.g. 2g/2G - executor-cores num
單個executor運(yùn)行使用的核數(shù),即開多少線程來并發(fā)執(zhí)行task正什,默認(rèn)為1啥纸, 僅限于spark on yarn模式。 - num-executors num
executor運(yùn)行個數(shù)婴氮,即執(zhí)行節(jié)點(diǎn)的個數(shù)脾拆,默認(rèn)為2, 僅限于spark on yarn模式莹妒。 - total-executor-cores num
executor的運(yùn)行使用的總核數(shù)名船,僅限與standalone和spark on mesos。
spark 任務(wù)中的最高并發(fā)的 task 數(shù)量為:
注意:所有核共用Executor的內(nèi)存旨怠,所以要在內(nèi)存和核數(shù)之間做好平衡$
driver 參數(shù):
driver-memory mem
Driver 程序運(yùn)行時需要的內(nèi)存渠驼, 默認(rèn)為1g。該參數(shù)一般使用默認(rèn)的即可鉴腻,如果使用到了collect操作或者任務(wù)的平行度變大迷扇,可以將該參數(shù)變大一點(diǎn)百揭;driver-cores num
Driver的運(yùn)行核數(shù),默認(rèn)為1個蜓席,僅限于standalone模式器一。conf:Key = value格式的任意Spark配置屬性。對于包含空格的值厨内,用引號括起“key = value”祈秕,eg:
--conf spark.driver.maxResultSize=0
總結(jié)
在執(zhí)行 Spark 的應(yīng)用程序時,Spark 集群會啟動 Driver 和 Executor 兩種 JVM 進(jìn)程雏胃,前者為主控進(jìn)程请毛,負(fù)責(zé)創(chuàng)建 Spark 上下文,提交 Spark 作業(yè)(Job)瞭亮,并將作業(yè)轉(zhuǎn)化為計算任務(wù)(Task)方仿,在各個 Executor 進(jìn)程間協(xié)調(diào)任務(wù)的調(diào)度,后者負(fù)責(zé)在工作節(jié)點(diǎn)上執(zhí)行具體的計算任務(wù)统翩,并將結(jié)果返回給 Driver仙蚜,同時為需要持久化的 RDD 提供存儲功能。
spark-shuffle中的read和write操所需要的內(nèi)存主要是在exector中的堆內(nèi)內(nèi)存中運(yùn)行厂汗。
2.2 java參數(shù)介紹
driver-library-path path
Driver程序依賴的第三方j(luò)ar包鳍征。driver-java-options
Driver應(yīng)用程序運(yùn)行時的一些java配置選項,例如GC的相關(guān)信息等面徽。jars jars
加入到Driver和集群executor的類路徑中的jar包列表艳丛,以逗號進(jìn)行分隔,可以是本地列表packages package1,package2
項目所需要包趟紊,集群模式下該參數(shù)需要跟repositories參數(shù)一起使用repositories remoteAdress
maven格式的遠(yuǎn)程存儲庫列表氮双,如果不給定,則會使用機(jī)器安裝的默認(rèn)源霎匈,package指定的包也從這里下載戴差。
spark 應(yīng)用程序第三方j(luò)ar文件依賴解決方法
1、將第三方j(luò)ar文件打包到最終形成的spark應(yīng)用程序jar文件中铛嘱,適應(yīng)于第三方j(luò)ar文件比較小
2暖释、使用spark-submit提交的參數(shù):--jars,適應(yīng)于spark-submit命令的機(jī)器上存在對應(yīng)的jar文件
3墨吓、使用spark-submit提交命令的參數(shù):--package球匕,適應(yīng)于遠(yuǎn)程倉庫中的jar包
2.3 python參數(shù)介紹
- py-files py-files
使用逗號分隔的放置在python應(yīng)用程序PYTHONPATH 上的.zip, .egg, .py的文件列表。
3帖烘、conf常用參數(shù)
3.1 使用方法
--conf key=value
3.2 常用key
spark.driver.maxResultSize
每個Spark操作(例如亮曹,收集)的所有分區(qū)的序列化結(jié)果的總大小限制(以字節(jié)為單位)。 應(yīng)至少為1M,或0為無限制照卦。 如果總大小超過此限制式矫,則將中止作業(yè)。 具有高限制可能會導(dǎo)致驅(qū)動程序中出現(xiàn)內(nèi)存不足錯誤(取決于spark.driver.memory和JVM中對象的內(nèi)存開銷)役耕。 設(shè)置適當(dāng)?shù)南拗瓶梢员Wo(hù)驅(qū)動程序免受內(nèi)存不足錯誤的影響采转。但常用0,可以以此來查程序中bugspark.network.timeout
所有網(wǎng)絡(luò)的交互間隔時間瞬痘,如果超過這個時間executor將停止spark.executor.heartbeatInterval
executor給driver發(fā)送心跳的時間間隔故慈,在任務(wù)執(zhí)行的過程中,executot需要一直給driver發(fā)送心跳图云,如果超過該間隔惯悠,driver認(rèn)為任務(wù)執(zhí)行失敗邻邮。單位ms竣况,另外該值需要遠(yuǎn)小于spark.network.timeoutspark.executor.extraJavaOptions
要傳遞給executors的一串額外JVM選項。 例如筒严,GC設(shè)置或其他日志記錄丹泉。