Kaffa 按照时间重置 Topic 的所有分区 offset,时区问题?重置命令无效?

4 篇文章 1 订阅
3 篇文章 2 订阅

Kaffa 按照时间重置 Topic 的所有分区 offset,时区问题?重置命令无效?

一、问题原因

本质是 Timestamp 转成 DateTime 会默认读取 JVM 的时区,导致我们指定参数的时间比实际 Kafka 重置 offset 时间早了 8 小时。
例如:我们指定参数的时间是 08:00:00 ,但是 kafka 内部的时间会以 16:00:00 重置 offset 。
如果我们指定的时间是 8 点,现在时间是 9点,还没有到16:00:00。 这样就会导致一个问题,重置命令一直会吧 offset 重置成最新的 offset。

二、解决方法

  1. 将启动 kafka 的脚本 添加启动参数,设置时区。
    vim kafka-server-start.sh
    
    将下面的地方添加关键参数 -Duser.timezone=UTC+0800。
    if [ "x$KAFKA_HEAP_OPTS" = "x" ]; then
    export KAFKA_HEAP_OPTS="-Duser.timezone=UTC+0800 -server -Xms2G -Xmx2G -XX:PermSize=128m -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:ParallelGCThreads=8 -XX:ConcGCThreads=5 -XX:InitiatingHeapOccupancyPercent=70"
    export JMX_PORT="9999"
    # export KAFKA_HEAP_OPTS="-Xmx1G -Xms1G"
    fi
    
  2. 重启 Kafka,将消息清空后,重新发送到 kafka 的各分区。
    bin/kafka-server-stop.sh stop
    bin/kafka-server-start.sh -daemon config/server.properties
    

三、重置Offset 与 查看结果

在重置之前要把 Kafka Group 和 Topic 关联起来,否则会报错。

  1. 先消费一条数据。

    kafka-console-consumer.sh --bootstrap-server bigdata1:9092 --from-beginning -topic MyTopic -max-messages 1 -group ChestnutQiang
    
  2. 根据时间重置 Offset

    # 这条命令从 kafka 0.11 才有效,在这之前需要用程序重置 kafka 的 offset。
    kafka-consumer-groups.sh --bootstrap-server bigdata1:9092 --group ChestnutQiang --reset-offsets --topic MyTopic --to-datetime 2021-01-28T08:00:00.000 --execute
    
    TOPIC                    PARTITION  NEW-OFFSET     
    MyTopic                  1          9135           
    MyTopic                  5          9112           
    MyTopic                  4          9142           
    MyTopic                  0          9279           
    MyTopic                  2          9179           
    MyTopic                  3          9121 
    
  3. 查看一下各分区当前 Offset 、最新 Offset 、积压多少条消息。

    kafka-consumer-groups.sh --bootstrap-server bigdata1:9092 --group ChestnutQiang --describe
    
    TOPIC     PARTITION  CURRENT-OFFSET  LOG-END-OFFSET  LAG             CONSUMER-ID     HOST            CLIENT-ID
    MyTopic   1          9135            12405           3270            -               -               -
    MyTopic   5          9112            12403           3291            -               -               -
    MyTopic   4          9142            12445           3303            -               -               -
    MyTopic   0          9279            12574           3295            -               -               -
    MyTopic   2          9179            12427           3248            -               -               -
    MyTopic   3          9121            12394           3273            -               -               -
    
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值