sparkSQL调优,sparkStreaming调优

sparkSQL调优,sparkStreaming调优

  1. 问题分析:

主要考察的就是sparkSql以及sparkStreaming的调优问题。

  1. 核心答案讲解:
SparkSql调优

spark.hadoopRDD.ignoreEmptySplits

默认是false,如果是true,则会忽略那些空的splits,减小task的数量。

spark.hadoop.mapreduce.input.fileinputformat.split.minsize

是用于聚合input的小文件,用于控制每个mapTask的输入文件,防止小文件过多时候,产生太多的task.

spark.sql.autoBroadcastJoinThreshold && spark.sql.broadcastTimeout

用于控制在spark sql中使用BroadcastJoin时候表的大小阈值,适当增大可以让一些表走BroadcastJoin,提升性能,但是如果设置太大又会造成driver内存压力,而broadcastTimeout是用于控制Broadcast的Future的超时时间,默认是300s,可根据需求进行调整。

spark.sql.adaptive.enabled && spark.sql.adaptive.shuffle.targetPostShuffleInputSize

该参数是用于开启spark的自适应执行,这是spark比较老版本的自适应执行,后面的targetPostShuffleInputSize是用于控制之后的shuffle 阶段的平均输入数据大小,防止产生过多的task。

intel大数据团队开发的adaptive-execution相较于目前spark的ae更加实用,该特性也已经加入到社区3.0之后的roadMap中,令人期待。

spark.sql.parquet.mergeSchema

默认false。当设为true,parquet会聚合所有parquet文件的schema,否则是直接读取parquet summary文件,或者在没有parquet summary文件时候随机选择一个文件的schema作为最终的schema。

spark.sql.files.opencostInBytes

该参数默认4M,表示小于4M的小文件会合并到一个分区中,用于减小小文件,防止太多单个小文件占一个分区情况。

spark.hadoop.mapreduce.fileoutputcommitter.algorithm.version

1或者2,默认是1. MapReduce-4815 详细介绍了 fileoutputcommitter 的原理,实践中设置了 version=2 的比默认 version=1 的减少了70%以上的 commit 时间,但是1更健壮,能处理一些情况下的异常。

sparkstreaming调优

① Spark Streaming 中需要大量的序列化和反序列化操作,在2.0.0以上的 Spark 版本中,我们应当优先考虑使用 Kryo 序列化方式。

② 对于非常大的变量,如配置信息,可以提前利用广播变量的方式传送给每一个节点。

③ 在流式处理系统中,我们需要兼顾数据的接收和数据处理,即消费数据的速率要赶上生产数据的速率。当发现生产数据速率过慢时,可以考虑增加并行度,使用更多的接收器(Receiver);如果处理速度过慢,可以考虑加机器、优化程序逻辑及 GC 优化等方式。

④ Spark 内存分为执行类内存和存储类内存,执行类内存可以剥夺存储类内存空间,但是存储类内存空间有一个最低阈值会保证保留。

⑤ 内存优化最简单的方式是使用序列化格式进行对象存储,另外一方面考虑到 Java/Scala 对象本身会有所开销,应尽可能减少对象的数量。

⑥ 对于 Spark 而言,垃圾回收采用 G1GC,而 Spark Streaming 采用 CMS。

  1. 问题扩展

spark调优比较复杂,但是大体可以分为三个方面来进行,1)平台层面的调优:防止不必要的jar包分发,提高数据的本地性,选择高效的存储格式如parquet,2)应用程序层面的调优:过滤操作符的优化降低过多小任务,降低单条记录的资源开销,处理数据倾斜,复用RDD进行缓存,作业并行化执行等等,3)JVM层面的调优:设置合适的资源量,设置合理的JVM,启用高效的序列化方法如kyro,增大off head内存等等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一鸣888

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值