Kafka版本:0.9
我们有一个试图从Kafka读取的java应用程序。但我们看到kafka消息中的数据损坏
以下是Java应用程序的错误:
org.apache.kafka.common.KafkaException: Error deserializing key/value for partition varnish_raw_logs-31 at offset 568565
Caused by: org.apache.kafka.common.record.InvalidRecordException: Record is corrupt (stored crc = 1835858402, computed crc = 4025136930)
所以我决定查看哪个节点拥有分区31,并使用kafka dump log util查看数据的外观。你从下面看到,分区31由node-4拥有,而node-2拥有它的副本。
Topic: varnish_raw_logs Partition: 31 Leader: 4 Replicas: 4,2 Isr: 4,2
现在,当我使用dump util查看来自节点4和节点2的日志时。我看到数据在副本节点(节点-2)中有效,但在主节点中已损坏。
所以我的问题是:master(node-4)进入此状态的根本原因是什么?虽然您可以争辩我们应该跳过特定于事件的错误。我不想错过这些消息,因为我在复制品中有一个好消息。