【问题标题】:Kafka Streams - kafka-streams-application-reset.sh sending wrong API versionKafka Streams - kafka-streams-application-reset.sh 发送错误的 API 版本
【发布时间】:2016-12-01 01:37:07
【问题描述】:

Kafka 0.10.0.1 添加了使用名为 kafka-streams-application-reset.sh 的脚本重置 Kafka Streams 应用程序的功能

Confluent 对此脚本有一些很好的文档here

很遗憾,在本地运行脚本会导致错误:

$ bin/kafka-streams-application-reset --application-id my-streams-app \
                                      --input-topics my-input-topic \
                                      --intermediate-topics rekeyed-topic \
                                      --bootstrap-servers brokerHost:9092 \
                                      --zookeeper zookeeperHost:2181

# output
ERROR: Request GROUP_COORDINATOR failed on brokers List(...)

此外,代理日志中还会显示以下行:

kafka.network.InvalidRequestException: Error getting request for apiKey: 3 and apiVersion: 2

据我所知,客户端似乎发出了无效请求,但我不确定为什么会发生这种情况。我们的代理仍在 0.9.0 上,所以我不确定这是否是问题所在,但根据代理日志中的 apiKey 值,它似乎是 a meta data request

有人可以告诉我为什么会发生这种情况以及如何解决吗?

【问题讨论】:

    标签: apache-kafka distributed-computing apache-kafka-streams


    【解决方案1】:

    Kafka Streams 基于 0.10 版本,不适用于 0.9。

    bin/kafka-streams-application-reset 工具也是如此。它在内部使用 0.10 KafkaClient 并需要 0.10 代理。

    一般来说,只有 Kafka 代理而不是 Kafka 客户端是向后兼容的,即代理确实与旧客户端合作,但客户端不与旧代理合作。这可能会在将来发布时有所改善。见KIP-97: Improved Kafka Client RPC Compatibility Policy

    错误消息——即使不是非常具有描述性且难以理解——告诉您您尝试连接到不了解新客户端的代理。

    【讨论】:

    • 谢谢,很高兴知道。我不同意错误消息确切地告诉我代理不理解新客户端,它只是说元数据请求 apiKey: 3 使用 apiVersion: 2 时出错,但实际上并没有指定什么错误是完全正确的(即InvalidRequestException: Error getting request 不是很具体)。无论哪种方式,感谢您的回答,我将其标记为正确
    • 我同意。错误消息不是很具有描述性...:/
    • 刚刚更新了我的答案:c.f. cwiki.apache.org/confluence/display/KAFKA/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-30
    • 2018-08-03
    • 2020-04-19
    • 2020-04-25
    • 2020-12-30
    • 2018-01-19
    • 2019-01-31
    相关资源
    最近更新 更多