反压机制的引入

默认情况下,Spark Streaming通过receiver以生产者生产数据的速率接收数据,计算过程中会出现批处理时间(Processing Time)大于批间隔时间(Batch Interval)的情况,其中批处理时间为实际计算一个批次花费的时间,批间隔时间为Streaming应用设置的批处理间隔。这意味着Spark Streaming的数据接收速率高于Spark从队列中移除数据的速率,即处理能力低,在设置间隔内不能完全处理当前接收速率接收的数据。如果这种情况持续过长的时间,会造成数据在内存中堆积,导致receiver所在excutor内存溢出等问题(如果设置StorageLevel包含disk,则内存存放不下的数据会溢写至disk,加大延时)。在Spark1.5以前的版本中,用户如果要限制receiver的数据接收速率,可以通过设置静态配置参数:

spark.streaming.receiver.maxRate

的值来实现。此举虽然可以通过限制接收速率来适配当前的处理能力、防止内存溢出,但也会引入其他问题。比如,producer数据生产高于maxRate,当前集群处理能力也高于maxRate,这就会造成资源利用率下降等问题。为了更好地协调数据接收速率与资源处理能力,Spark Streaming从v1.5开始引入动态反压机制,通过动态控制数据接收速率来适配集群数据处理能力。

简单易懂的话描述反压机制

比如现在有个application,5s接收5000条数据是最优的情况,但是现实情况是5s接收了10000条数据,processing time 假设为30s,反压机制会根据Batch Interval的时间,动态调节接收的数据,它发现5s接收的数据,30s才处理完成,这样下去会有任务堆积,它会把10000条数据逐渐动态调整减少,比如先调整为8000条,发现Processing Time为20s,然后再继续调整为6000条,发现Processing Time为8s以此类推,直到Active Batches里面没有任务堆积,也就是Processing Time为5s,即接收数据的时间和Processing Time相同为止。

为什么官网说最好和spark.streaming.receiver.maxRate还有spark.streaming.kafka.maxRatePerPartition这两个参数一起设置最好呢?

如果5s接收的不是10000条,而是接收了100000条数据,还是5000条是个正常水平的话,那么等调节到5000条的时候,可能已经堆积了太多的任务了。这样如果内存不足或磁盘不足直接会导致集群崩掉了。因此可以通过上面的参数指定一次最多接收5500条,那么系统调节到5000的水平将会很快,也就不会有大量任务堆积的问题。

Spark Streaming 反压机制相关推荐

  1. sparkstreaming监听hdfs目录如何终止_Spark笔试题:Spark Streaming 反压机制

    Spark Streaming 反压机制是1.5版本推出的特性,用来解决处理速度比摄入速度慢的情况,简单来讲就是做流量控制.当批处理时间(Batch Processing Time)大于批次间隔(Ba ...

  2. 35-Spark Streaming反压机制、Spark的数据倾斜的解决和Kylin的简单介绍

    19.6 数据的反压机制⭐️ 反压机制的理解 数据流入的速度远高于数据处理的速度,对流处理系统构成巨大的负载压力,如果不能正确处理,可能导致集群资源耗尽,最终集群崩溃, 因此有效的反压机制(backp ...

  3. 一文搞懂 Flink 网络流控与反压机制

    看完本文,你能get到以下知识 Flink 流处理为什么需要网络流控? Flink V1.5 版之前网络流控介绍 Flink V1.5 版之前的反压策略存在的问题 Credit的反压策略实现原理,Cr ...

  4. Flink 网络流控与反压机制

    Flink 流处理为什么需要网络流控? 分析一个简单的 Flink 流任务,下图是一个简单的Flink流任务执行图:任务首先从 Kafka 中读取数据. map 算子对数据进行转换.keyBy 按照指 ...

  5. Spark Streaming的工作机制

    1. Spark Streaming的工作机制 Spark Streaming 是Spark核心API的一个扩展,可以实现高吞吐量的.具备容错机制的实时流数据的处理. 支持从多种数据源获取数据,包括K ...

  6. 【Flink】Flink 反压机制 导致checkpoint 失败

    1.概述 转载:flink检查点checkpoint失败问题总结-2 问题描述:检查点刚开始是可以的做checkpoint的,后期越来越不能够做checkpoint的情况总结 2.反压问题 2.1 什 ...

  7. Flink从入门到精通100篇(二十二)- Flink应用实战案例:如何实现网络流控与反压机制

    目录 Flink 流处理为什么需要网络流控? Flink V1.5 版之前网络流控介绍 Flink V1.5 版之前的反压策略存在的问题 Credit的反压策略实现原理,Credit是如何解决 Fli ...

  8. Spark Streaming之容错机制以及事务语义

    我们知道RDD本身是一个不可变的,可重新计算的.分布式的数据集.每一个RDD都会记住确定好的操作血缘关系. 如果因为某些原因,导致某个worker节点失败,则导致RDD的某个partition数据丢失 ...

  9. Spark Streaming之checkpoint机制

    一 什么类型的数据需要使用checkpoint? Spark Streaming是最需要进行容错的,因为一般都是7 * 24小时运转,所以需要将足够的信息checkpoint到容错的存储系统上,比如H ...

最新文章

  1. 1057 Stack
  2. 网站优化之各个页面的关键词密度的把控
  3. PHP 基础知识-数组
  4. Spring cloud gateway的自定义异常响应
  5. CVPR 2019 | 旷视研究院提出ML-GCN:基于图卷积网络的多标签图像识别模型
  6. pandas常见的时间处理函数
  7. 【赛事】京东百万巨奖寻多传感器融合定位算法英雄
  8. mfc 学习的第三天
  9. decode 大于比较 小于_「oracle decode」【ORACLE】Oracle提高篇之DECODE - seo实验室
  10. 数据分析中会常犯哪些错误,如何解决? 六
  11. 补办毕业、学历证明流程
  12. 你可能不知道的印度手机市场
  13. Oracle 11g 学习笔记-6(触发器、函数、存储过程、程序包)
  14. DXF04-02 时间:2021.12.03-2012.12.03 关键词:DXF样条曲线信息
  15. 2021年终总结——拾起好习惯,让自己变得更加优秀
  16. 每月一书(202202): 《从零开始做自媒体》
  17. 【数据库】 如何对数据库进行操作
  18. win10如何调整计算机时间同步,win10系统调整设置时间同步的频率的操作方法
  19. hdu 3944 数学组合+帕斯卡定理
  20. 【VPR】 Graphics - vpr的图形界面

热门文章

  1. matlab无法打开.m文件查看
  2. 时间对象与字符串对象之间相互转换
  3. GMQ区块链生态系统平行链,未来将应用于众多产业
  4. Docker容器系列教程(三):jenkins环境搭建与插件安装
  5. 以京东为代表电商平台成中华老字号销售增速最快渠道
  6. 懒人的小技巧, 批处理修改IP
  7. 数据库的事务隔离级别
  8. How to convert hair particles to mesh in Blender
  9. 数据改写-数据科学导论
  10. 如何利用第三方数据进行大数据分析