java.lang.IllegalArgumentException kafka控制台消费者

时间:2016-08-29 01:40:29

标签: apache-kafka

我们在我们的环境中使用Kafka 2.10-0.9.0.2.4.2.0-258。我们在kafka控制台消费者的几个主题上得到了以下例外。我知道有时候进入这些主题的消息太大但它们不超过message.max.bytes。

./kafka-console-consumer.sh --zookeeper xxx:2181,xxx:2181,xxx:2181 --topic test-topic

{metadata.broker.list=xxx:9092,xxx:9092,xxx:9092, request.timeout.ms=30000, client.id=console-consumer-76015, security.protocol=PLAINTEXT}
[2016-08-28 21:27:54,795] ERROR Error processing message, terminating consumer process:  (kafka.tools.ConsoleConsumer$)

java.lang.IllegalArgumentException
        at java.nio.Buffer.limit(Buffer.java:275)
        at kafka.message.Message.sliceDelimited(Message.scala:237)
        at kafka.message.Message.key(Message.scala:224)
        at kafka.message.MessageAndMetadata.key(MessageAndMetadata.scala:30)
        at kafka.consumer.OldConsumer.receive(BaseConsumer.scala:84)
        at kafka.tools.ConsoleConsumer$.process(ConsoleConsumer.scala:109)
        at kafka.tools.ConsoleConsumer$.run(ConsoleConsumer.scala:69)
        at kafka.tools.ConsoleConsumer$.main(ConsoleConsumer.scala:47)
        at kafka.tools.ConsoleConsumer.main(ConsoleConsumer.scala)
Processed a total of 0 messages

我将replica.fetch.max.bytes等于message.max.bytes,并将num.replica.fetchers减少为2,如下面的链接所示,但它没有解决。

https://issues.apache.org/jira/browse/KAFKA-1196

知道我还应该做些什么才能让它发挥作用?

任何帮助将不胜感激。

提前致谢。

2 个答案:

答案 0 :(得分:1)

运行使用者时遇到了同样的问题(错误/异常)。但是,情景略有不同。

我最初使用 Kafka版本 - 2.11-0.10.2.0(OLD) ,然后我不得不更改为 2.10-0.9。 0.1(新)

因此,当我下载 NEW 设置并刚刚启动 zookeeper,broker,producer 以及使用者时,我收到了上述错误。我正在使用下载中给出的默认生产者和消费者脚本,并测试快速入门指南。

  

我得到了与上面相同的错误。我无法弄清楚新下载的包中的制作者如何使用不同的 jar ,如上面的答案所述。

所以,我意识到必须有一个共同的地方被我发现的所有Kafka实例引用 / tmp / kafka-logs / tmp / zookeeper < / strong>文件夹。

一旦删除它们并重新启动我的下载Kafka实例,我就能摆脱上述异常并且工作顺利进行。

希望这会增加帮助其他人也面临同样的错误,但是在不同的情况下。

沙比尔

答案 1 :(得分:0)

我遇到了完全相同的问题。根本原因是kafka jar文件与您的kafka安装使用的文件与您用于开发和运行生产者的文件之间不兼容。您可以在/ usr / hdp / current / kafka-broker / libs中找到您的安装使用的kafka jar版本

就我而言,我的kafka安装使用的是kafka_2.10-0.9.0.2.4.2.0-258.jar,但我与生产商捆绑的kafka jar是0.10.0.1。有一次,我切换到0.9.0.2.4.2.0-258,它有效。

如果您的群集是HDP并且您正在使用maven来构建生产者,那么您可以在此处找到所有jar依赖项http://repo.hortonworks.com/content/repositories/releases/

对于maven,你必须使用:

存储库:

<repositories>
    <repository>
        <id>org.hortonworks</id>
        <url>http://repo.hortonworks.com/content/repositories/releases/</url>
    </repository>
</repositories>

相关性:

       <dependency>
            <groupId>org.apache.kafka</groupId>
            <artifactId>kafka_2.10</artifactId>
            <version>0.9.0.2.4.2.0-258</version>
            <scope>compile</scope>
            <exclusions>
                <exclusion>
                    <artifactId>jmxri</artifactId>
                    <groupId>com.sun.jmx</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>jms</artifactId>
                    <groupId>javax.jms</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>jmxtools</artifactId>
                    <groupId>com.sun.jdmk</groupId>
                </exclusion>
            </exclusions>
        </dependency>