kafka實踐一:手動修改消費偏移量的2種方式

工作中遇到過問題:包括數據Invalid Message和Failed_to_UNcompress等,會造成消費端的iterator損壞,導致消費進程掛掉,需要手動跳過某些數據;

Kafka的偏移量有保存在zookeeper和kafka中topic(_consumer_offset)2種方式;

1、修改保存在zookeeper中的偏移量:

 使用./zkCli.sh -server xxxx:2181 進入zk命令行模式,get對應的消費組的對應分區的偏移量,使用set方法指定偏移量;

2、修改保存在kafka的偏移量:

使用Kafka自帶的kafka-consumer-groups.sh腳本設置消費者組(consumer group)的位移, 這是0.11.0.0版本提供的新功能且只適用於新版本consumer,   在新版本之前,如果要爲已有的consumer group調整位移必須要手動編寫Java程序調用KafkaConsumer#seek方法,,0.11.0.0版本豐富了kafka-consumer-groups腳本的功能,用戶可以直接使用該腳本很方便地爲已有的consumer group重新設置位移,但前提必須是consumer group必須是inactive的,即不能是處於正在工作中的狀態。

  • 確定topic作用域——當前有3種作用域指定方式:--all-topics(爲consumer group下所有topic的所有分區調整位移),--topic t1 --topic t2(爲指定的若干個topic的所有分區調整位移),--topic t1:0,1,2(爲指定的topic分區調整位移)

  • 確定位移重設策略——當前支持8種設置規則:

    • --to-earliest:把位移調整到分區當前最小位移

    • --to-latest:把位移調整到分區當前最新位移

    • --to-current:把位移調整到分區當前位移

    • --to-offset <offset>: 把位移調整到指定位移處

    • --shift-by N: 把位移調整到當前位移 + N處,注意N可以是負數,表示向前移動

    • --to-datetime <datetime>:把位移調整到大於給定時間的最早位移處,datetime格式是yyyy-MM-ddTHH:mm:ss.xxx,比如2017-08-04T00:00:00.000

    • --by-duration <duration>:把位移調整到距離當前時間指定間隔的位移處,duration格式是PnDTnHnMnS,比如PT0H5M0S

    • --from-file <file>:從CSV文件中讀取調整策略

  • 確定執行方案——當前支持3種方案:

    • 什麼參數都不加:只是打印出位移調整方案,不具體執行

    • --execute:執行真正的位移調整

    • --export:把位移調整方案按照CSV格式打印,方便用戶成csv文件,供後續直接使用

    -shift-by N使用場景最多,使用如下:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章