IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 系统运维系列 之Kafka手动设置offset(经典方法总结) -> 正文阅读

[大数据]系统运维系列 之Kafka手动设置offset(经典方法总结)

1 问题背景
在使用Kafka消费数据过程中,消费程序可能出现运行问题,导致消费不及时,消息堆积很多;尤其是消息消费后需要进行一列后处理,这种情况下就需要考虑一些方法来进行消费参数的设置。

2 举例
测试集群中有3台服务器,分别设置为Kafka的3个分区,分别为分区1,分区2和分区3,由于消费者出现运行问题,导致无法消费数据或者仅消费1到2个分区的数据,这时候分区中堆积的数据很多,达到百万级别甚至千万级别,由于消息消费后需要进行后续处理,按照正常速度消费需要较长时间才可以消费完这些堆积数据,且消费过程中会影响实时消息的消费情况,这样会形成一个恶性循环。

3 解决方案
3.1 利用–reset-offsets进行设置,此方法要求*Kafka版本在0.11.以上
步骤1:查询topic的offset的范围

#最小值
bin/kafka-run-class.sh kafka.tools.GetOffsetShell --broker-list AAA:9092 -topic test --time -2
#最大值
bin/kafka-run-class.sh kafka.tools.GetOffsetShell --broker-list AAA:9092 -topic test --time -1

步骤2:利用–reset-offsets命令进行偏置量的重置

#to-offset后面的数字代表前面查到的最小值到最大值范围中的数据
bin/kafka-consumer-groups.sh --bootstrap-server ip:9092 --group groupName --reset-offsets --to-offset 10000 --topic test --execute
#将任意主题重置到最早位置消费
bin/kafka-consumer-groups.sh --bootstrap-server ip:9092 --group groupName --reset-offsets --all-topics --to-earliest –execute
#更新到当前offset位置
bin/kafka-consumer-groups.sh --bootstrap-server ip:9092 --group groupName --reset-offsets --all-topics --to-current --execute
#把位移调整到分区当前最新位移
bin/kafka-consumer-groups.sh --bootstrap-server ip:9092 --group groupName --reset-offsets --all-topics --to-latest --execute
#offset设置到指定时刻开始
bin/kafka-consumer-groups.sh --bootstrap-server ip:9092 --group groupName --reset-offsets --all-topics --to-datetime 2021-10-25T12:30:00.000
#参数
--execute:执行真正的位移调整
--export:把位移调整方案按照CSV格式打印,方便用户成csv文件,供后续直接使用

步骤3:其余脚本补充

#查看 kafka 消费者组列表
/bin/kafka-consumer-groups.sh --bootstrap-server ip:9092 --list
#查看指定消费者的offset
bin/kafka-consumer-groups.sh --bootstrap-server ip:9092 --describe --group groupName

3.2 设置consumer group的offset
步骤1:启动zookeeper client

/zookeeper/bin/zkCli.sh

步骤2:通过下面命令设置consumer group:groupName topic:test partition:0的offset为10000

set /kafka/consumers/groupName/offsets/test/0 10000

步骤3:重启相关的应用程序

3.3 “暴力”方法
步骤1:原理:Kafka凭什么速度那么快?
Kafka的消息是保存或缓存在磁盘上的,一般认为在磁盘上读写数据是会降低性能的,因为寻址会比较消耗时间,但是实际上,Kafka的特性之一就是高吞吐率。
即使是普通的服务器,Kafka也可以轻松支持每秒百万级的写入请求,超过了大部分的消息中间件,这种特性也使得Kafka在日志处理等海量数据场景广泛应用。
步骤2:Kafka消费者如何控制消费速度
步骤3:在应用程序侧修改,比如可修改消息的后处理程序部分,提升消息的消费速度等。

参考资料:
http://www.wallcopper.com/linux/3873.html kafka 重置偏移reset-topic
https://blog.csdn.net/yxgxy270187133/article/details/53666760?t=1502933725546 修改kafka topic的offset几种方法
https://blog.csdn.net/ZouChengli/article/details/82587404?spm=1001.2101.3001.6650.6&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EOPENSEARCH%7Edefault-6.no_search_link&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EOPENSEARCH%7Edefault-6.no_search_link Kafka手动设置offset
https://zhuanlan.zhihu.com/p/66482461 Kafka凭什么速度那么快?
https://www.cnblogs.com/yangxusun9/p/13049132.html Kafka消费者如何控制消费速度

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-10-26 12:16:31  更:2021-10-26 12:18:13 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 2:44:05-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码