Apache Kafka IO错误

我有一个非常基本的卡夫卡安装,只是为了testing。 现在我试图从控制台发送一些数据到一个主题:

./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%的信息。 这是否意味着我的configuration有问题?

为什么我只有三分之一的尝试呢? 是不是有关的事实,我有3个卡夫卡服务器,也许是其中一个(顺便说一句,我执行这个命令的同一个虚拟机,经纪人1运行)

另外,这是我在这个经纪人的日志中看到的:

 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) 

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

我发现我可以转储索引到控制台,但它不工作:

 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) 

有任何想法吗?

卡夫卡0.8.2.0,斯卡拉2.11

更新我似乎是一个Docker不兼容,更具体的不兼容docker共享卷。 因为如果我把日志数据放入本地docker文件系统,一切正常。 所以寻找build议什么configuration更改(docker / kafka / java / etc)我可以使它与共享卷工作。

我们有同样的问题,它出现了磁盘满了。 这也可以解释为什么你只能得到消息的三分之一。