【发布时间】: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