Spark调优部分参数

可以在创建SparkSession对象时提供config(key,value)的方式进行赋值

1、shuffle相关调优参数

spark.shuffe.file.buffer
默认值:32K
参数说明:该参数用于设置shuffle write task的BufferedOutputStream的buffer缓存大小,将数据写到磁盘之前,会写入buffer缓存中,待缓存写满之后,才会溢写磁盘。
调优:如果作业可用的内存资源较为充足的话,可以适当的增加这个参数的大小(比如64k),从而减少shuffle write过程中溢写磁盘文件的次数,也可以减少磁盘IO的次数,进而提升性能。在实践中发现合理的调节该参数,性能会有1%-5%的提升。
spark.reducer.maxSizeInFlight
默认值:48M
参数说明:该参数用于设置shuffle read task的buffer缓存大小,而这个buffer缓存决定了每次能够拉取多少数据。
调优:如果作业可用的内存资源较为充足的话,可以适当增加这个参数的大小(比如96M),从而减少拉取数据的次数,也就可以减少网络传输的次数,进而提升性能。在实践中发现,合理调节该参数,性能会有1%-5%的提升。
spark.shuffle.io.maxRetries
默认值:3
参数说明:shuffle read task从shuffle write task所在节点拉取属于自己的数据时,如果因为网络异常导致拉取失败,是会自动进行重试的。该参数就代表可以充实的最大次数。如果在指定次数之内拉取还是没有成功,就可能导致作业执行失败。
调优:对于那些包含了特别耗时的shuffle操作的作业,建议增加重试最大次数(比如60),以避免由于JVM的full gc或者网络不稳定等因素导致的数据拉取失败。在实践中发现,对于针对超大数据量的shuffle过程,调节该参数可以大幅度的提升稳定性。
spark.shuffle.io.retryWait
默认值:5s
参数说明:shuffle read task从shuffle write task所在节点拉取属于自己的数据时,如果因为网络异常导致拉取失败,是会自动进行重试的。该参数就代表每次重试拉取数据的等待间隔
调优:建议加大时间隔(比如60s),提升稳定性
spark.shuffle.memoryFraction
默认值:0.2
参数说明:该参数代表了Executor内存中,分配给shuffle read task进行聚合操作的内存比例,默认是20%
调优:如果内存充足,而且很少使用持久化操作,建议调高这个比例,给shuffle read的聚合操作更多的内存,以避免由于内存不足导致聚合过程中频繁读写磁盘,在实践中发现,合理调节该参数可以江性能提升10%左右。
spark.shuffle.manager
默认值:sort
参数说明:该参数用于设置ShuffleManager的类型,spark1.5以后,有三个可选项:hash、sort和tungsten-sort,HashShuffleManager是spark1.2以前的默认选项。但是spark1.2以及以后的版本默认都是SortShuffleManager了。tungsten-sort与sort类似,但是使用了tungsten计划中的堆外内存管理机制,内存使用效率更高。
调优:由于SortShuffleManager默认会对数据进行排序,因此如果你的业务逻辑中需要该排序机制的话,则使用默认的SortShuffleManager就可以;如果你的业务逻辑不需要对数据进行排序,那么建议参考后面的几个参数台哦有,通过bypass机制或者优化的HashShuffleManager来避免排序操作,同时提供较好的磁盘读写性能,这里有注意的是,tungsten-sort要慎用,还不稳定。
spark.shuffle.consolidateFiles
默认值:false
参数说明:如果使用HashShuffleManager,该参数有效。如果没有设置为ture,那么就会开启consolidate机制,会大幅度合并shuffle write的输出文件,对于shuffle read task数量特别多的情况下,这种方式可以极大的减少磁盘IO开销,提升性能。
调优:如果的确不需要SortShuffleManager的排序机制,那么除了使用bypass机制,还可以尝试将spark.shuffle.manager参数手动指定为hash,使用HashShuffleManager,同时开启consolidate机制,在实践中尝试,发现其性能比开启了bypass机制的SortShuffleManager要高出10%-30%。

2、资源相关调优参数

park.driver.memory
默认值:1G
参数说明:设置Driver端内存大小
调优:不需要过多的资源分配给Driver,因为Driver是不保存具体处理数据的,只会保存一些临时的数据以及元数据信息,当然开发工程中也会使用collect算子将数据收集到Driver,这时候需要确定Driver内存是否足够,可能会OOM。
spark.num.executors
默认值:1
参数说明:设置worker端的Executor数量
调优:可以按照节点的数量进行设置,1:1即可
spark.executor.memory
默认值:1G
参数说明:调节每个Executor的内存大小
调优:适当设置大一些,保存内存被充分使用即可
spark.executor.cores
默认值:1
参数说明:调节执行的cpu数量
调优:越多越好,越多性能越强
spark.executor.memory.over.head
默认值:false
参数说明:设置executor执行的时候,用的内存可能会超过executor.memory,所以会为executor额外预留一部分内存,该参数代表这这部分内存
调优:这里每个其他内存都是20%的,一般不动
spark.sql.files.maxPartitionBytes
默认值:13417728(128M)
参数说明:获取数据分区中的最大字节数
调优:默认即可
spark.sql.files.openCostlnBytes
默认值:4194394(4M)
参数说明:该参数表示4M的小文件会合并到一个分区,用于减少小文件,防止太多单个小文件占用一个分区的情况
调优:可能适当的增大,这样就可以设置每个文件的大小,文件越大产生的文件越少,反之越多,但是也是根据实际情况进行测试调试才能确定是否增大或者是减小
spark.sql.broadcastTimeout
默认值:300
参数说明:广播等待超时时间,单位秒。
调优:如果数据量比较大,广播容易超时,可以适当的增大时间
spark.sql.autoBroadcastJoinThreshold
默认值:10485760(10M)
参数说明:最大广播表的大小,设置为-1可以禁用该功能。当前统计信息仅支持Hive Metastore表
调优:可以禁用此功能,对程序来说没有太大的影响,因为使用范围比较小

Spark参数调优基础版相关推荐

  1. JVM参数调优基础-参数的类型详解

    1 参数类型 1.1 标准参数 -help -server -client -version -showversion -cp -classpath 1.2 X 参数 非标准化参数 -Xint :解释 ...

  2. 大数据培训:Spark性能调优与参数配置

    Spark性能调优-基础篇 众所周知,正确的参数配置对提升Spark的使用效率具有极大助力,帮助相关数据开发.分析人员更高效地使用Spark进行离线批处理和SQL报表分析等作业. 推荐参数配置模板如下 ...

  3. 由美团技术文章整理---spark性能优化基础篇--开发调优与资源参数调优

    文章地址1:Spark性能优化指南--基础篇 - 美团技术团队 文章地址2:Spark性能优化指南--高级篇 - 美团技术团队 目录 一.关于性能优化基础篇--开发调优 1.避免创建重复RDD (1) ...

  4. spark 资源参数调优

    资源参数调优 了解完了Spark作业运行的基本原理之后,对资源相关的参数就容易理解了.所谓的Spark资源参数调优,其实主要就是对Spark运行过程中各个使用资源的地方,通过调节各种参数,来优化资源使 ...

  5. spark重要参数调优建议:spark.default.parallelism设置每个stage默认的task数量

    spark.default.parallelism 参数说明:该参数用于设置每个stage的默认task数量.这个参数极为重要,如果不设置可能会直接影响你的Spark作业性能. 参数调优建议:Spar ...

  6. hive sql 报错后继续执行_Hive优化之Spark执行引擎参数调优(二)

    Hive是大数据领域常用的组件之一,主要是大数据离线数仓的运算,关于Hive的性能调优在日常工作和面试中是经常涉及的的一个点,因此掌握一些Hive调优是必不可少的一项技能.影响Hive效率的主要有数据 ...

  7. Spark Submit提交及参数调优

    https://www.cnblogs.com/LHWorldBlog/p/8414342.html https://www.cnblogs.com/haoyy/p/6893943.html spar ...

  8. 【进阶版】机器学习之特征降维、超参数调优及检验方法(04)

    目录 欢迎订阅本专栏,持续更新中~ 本专栏前期文章介绍! 机器学习配套资源推送 进阶版机器学习文章更新~ 点击下方下载高清版学习知识图册 线性判别分析(LDA) 主成分分析(PCA) 超参数调优 检验 ...

  9. spark原理参数调优

    一.spark原理 参考: Hive on Spark调优_窗外的屋檐-CSDN博客_spark.executor.instancesSpark资源参数调优参数_TURING.DT-CSDN博客_sp ...

最新文章

  1. 陶哲轩实分析 定理 13.3.5 :紧致度量空间上的连续函数一致连续
  2. 【转】unity3d 在UGUI中制作自适应调整大小的滚动布局控件
  3. 互联网音乐还有什么机会
  4. 【Python基础】使用列表、字典和集合生成式来缩短代码
  5. 只安装python_pip 只能安装python库吗
  6. ASP.NET Core on K8S学习初探(1)
  7. P1081 开车旅行 倍增 洛谷
  8. java 自省_自知 自省 自立 自信 自尊 自治 自强 自制
  9. cnn风格迁移_愚蠢的CNN,换个马甲就认不出猫!但,这病能治 | ICLR Oral
  10. eclipse maven项目导入Intellij问题处理
  11. 销售数据可视化图表excel模板_两份办公学习资源,可视化EXCEL模板和Excel函数课程...
  12. opendrive格式完全解析
  13. 微服务 杜家豪_搞好“微建设微服务”也是大业绩
  14. TypeScript Essential Notes 2 - ES6 Language Features
  15. 浅谈css3的轮播图
  16. 漏洞解决方案-文件上传
  17. JAVA EE--13元老
  18. 用户与组的创建、删除
  19. Spring WebFlux入门
  20. Ubuntu 20.04 虚拟机安装教程

热门文章

  1. Nginx在阿里云的下载安装以及Nginx常见的命令及配置文件
  2. 总结——微信小程序的项目(天使童装)
  3. 异常处理方式 Calling startActivity() from outside of an Activity
  4. 【枚举】CF809A
  5. 百度松果线上菁英班(竞赛真题MC0101~MC0104)
  6. 如何接入微信公众号开发?底层原理是什么?
  7. MySQL Server 5.5 的安装
  8. LPIPS 图像相似性度量标准(感知损失)
  9. 1016. 欣赏书法
  10. Java编写ATM取款机,实现各项功能