工做中遇到过问题:
包括数据Invalid Message和Failed_to_UNcompress等,会形成消费端的iterator损坏,致使消费进程挂掉,须要手动跳过某些数据;
Kafka的偏移量有保存在zookeeper和kafka中topic(_consumer_offset)2种方式
一、修改保存在zookeeper中的偏移量:
使用./zkCli.sh -server xxxx:2181 进入zk命令行模式,get对应的消费组的对应分区的偏移量,使用set方法指定偏移量
二、修改保存在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分区调整位移)get
- 肯定位移重设策略——当前支持8种设置规则:kafka
- --to-earliest:把位移调整到分区当前最小位移it
- --to-latest:把位移调整到分区当前最新位移io
- --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使用场景最多,使用以下: