我已经安装了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
逐个重启经纪人。
当我执行第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
但是我得到了同样的错误。为什么会这样?
答案 0 :(得分:0)
似乎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版本吗?也许你甚至不需要更新任何东西。通常,您希望进行滚动更新的方式看起来是正确的。
答案 1 :(得分:0)
我怀疑你在libs中有 0.11.0.0 和 1.0.0 库。删除旧的lib文件并尝试。 默认情况下,即使您没有提及interinter.broker.protocol.version = 1.0,也会选择更新的版本。