- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 flink 作业,它从 Kafka 读取数据,执行某些聚合并将结果写入 elasticsearch 索引。我在源上看到高背压。高背压导致数据从 Kafka 读取缓慢,我看到数据在网络堆栈中排队(netstat RecvQ 显示数万字节的数据卡在源 kafka 连接中,数据最终被读取)这反过来导致数据在滞后后下沉到elasticsearch,并且这个滞后不断增加。
源每分钟生成约 17,500 条记录,Flink 作业为每个传入记录分配(事件)时间戳,执行 12 种不同类型的 keyBy,将事件放入 1 分钟的滚动窗口中,对该键控窗口流执行聚合操作最后将结果写入12个不同的elasticsearch索引(每次写入都是一次插入)。
问题是写入 elasticsearch 的数据开始滞后,因此仪表板结果(建立在 elasticsearch 之上)不再是实时的。我的理解是,这是由于背压增加而发生的。不知道如何解决这个问题。集群本身是基于 VM 的单节点独立集群,具有 64GB RAM(任务管理器配置为使用 20GB)和 16 个 vCPU。没有证据表明(从 htop 可以看出)CPU 或内存受到限制。只有一个任务管理器,这是这个集群上唯一的 flink 作业。
我不确定这个问题是由于集群上的某些本地资源问题还是由于写入 elasticsearch 速度慢所致。我已将 setBulkFlushMaxActions 设置为 1(正如我在任何地方看到的所有代码示例中所做的那样),我是否还需要设置 setBulkFlushInterval 和/或 setBulkFlushMaxSizeinMB?
我已经经历了https://www.da-platform.com/flink-forward-berlin/resources/improving-throughput-and-latency-with-flinks-network-stack但尚未尝试幻灯片 19 中列出的调整选项,不确定为这些参数设置什么值。
最后,我认为在 IntelliJ IDE 中运行相同的作业时我不会看到相同的问题。
我将排除所有聚合,然后将它们一一添加回来,看看是否有特定的聚合触发了这个问题?
任何具体的指示将不胜感激,还将尝试 setBulkFlushInterval 和 setBulkFlushMaxSizeinMB。
更新 1,2019 年 1 月 29 日似乎两个节点都以非常高的堆使用率运行,因此 GC 不断运行以尝试清除 JVM 中的空间。将物理内存从 16 GB 增加到 32 GB,然后重新启动节点。这应该有望解决问题,再过 24 小时就会知道。
最佳答案
通过增加(加倍)elasticearch 集群节点上的 RAM 并将索引刷新间隔(在所有 elasticsearch 索引上)设置为 30 秒(默认为 1 秒),问题得到了解决。进行这些更改后,flink 中的背压报告正常,没有数据滞后,一切看起来都很好。
关于elasticsearch - flink : handling backpressure (source: kafka, 接收器:elasticsearch),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54385517/
我正在尝试制作带有背压的流动性。我的想法是,在当前项目之一完成处理之前,不会发出新的可流动项目。我正在使用 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
我是一名优秀的程序员,十分优秀!