- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 Spark 流应用程序,它使用 Spark Direct Streaming(不是接收器)方法从 Kafka 读取消息并按分区处理消息。
在我的 Kafka 分区中,有时我们得到的消息需要 20 秒来处理 2000 条消息,而一些消息需要 7-9 秒才能处理相同的编号。的消息。
鉴于波动,我们开启背压设置如下。
spark.batch.duration=10 seconds
spark.streaming.kafka.maxRatePerPartition=200
spark.streaming.backpressure.enabled=true
spark.streaming.backpressure.initialRate=60
spark.streaming.kafka.maxRatePerPartition=200
并且还使用以下参数指定了 RateEstimator。我不了解 PID 的数学原理,但尝试了不同的组合,其中之一如下。
spark.streaming.backpressure.rateEstimator=pid
spark.streaming.backpressure.pid.minRate=1600
spark.streaming.backpressure.pid.integral=1
spark.streaming.backpressure.pid.proportional=25
spark.streaming.backpressure.pid.derived=1
最初,spark 读取 RDD 中 1 个分区的 2000 条消息,但一段时间后它开始读取 800 条记录。我认为是 minRate/2。然后它保持静止..在日志中,它始终打印 1600 作为新汇率。
2017-01-20 14:55:14 TRACE PIDRateEstimator:67 - New rate = 1600.0
鉴于我的情况,我有几个问题:
spark.streaming.backpressure.pid.minRate
每个分区还是总数。要批量阅读的邮件数量?最佳答案
第 1 个问题的答案 -spark.streaming.backpressure.pid.minRate
是每个分区每秒的消息数。
关于您的消息消费率的差异,可能是由于pid配置错误。
在大多数情况下,pid.proportional
、pid.integral
和 pid.derived
的默认值就足够了。因此,如果任何人对 pid 速率估计器背后的数学没有正确的理解,建议继续使用默认值。我要调整的唯一参数是 spark.streaming.backpressure.pid.minRate
参见:https://richardstartin.github.io/posts/tuning-spark-back-pressure-by-simulation https://www.linkedin.com/pulse/enable-back-pressure-make-your-spark-streaming-production-lan-jiang/
关于apache-kafka - Spark Streaming spark.streaming.backpressure.pid.minRate 是每个分区还是每个批处理间隔的消息总数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41771622/
我正在尝试制作带有背压的流动性。我的想法是,在当前项目之一完成处理之前,不会发出新的可流动项目。我正在使用 ResourceSubscriber 和 subscribeWith() 方法来实现这一点。
我一直在阅读一些关于 RxJava 背压的文档,但是我找不到详细的解释,比如它是如何在库内部发生的,每个人都只是总结说“生产者”太快而“消费者”太慢。 例如像下面的代码: Observable.int
我有一个 PublishSubject,它在某些 UI 事件上调用 onNext()。订阅者通常需要 2 秒来完成其工作。我需要在订阅者忙碌时忽略对 onNext() 的所有调用,但最后一个除外。我尝
有这样的情况,上游传递到下游的数据需要进行处理,然而上游推送的速度又很快,下游由于资源等原因来不及处理;如果这时还是通过不限制上游速度的方式推送数据,就会出问题,因此Reactive Streams有
对于一个运算符,输入流比其输出流快,因此其输入缓冲区将阻塞前一个运算符的输出线程,该输出线程将数据传输到该运算符。对吗? Flink和Spark都是通过阻塞线程来处理背压的吗?那么它们有什么区别呢?
嗯,RxJava 中的背压并不是真正的背压,而只是忽略了一些元素集合。 但是如果我不能释放任何元素并且我需要以某种方式减慢发射速度怎么办? RxJava不能影响元素发射,所以开发者需要自己实现。但是如
在 Apache Camel 2.19.0 中,我想在并发 seda 队列上异步生成消息并使用结果,同时如果 seda 队列上的执行程序已满,则阻塞。它背后的用例:我需要处理包含多行的大文件,并且需要
我有一个关于 Combine 中的 zip 运算符与背压结合的问题。 采用以下代码片段: let sequencePublisher = Publishers.Sequence, Never>(seq
我有一个 flink 作业,它从 Kafka 读取数据,执行某些聚合并将结果写入 elasticsearch 索引。我在源上看到高背压。高背压导致数据从 Kafka 读取缓慢,我看到数据在网络堆栈中排
这是我对这个主题的理解。 有发布者和订阅者。 发布者和订阅者的伪代码是这样的 Publisher{ Subscriber s; subscribe(Subscriber s){
我有一个 Spark 流应用程序,它使用 Spark Direct Streaming(不是接收器)方法从 Kafka 读取消息并按分区处理消息。 在我的 Kafka 分区中,有时我们得到的消息需要
在阅读如下配置单元表后,我试图将数据写入 Kafka 主题。 write_kafka_data.py: read_df = spark.sql("select * from db.table wher
我是一名优秀的程序员,十分优秀!