工作中遇到過問題:包括數據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使用場景最多,使用如下: