为了账号安全,请及时绑定邮箱和手机立即绑定

Spark Streaming 调优指南

标签:
Spark

Spark Streaming是架构在Spark Core上的一个“应用”,SparkStreaming主要由DStreamGraph、Job的生成、数据的接收和导入以及容错四大模块组成,我们今天就从这四大模块入手,看看每个模块都有什么样的调优方式

webp

SparkStraming调优体系

1 DStreamGraph

其实这部分主要是算子的使用优化,这个跟Spark调优的内容是相同,在这一部分可以优化的内容有

  • 重复使用的rdd进行cache

  • 使用高性能的算子代替性能差的算子

    • reduceByKey\aggregateByKey代替groupByKey

    • 使用mappartition代替map

    • 使用foreachpartition代替foreach

  • 使用Kryo序列化代替Java序列化

  • filter之后使用coalesce减少小任务

2 Job的生成

这一部分主要涉及到的调优是batchInternal的调整,为了程序不延迟地执行,合理的batchInternal是必要的

3 数据的接收和导入

这一部分主要是针对数据的接受速度进行调优,如果接收速度大于处理数据,那么程序会走向无限延迟最后崩溃的道路,所以主要的调优在于限速

  • 对于receiver和direct approach 方式都通用的
    spark.streaming.backpressure.enabled=true; sparkstreaming框架会自动地计算处理速度来控制数据的接受速度,建议开启

  • receiver方式

    • spark.streaming.receiver.maxRate 来进行限速

    • spark.streaming.blockInternal 设置缓存在内存块的大小,防止内存被撑爆

  • direct approach方式

    • spark.streaming.kafka.maxRatePartition来对每个分区进行限速

4 容错

主要是数据的容错方式选择

  • 热备:默认开启数据备份数为2

  • 冷备:开启WAL,将log保存到HDFS上,executor挂掉后可以从hdfs上进行数据的恢复

  • 重放:对于数据源本身支持重放有效,如Kafka,失效后可以通过offset值进行恢复



作者:_和_
链接:https://www.jianshu.com/p/86e14259a238


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消