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

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值进行恢复

Spark Streaming 调优指南的更多相关文章

  1. Spark调优 | Spark Streaming 调优

    Spark调优 | Spark Streaming 调优 1.数据序列化 2.广播大变量 3.数据处理和接收时的并行度 4.设置合理的批处理间隔 5.内存优化 5.1 内存管理 5.2优化策略 5.3 ...

  2. Spark调优指南

    Spark相关问题 Spark比MR快的原因? 1) Spark的计算结果可以放入内存,支持基于内存的迭代,MR不支持. 2) Spark有DAG有向无环图,可以实现pipeline的计算模式. 3) ...

  3. Spark性能调优

    Spark性能优化指南——基础篇 https://tech.meituan.com/spark-tuning-basic.html Spark性能优化指南——高级篇 https://tech.meit ...

  4. Spark官方调优文档翻译(转载)

    Spark调优 由于大部分Spark计算都是在内存中完成的,所以Spark程序的瓶颈可能由集群中任意一种资源导致,如:CPU.网络带宽.或者内存等.最常见的情况是,数据能装进内存,而瓶颈是网络带宽:当 ...

  5. Spark Job调优(Part 2)

    原文链接:https://wongxingjun.github.io/2016/05/11/Spark-Job%E8%B0%83%E4%BC%98-Part-2/ 这篇文章将会完成Part 1中留下的 ...

  6. 调优 | Apache Hudi应用调优指南

    通过Spark作业将数据写入Hudi时,Spark应用的调优技巧也适用于此.如果要提高性能或可靠性,请牢记以下几点. 输入并行性:Hudi对输入进行分区默认并发度为1500,以确保每个Spark分区都 ...

  7. 另一份Java应用调优指南之-前菜

    每一次成功的调优,都会诞生又一份的调优指南. 一些必须写在前面的军规,虽然与Java应用的调优没直接关联,但是测试同学经常不留神的地方. 1 独占你的测试机器 包括跑JMeter的那些机器. &quo ...

  8. Spark性能调优之代码方面的优化

    Spark性能调优之代码方面的优化 1.避免创建重复的RDD     对性能没有问题,但会造成代码混乱   2.尽可能复用同一个RDD,减少产生RDD的个数   3.对多次使用的RDD进行持久化(ca ...

  9. [Spark性能调优] 第一章:性能调优的本质、Spark资源使用原理和调优要点分析

    本課主題 大数据性能调优的本质 Spark 性能调优要点分析 Spark 资源使用原理流程 Spark 资源调优最佳实战 Spark 更高性能的算子 引言 我们谈大数据性能调优,到底在谈什么,它的本质 ...

随机推荐

  1. Linux 重启和关机命令

    shutdown -r  05:30   在凌晨五点30分关机     shutdown -r  05:30 &     后台执行     shutdown -c    取消前一个关机命令   ...

  2. tkinter模块常用参数(python3)

    1.使用tkinter.Tk() 生成主窗口(root=tkinter.Tk()):root.title('标题名')    修改框体的名字,也可在创建时使用className参数来命名:root.r ...

  3. IntelliJ IDEA 调试(debug)时非常慢的原因

    IntelliJ  IDEA 开发时,发现有时Debug时tomcat启动的非常慢,需要等待超过20分钟,但有时就很快,经查找发现是断点设置问题, 若断点设置在方法名上,debug时就会非常慢, 如图 ...

  4. Spring MVC 表单验证

    1. 基于 JSR-303(一个数据验证的规范): import javax.validation.constraints.Min; import javax.validation.constrain ...

  5. java基础系列--Exception异常处理

    原创作品,可以转载,但是请标注出处地址:http://www.cnblogs.com/V1haoge/p/7191280.html 1.概述 Java代码中的异常处理是非常重要的一环,从代码中可以看到 ...

  6. Vulkan Tutorial 28 Depth buffering

    操作系统:Windows8.1 显卡:Nivida GTX965M 开发工具:Visual Studio 2017 Introduction 到目前为止,我们所使用的几何图形为3D,但仍然完全扁平的. ...

  7. python基础(7):元祖类型(赋值补充)

    前面学了列表和字典,今天我们看一个和列表相似的类型元祖. 预习: 简单购物车 实现打印商品详细信息,用户输入商品名和购买个数,则将商品名,价格,购买个数加入购物列表,如果输入为空或其他非法输入则要求用 ...

  8. 还在为画“类Word文档报表”而发愁吗?

    欢迎大家持续关注葡萄城控件技术团队博客,更多更好的原创文章尽在这里~~​ Word 是非常强大的文档编辑工具,一些行业制式文档都是使用Word来创建的,像教育行业的申请表,履历表,审批表等,像石油业的 ...

  9. Android Studio2.1 Run APP:Error: Execution failed for task

    Android Studio2.1 Run APP时,遇到错误 Error: Execution failed for task ':app:clean'. Unable to delete file ...

  10. nodejs 搭建 RESTful API 服务器的常用包及其简介

    常用包 框架: yarn add express 数据库链接: yarn add sequelize yarn add mysql2 处理 favicon: yarn add serve-favico ...