zoukankan      html  css  js  c++  java
  • Spark Streaming 调优指南

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

    这里写图片描述

    1 DStreamGraph

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

    • 重复使用的rdd进行cache
    • 使用高性能的算子代替性能差的算子
      • reduceByKeyaggregateByKey代替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值进行恢复
  • 相关阅读:
    kill tomcat with netstat
    windows cmd命令显示UTF8设置
    rtx没有振动功能
    手动加载rvm
    RESTful Java client with Apache HttpClient
    Set Up Git on windows also use github
    lcs.py 最长公共子串算法
    如何:对代理使用 IP 切换
    这个博客站点不错
    a case study
  • 原文地址:https://www.cnblogs.com/simple-focus/p/7398038.html
Copyright © 2011-2022 走看看