【发布时间】:2018-10-11 14:06:01
【问题描述】:
我有一个在 CDH 5.13 中运行的 Spark 流 (Scala) 应用程序,使用客户端 0.10.0 使用来自 Kafka 的消息。我的 Kafka 集群包含 3 个代理。 Kafka 主题分为 12 个分区,均匀分布在这 3 个代理之间。我的 Spark 流消费者有 12 个执行器,每个执行器有 1 个核心。 Spark Streaming 开始在每批中从 Kafka 读取数百万条消息,但由于 Spark 无法应对负载和创建未处理批次的队列,因此数量减少到数千条。这很好,但我的期望是 Spark 非常快速地处理小批量并恢复正常,但是我不时看到只处理几百条消息的执行程序之一在阅读后得到“请求超时”错误Kafka 的最后偏移量:
DEBUG org.apache.clients.NetworkClient Disconnecting from node 12345 due to request timeout
发生此错误后,执行程序会发送几个 RPC 请求驱动程序,大约需要 40 秒,然后执行程序重新连接到它断开连接的同一代理。
我的问题是如何防止此请求超时以及找到其根本原因的最佳方法是什么?
谢谢
【问题讨论】:
标签: apache-spark apache-kafka spark-streaming