当spark开启反压之后,将会在PIDRateEstimator中根据上一批任务的处理延时情况计算下一批接收数据的大小。

def compute(time: Long,elements: Long,processingDelay: Long,schedulingDelay: Long): Option[Double]

计算需要四个参数,该批数据处理结束时间time,该批处理元素个数elements,以及处理时间和调度延迟时间。

val delaySinceUpdate = (time - latestTime).toDouble / 1000

首先计算本次结束时间相比上一批数据处理结束相差的时间delaySinceUpdate,单位秒。

val processingRate = numElements.toDouble / processingDelay * 1000

之后用总处理数量除以总处理时间得到该批的单秒处理速率processingRate,单位数据量/秒。

val error = latestRate - processingRate

error则为上次处理速率与本次速率之差,可以理解为上次预估处理性能与本次实际处理性能的误差,单位数据量/秒,默认权重1。

val historicalError = schedulingDelay.toDouble * processingRate / batchIntervalMillis

histoticalError则为调度延迟乘本次处理速率的乘积(由于调度延迟导致缺少处理的数据量)除以任务批次时间,也就是单批数据由于调度延迟导致的单秒缺少的数据处理量,单位数据量/秒,默认权重0.2。

val dError = (error - latestError) / delaySinceUpdate

dError则为当前误差与上一次误差的差除以前后两次完成时间间隔,单位数据量/秒的平方,默认权重0。

val newRate = (latestRate - proportional * error -integral * historicalError -derivative * dError).max(minRate)

最后得到的新速率则为上次速率根据权重乘上述误差类型之后的结果,存在一个默认不会低于的的最小速率。

spark反压速率计算相关推荐

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

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

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

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

  3. Spark Streaming 反压机制

    反压机制的引入 默认情况下,Spark Streaming通过receiver以生产者生产数据的速率接收数据,计算过程中会出现批处理时间(Processing Time)大于批间隔时间(Batch I ...

  4. Flink 网络流控和反压剖析详解

    传送门:Flink 系统性学习笔记 前言: 本文根据 Apache Flink 系列直播整理而成,由 Apache Flink Contributor.OPPO 大数据平台研发负责人张俊老师分享,社区 ...

  5. 一文弄懂Flink网络流控及反压

    一文弄懂Flink网络流控及反压 1. 为什么需要网络流控? 2. 网络流控的实现:静态限速 3. 网络流控的实现:动态反馈/自动反压 3.1 案例一:Storm 反压实现 3.2 案例二:Spark ...

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

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

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

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

  8. 背压/反压/BackPressure

    Flink系列文章 更多Flink系列文章请点击Flink系列文章 更多大数据文章请点击大数据好文推荐 转载声明 本文大量内容系转载自以下文章,有删改,并参考其他文档资料加入了一些内容: Apache ...

  9. Flink教程(31)- Flink网络流控及反压

    文章目录 01 引言 02 为什么需要网络流控? 03 网络流控的实现:静态限速 04 网络流控的实现:动态反馈/自动反压 4.1 案例一:Storm 反压实现 4.2 案例二:Spark Strea ...

最新文章

  1. 远观近看阿里云ET平台 如何开启AI落地新风潮
  2. in an effort to
  3. 从N个数中等概率打印M个数
  4. java 数组存入数据库_Java中关于二维数组的理解与使用
  5. Qt开发技巧:编写.pro文件,在构建流程中加入命令行的方法
  6. 扩大博士研究生招生规模!
  7. Android Studio导入工程的正确姿势
  8. 简 易 版 线 程 池 模 型 学 习
  9. vscode写python_vscode如何编写python?
  10. 哪些是常见的大数据分析模型
  11. 学习自己动手设计数据库
  12. 人口logistic模型公式_人口预测模型Matlab实现Logistic曲线模型
  13. MFC工具箱没有控件解决方法
  14. 虚拟机挂起后硬盘响应变慢,SCSI转IDE方法
  15. 最简单的h264/h265/svac和g711封装成ps流符合gb28181过检码流要求
  16. 解读VL162最新Switshi切换芯片是VIA最新推出的Switsh芯片USB 3.1 Type-C接口数据切换开关专用芯片
  17. 微信小程序中裁剪图片以及压缩到指定尺寸并上传
  18. CH5202 自然数拆分Lunatic版【完全背包】
  19. 2022年第十四届全国大学生数学竞赛
  20. Abbkine ExKine 胞浆蛋白提取试剂盒

热门文章

  1. Consider defining a bean of type ‘com.xg.stupro.service.StudentService‘ in your configuration.
  2. git 拉取代码失败
  3. Elasticsearch单机安装
  4. Ranger-Kylin插件安装
  5. 原生H5 select自动提示搜索
  6. Rocketmq vs Kafka
  7. JAVA中String类以形参传递到函数里面,修改后外面引用不能获取到更改后的值
  8. SpringMVC HandlerMethodReturnValueHandler扩展
  9. Linux 6.5选包截图
  10. IOS程序中打开自己的程序,测试机器中是否装了自己的程序(openURL:,canOpenURL:)