大数据基础三:spark参数调优

本文主要介绍了Spark的运行原理,并对其参数调优进行了详细阐述。必调参数包括num - executors等,还介绍了如driver - memory等锦上添花的参数,以及各参数的作用、设置建议和实际初始化executor数量涉及的参数。

spak运行原理&参数调优

一、spark运行原理

参考:

Spark资源参数调优参数_TURING.DT-优快云博客_spark 资源参数

Hive on Spark调优_窗外的屋檐-优快云博客_spark.executor.instances

二、参数调优

1、必调参数

num-executors/spark.executor.instances

executor-memory/spark.executor.memory

executor-cores/spark.executor.cores

.set("spark.sql.hive.mergeFiles", "true")  // 合并小文件

2、锦上添花

1、driver-memory:使用collect算子将RDD的数据全部拉取到Driver上进行处理,那么必须确保Driver的内存足够大,否则会出现OOM内存溢出的问题

2、spark.storage.memoryFraction:RDD持久化数据在Executor内存中能占的比例,默认是0.6。也就是说,默认Executor 60%的内存,可以用来保存持久化的RDD数据。

1)有较多的RDD持久化操作,该参数的值可以适当提高一些,保证持久化的数据能够容纳在内存中。避免内存不够缓存所有的数据,导致数据只能写入磁盘中,降低了性能。

2)但是如果Spark作业中的shuffle类操作比较多,而持久化操作比较少,那么这个参数的值适当降低一些比较合适。

3、spark.default.parallelism:num-executors * executor-cores的2~3倍较为合适;

该参数用于设置每个stage的默认task数量。

5、spark.driver.maxResultSize

collect操作,shuffle操作的时候要调大此参数

6、实际初始化的executor 数量

涉及到的参数:

  --conf spark.dynamicAllocation.initialExecutors=150 \
  --conf spark.dynamicAllocation.maxExecutors=1000 \
  --conf spark.executor.instances=500 \

如果设置了“--num-executors”(或spark.executor.instances,最终的初始executor数量为:max(minExecutors, initialExecutor, num-executors/4)

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值