Spark的默认配置文件位于堡垒机上的这个位置: $SPARK_CONF_DIR/spark-defaults.conf,用户可以自行查看和理解。
需要注意的是,默认值优先级最低,用户如果提交任务时或者代码里明确指定配置,则以用户配置为先。 用户再理解参数含义的基础上,可根据具体任务情况调整参数(修改提交参数--conf值,不是spark-defaults.conf文件)。
以下常用参数配置均可以通过 --conf XXX=Y 方式使用,其他参数以及介绍请参考 Configuration - Spark 3.2.1 Documentation
参数名称 |
建议值 |
解释 |
spark.master |
yarn |
使用哪种资源调度器,一般使用yarn。本地调试可以用local |
spark.submit.deployMode |
cluster |
driver程序运行位置,调试可以用client,线上任务建议cluster。 |
spark.driver.cores |
4 |
driver最大使用cpu(线程)数 |
spark.driver.memory |
4-10g |
driver申请内存大小 |
spark.executor.memory |
3. Spark任务调优技巧 |
单个executor申请堆内内存大小 |
spark.python.worker.memory |
spark.executor.memory/2 |
一般使用默认值即可 |
spark.yarn.executor.memoryOverhead |
3072 |
单个executor申请堆外内存大小,一般使用默认值即可 |
spark.executor.cores |
3. Spark任务调优技巧 |
单个 executor最大并发task数 |
spark.executor.instances |
3. Spark任务调优技巧 |
executor数 |
spark.speculation |
默认值false |
推测执行机制默认为false(关闭),如果遇到作业偶尔卡住可以尝试开启。 |
spark.default.parallelism |
3. Spark任务调优技巧 |
控制默认RDD的partithion数,读取hdfs文件时partition数以blocksize和是否合并输入为准。 |
spark.sql.shuffle.partitions |
3. Spark任务调优技巧 |
执行sql或sql类算子时shuffle分区数,数据量大时应提高此值。 |
spark.pyspark.python |
python2/python3/python3.5 |
指定pyspark使用的python版本(如果使用docker镜像,请先确认镜像里是否有对应版本,平台基础镜像只有python2) |
spark.log.level |
默认值info |
ALL, TRACE, DEBUG, INFO, WARN, ERROR, FATAL, OFF,不区分大小写。 |
spark.sql.hive.mergeFiles |
默认值false |
开启会自动合spark-sql产生的并小文件 |
spark.hadoop.jd.bdp.streaming.monitor.enable |
默认值false |
是否开启streaming作业batch积压告警功能,默认为false,可通过 --conf spark.hadoop.jd.bdp.streaming.monitor.enable=true 开启 |
spark.hadoop.jd.bdp.batch.threshold |
默认值10 |
streaming作业batch积压告警阈值,默认值为10,用户可根据需求调整,例如: --conf spark.hadoop.jd.bdp.batch.threshold=20 |
spark.hadoop.jd.bdp.user.define.erps |
默认使用平台配置的告警组 |
对于类似streaming作业batch积压等仅需用户关注的指标,用户可自定义告警组,例如: --conf spark.hadoop.jd.bdp.user.define.erps="baibing12|maruilei" (注意:可配置多人,相邻erp用竖线|分隔) |
spark.isLoadHivercFile spark.sql.tempudf.ignoreIfExists |
默认false |
是否加载所有hive udf(只支持spark-sql下使用,不支持spark-submit、pyspark)。(HiveTask里面已经打开,用户无需多余设置) |