滚动升级Kafka时遇到错误

时间:2018-01-12 09:09:24

标签: apache-kafka

我已经安装了Cloudera 3.0.0,所以我有Apache Kafka版本0.11.0。我想从0.11.0滚动升级到1.0.0。  我已阅读文档,并按照下一条说明进行操作:

  1. 对每个经纪人重复:
  2. 1.1。关闭经纪人

    1.2。更新代码

    1.2.1。添加到server.properties:

    inter.broker.protocol.version = 0.11.0
    

    1.3重启代理

    1. 将协议版本压缩到每个服务器设置中:

      inter.broker.protocol.version = 1.0
      
    2. 逐个重启经纪人。

    3. 当我执行第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
      

      但是我得到了同样的错误。为什么会这样?

2 个答案:

答案 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,也会选择更新的版本。