Spark 2.2.1 + Kafka 0.10 + Spark流媒体.
批处理持续时间为1秒,每个分区的最大速率为500,轮询间隔为120秒,最大轮询记录为500,Kafka中没有分区为500,启用缓存使用者.
在尝试从Kafka读取数据时,我们间歇性地观察到非常高的读取延迟.高延迟导致Kafka消费者会话到期,因此Kafka经纪人将消费者从该组中移除.消费者继续重试,最终失败了
[org.apache.kafka.clients.NetworkClient] - Disconnecting from node 12 due to request timeout
[org.apache.kafka.clients.NetworkClient] - Cancelled request ClientRequest
[org.apache.kafka.clients.consumer.internals.ConsumerNetworkClient] - Cancelled FETCH request ClientRequest.**
Run Code Online (Sandbox Code Playgroud)
由于这个原因,很多批次都处于排队状态.
只要多个客户端并行尝试从同一Kafka群集读取数据,就会发生高读取延迟.Kafka集群拥有大量代理,可以支持高网络带宽.
当使用spark 1.5和Kafka 0.8消费者客户端对同一个Kafka集群运行时,我们没有看到任何读取延迟.
在我们的Storm 1.0.2应用程序中,我们面临着内存不足的异常。在调试时,我们看到Kafka喷嘴向螺栓发送了太多消息。螺栓的运转能力接近4.0。因此,有一种方法可以在暴风雨中启用背压,从而使喷口根据螺栓的容量而发射。尝试将topology.backpressure.enable设置为true,但是遇到了此问题https://issues.apache.org/jira/browse/STORM-1949。我们使用KafkaSpout的开箱即用实现并为我们的螺栓扩展BaseRichBolt。我们的DAG是线性的。