滚动升级Kafka时出错
Posted
技术标签:
【中文标题】滚动升级Kafka时出错【英文标题】:Error rolling upgrade Kafka 【发布时间】:2018-06-21 17:08:42 【问题描述】:我已经安装了 Cloudera 3.0.0,所以我有 Apache Kafka 版本 0.11.0。我想做从 0.11.0 到 1.0.0 的滚动升级。 我已阅读文档并按照以下说明进行操作:
-
对每个代理重复:
1.1.关闭代理
1.2.更新代码
1.2.1.添加到server.properties:
inter.broker.protocol.version = 0.11.0
1.3 重启代理
在每个服务器设置中调整协议版本:
inter.broker.protocol.version = 1.0
一一重启broker。
当我执行第 3 步时,出现以下错误:
java.lang.IllegalArgumentException: Version `1.0` is not a valid version
at kafka.api.ApiVersion$.$anonfun$apply$1(ApiVersion.scala:79)
at scala.collection.MapLike.getOrElse(MapLike.scala:128)
at scala.collection.MapLike.getOrElse$(MapLike.scala:126)
at scala.collection.AbstractMap.getOrElse(Map.scala:59)
at kafka.api.ApiVersion$.apply(ApiVersion.scala:79)
at kafka.server.KafkaConfig.<init>(KafkaConfig.scala:994)
at kafka.server.KafkaConfig$.fromProps(KafkaConfig.scala:867)
at kafka.server.KafkaConfig$.fromProps(KafkaConfig.scala:864)
at kafka.server.KafkaServerStartable$.fromProps(KafkaServerStartable.scala:28)
at kafka.Kafka$.main(Kafka.scala:58)
at kafka.Kafka.main(Kafka.scala)
然后,我试着写:
inter.broker.protocol.version=1.0.0
inter.broker.protocol.version=1.0-IV0
但是我得到了同样的错误。为什么会这样?
【问题讨论】:
您确定您运行的是 1.0 版吗?根据堆栈跟踪,您似乎正在运行 0.11.0 版。但是您进行更新的方式看起来是正确的。版本 1.0 也应该没问题(不是 1.0.0 或其他) 我正在运行 0.11.0 版,我想在不接受停机的情况下进行滚动升级。 【参考方案1】:Cloudera 3.0.0 似乎与 kafka 0.11.x 而不是 1.0 一起出现。至少根据这个信息:https://www.cloudera.com/documentation/kafka/latest/topics/kafka_packaging.html
这也适合您的错误消息和您提供的调用堆栈:在 kafka 0.11 中。在第 79 行抛出异常:https://github.com/apache/kafka/blob/0.11.0/core/src/main/scala/kafka/api/ApiVersion.scala 而在 kafka 1.0 中,无效版本异常发生在第 84 行,您可以在此处看到:https://github.com/apache/kafka/blob/1.0/core/src/main/scala/kafka/api/ApiVersion.scala
能否请您仔细检查您正在运行的 kafka 版本?也许你甚至不需要更新任何东西。一般来说,您想要进行滚动更新的方式看起来是正确的。
【讨论】:
我如何知道我正在运行的版本? 我已经安装了 Cloudera 发行版 3.0.0。 cloudera.com/documentation/kafka/latest/topics/… 根据这个文档你应该有 kafkaVersion: "0.11.0+kafka3.0.0+50"。版本应该列在服务器日志中。另见:***.com/questions/27606065/…【参考方案2】:我怀疑您在库中同时拥有 0.11.0.0 和 1.0.0 库。删除旧的 lib 文件并尝试。 默认情况下,即使您没有提及inter.broker.protocol.version = 1.0,也会选择较新的版本。
【讨论】:
以上是关于滚动升级Kafka时出错的主要内容,如果未能解决你的问题,请参考以下文章