2017-02-03 108 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

相關問題