spark的默认配置文件位于堡垒机上的这个位置: $SPARK_CONF_DIR/spark-defaults.conf,用户可以自行查看和理解。
spark及依赖环境版本如下: spark 2.1.0, hadoop 2.7.1 , hive 1.2.1, scala 2.11.8, jdk7、jdk8均可
需要注意的是,默认值优先级最低,用户如果提交任务时或者代码里明确指定配置,则以用户配置为先。 保险起见,默认参数都设置的比较保守,用户在在初步了解后自行设置可使个人程序运行最优。
一下配置均可以通过 –conf XXX=Y 方式使用,解释均基于spark2.1.0版本,详细参考 https://spark.apache.org/docs/latest/configuration.html
Tables | Are | Cool |
---|---|---|
spark.master | yarn | 使用那种资源调度器,一般使用yarn。本地调试可以用local |
spark.submit.deployMode | cluster | driver程序运行位置,调试可以用client,线上任务建议cluster。 |
spark.driver.cores | <10 | driver最大使用cpu(线程)数,JDSpark控制最大为28 |
spark.driver.memory | <10g | driver申请内存大小,JDSpark控制最大为50G |
spark.executor.memory | <24g(10k集群 <48g) | 单个executor申请堆内内存大小,JDSpark控制最大为50G |
spark.python.worker.memory | spark.executor.memory/2 | python开发的程序设置此值,java/scala开发的或者纯spark-sql程序使用默认值即可。 |
spark.yarn.executor.memoryOverhead | 4096 | 单个executor申请堆外内存大小 |
spark.executor.cores | executor.memory的1/4到1/2 | 单个 executor最大并发task数,JDSpark控制最大为28 |
spark.executor.instances | 数据大小(GB)*2/executor.memory | executor数,JDSpark控制最大为500 |
spark.memory.fraction | 0.6(用默认即可) | executor mem中用于计算和存储的内存比例,越小OOM概率越低但执行速度越慢 |
spark.memory.storageFraction | 0.5(用默认即可) | 计算和存储共用的内存中,存储所占内存最大比例。spark会动态调整不建议修改。 |
spark.speculation | true | 推测执行机制,除streaming任务外均建议开启 |
spark.shuffle.service.enabled | true | 默认为false,但如果shuffle数据量比较大,或者频繁出现shufle fetch failed exception,打开此配置能在一定程度缓解 |
spark.default.parallelism | < spark.executor.cores*spark.executor.instances的2倍 | 控制默认RDD的partithion数,读取hdfs文件时partition数以blocksize和是否合并输入为准。 |
spark.sql.shuffle.partitions | < 总数据量(GB) * 3 | 执行sql或sql类算子时shuffle分区数,默认是200,单数据量大时应提高此值。但次值过大,会导致产生很多空文件 |
spark.pyspark.python | python2/python3 | 指定pyspark使用的python版本 |
spark.log.level | info | ALL, TRACE, DEBUG, INFO, WARN, ERROR, FATAL, OFF,不区分大小写。 |
spark.sql.hive.mergeFiles | false | 开启会自动合并spark-sql产生的小文件 |
Spark on Yarn(router) oozie提交的话需要加额外参数:
–conf spark.hadoop.yarn.resourcemanager.address=10.198.22.68:8050 \
–conf spark.hadoop.yarn.resourcemanager.scheduler.address=localhost:8049 \
–conf spark.hadoop.yarn.resourcemanager.ha.enabled=false \
–conf spark.hadoop.yarn.federation.enabled=true