2017-02-03 87 views
0

我正尝试使用mirrormaker工具将数据从一个主群集复制到备份一个,但出现以下错误。kafka Mirrormaker工具[kafka 0.10版]错误

nykpsr000001726$ bin/kafka-mirror-maker.sh --consumer.config config/mirror-consumer.properties --producer.config config/mirror- 
producer.properties --whitelist my-replicated-topic 

    [2017-02-03 06:17:00,193] FATAL [mirrormaker-thread-0] Mirror maker thread failure due to (kafka.tools.MirrorMaker$MirrorMaker 
    Thread) 
    java.lang.IllegalArgumentException: Invalid timestamp -1 
      at org.apache.kafka.clients.producer.ProducerRecord.<init>(ProducerRecord.java:60) 
      at kafka.tools.MirrorMaker$defaultMirrorMakerMessageHandler$.handle(MirrorMaker.scala:678) 
      at kafka.tools.MirrorMaker$MirrorMakerThread.run(MirrorMaker.scala:414) 
    [2017-02-03 06:17:00,422] FATAL [mirrormaker-thread-0] Mirror maker thread exited abnormally, stopping the whole mirror maker. 

波纹管是消费者和生产者配置的细节。

mirror-consumer.properties

group.id=KafkaMirror-test-1 
# consumer timeout should be -1 (default) 
zookeeper.connect=ldnpsr000001131:2181 
auto.offset.reset=smallest 

mirror-producer.properties

bootstrap.servers=nykpsr000001726:9092 

真的为并欣赏一个快速提示。

+0

您可以指定您正在运行的Kafka版本吗? –

+0

我正在运行Kafka 0.10版本,并使用第三方测试工具生成测试消息。我相信0.10和0.10之前的不兼容性会导致这个问题。再次,非常感谢您的支持@ jose.goncabel – Joey

回答

0

看来你正面临着时间戳的问题,官方文件说:

目前,卡夫卡流不处理无效(即负)时间戳从TimestampExtractor优雅的回了,但没有用这是一个例外,因为对于任何基于时间的运算符(如窗口聚合或连接),消极时间戳无法以有意义的方式进行处理。

负面时间戳可能会出于几个原因。

  1. 您使用旧Kafka生产者客户端(即版本0.9或更低版本)编写的主题,它不使用新的消息格式,因此元数据时间戳字段默认为-1,如果主题配置了log.message.timestamp.type = CreateTime
  2. 你消耗从0.9到0.10升级卡夫卡集群后,前期0.10的话题:这里所有的一切与0.9生产者产生的数据是不是与0.10消息格式兼容(并且默认为时间戳-1)
  3. 您使用第三方生产者客户端正在写入的主题,该客户端允许嵌入负时间戳(KafkaProducer会检查负时间戳一个提出用于这种情况下防止无效时间戳在首位)
  4. 用户提供了一种定制的时间戳提取器提取的时间戳的有效载荷数据(即,键 - 值对)一个异常,并且该自定义提取器可能返回负的时间戳。

Here可以读取所有的信息。

+0

感谢您的建议@ jose.goncabel,我会再次检查它。 – Joey

相关问题