【问题标题】:Apache Kafka IO errorsApache Kafka IO 错误
【发布时间】:2015-04-18 01:58:20
【问题描述】:

我有一个非常基本的 Kafka 安装,仅用于测试。现在我正在尝试从控制台向主题发送一些数据:

./kafka-console-producer.sh --topic test --sync --broker-list 192.168.59.103:9092,192.168.59.103:9093,192.168.59.103:9094
test
test2
test3
[2015-02-16 06:19:37,156] WARN Failed to send producer request with correlation id 12 to broker 1 with data for partitions [test,0] (kafka.producer.async.DefaultEventHandler)
java.io.IOException: Broken pipe
    at sun.nio.ch.FileDispatcherImpl.writev0(Native Method)
    at sun.nio.ch.SocketDispatcher.writev(SocketDispatcher.java:51)
    at sun.nio.ch.IOUtil.write(IOUtil.java:148)
    at sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:524)
    at java.nio.channels.SocketChannel.write(SocketChannel.java:493)
    at kafka.network.BoundedByteBufferSend.writeTo(BoundedByteBufferSend.scala:56)
    at kafka.network.Send$class.writeCompletely(Transmission.scala:75)
    at kafka.network.BoundedByteBufferSend.writeCompletely(BoundedByteBufferSend.scala:26)
    at kafka.network.BlockingChannel.send(BlockingChannel.scala:103)
    at kafka.producer.SyncProducer.liftedTree1$1(SyncProducer.scala:73)
    ....
test4
test5

我在大约 30% 的消息中遇到了此类异常。这是否意味着我的配置有问题?

为什么我只尝试了 1/3 就得到了它?它是否与我有 3 个 Kafka 服务器这一事实有关,并且其中一个服务器已关闭(顺便说一句,我正在为运行 Broker 1 的同一 VM 执行此命令)

另外,这是我在该代理的日志中看到的:

ERROR Error on broker 1 while processing LeaderAndIsr request correlationId 16 received from controller 1 epoch 4 for partition [test,0] (state.change.logger)
java.io.IOException: Invalid argument
    at sun.nio.ch.FileChannelImpl.map0(Native Method)
    at sun.nio.ch.FileChannelImpl.map(FileChannelImpl.java:874)
    at kafka.log.OffsetIndex.<init>(OffsetIndex.scala:74)

不知道是什么意思。卡夫卡是否有可能得到一个损坏的索引文件并因此引发此类错误?主题“测试”是在几分钟前创建的,顺便说一句,我没有重新启动任何东西。

我发现我可以将索引转储到控制台,但它也不起作用:

kafka-run-class.sh kafka.tools.DumpLogSegments --files /kafka-logs/test-0/00000000000000000000.index --deep-iteration
Dumping /kafka-logs/test-0/00000000000000000000.index
Exception in thread "main" java.io.IOException: Invalid argument
    at sun.nio.ch.FileChannelImpl.map0(Native Method)
    at sun.nio.ch.FileChannelImpl.map(FileChannelImpl.java:874)
    at kafka.log.OffsetIndex.<init>(OffsetIndex.scala:74)

有什么想法吗?

Kafka 0.8.2.0、Scala 2.11

更新我似乎与 Docker 不兼容,更具体地与 docker 共享卷不兼容。因为如果我将日志数据放入本地 docker 文件系统,一切正常。因此,寻求建议我可以进行哪些配置更改(docker/kafka/java/etc)以使其与共享卷一起使用。

【问题讨论】:

    标签: scala docker apache-kafka


    【解决方案1】:

    我们遇到了同样的问题,它似乎是磁盘已满。这也将解释为什么您只在 1/3 的消息中收到它。

    【讨论】:

    • 我确定我有可用的磁盘空间,超过 100gb。那是在开发人员机器上运行的,在 docker 中。顺便说一句,它可以通过 docker 重现。如果我使用内部 docker vm 磁盘,工作正常,但从主机安装的磁盘失败。顺便说一句,谢谢你的想法,我会调查它,也许挂载的磁盘提供了关于可用空间的错误信息,或者类似的东西
    • 我对 Docker 并没有真正的经验,但我听说它在 OS X 和文件挂载方面存在一些问题。感谢您的更新。
    猜你喜欢
    • 2018-03-19
    • 1970-01-01
    • 2017-08-01
    • 2017-10-14
    • 1970-01-01
    • 1970-01-01
    • 2023-03-13
    • 1970-01-01
    • 2018-01-09
    相关资源
    最近更新 更多