首页 > 其他分享 >Kafka的部分初始化参数的学习与整理

Kafka的部分初始化参数的学习与整理

时间:2023-11-01 20:46:04浏览次数:40  
标签:初始化 -- bytes Kafka topic 参数 kafka retention

Kafka的部分初始化参数的学习与整理


背景

前段时间跟同事一起处理过kafka的topic offset的retention 时间与 log 的retention时间不一致. 
导致消息还有, 但是offset 没有, 导致重复消费的问题. 

发现很多产品其实参数很复杂, 不能只看一个参数就立马进行修改. 
应该完整细致的了解各种参数再做处理才可以. 

又因为上个月比较忙, 很多东西没有系统的整理. 现在已经11月了.想着重新整理一下之前遇到的问题, 备忘. 

部分参数汇总

# 需要注意这些参数主要是单节点的测试验证环境, 所以不能直接用于生产环境. 
num.network.threads=3
num.io.threads=8
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600
num.partitions=1
num.recovery.threads.per.data.dir=1
offsets.topic.replication.factor=1
transaction.state.log.replication.factor=1
transaction.state.log.min.isr=1
retention.ms=604800000
log.segment.bytes=1073741824
log.retention.check.interval.ms=300000
message.max.bytes=52428800
replica.fetch.max.bytes=62914560

部分参数的学习与使用-留存时间

log.retention.minutes=10080
offsets.retention.minutes=10080
注意 这两个参数是配置文件里面用的
如果是使用命令行创建需要使用如下的参数: 
retention.ms=604800000

这两个参数最好一致起来, 避免出现背景里面的问题. 
也需要根据系统要求和容量空间进行权衡, 一定要避免出现消息对视的情况. 
磁盘满可能会hang住系统, 但不是致命的
如果数据被删掉了, 可能就是很致命的问题了. 

参数的使用方式:
1. 可以放到: 
/kafka/config/kraft/server.properties
里面 作为所有topic的默认参数 

2. 可以使用 kafka-topics.sh 脚本进行创建
bin/kafka-topics.sh  --bootstrap-server 192.168.254.206:9092 --create --topic test  --partitions 1  --replication-factor 1 \
--config retention.ms=604800000

查看具体topic的信息
bin/kafka-topics.sh --describe -topic test --bootstrap-server 192.168.254.206:9092
效果为:
Configs: segment.bytes=1073741824,retention.ms=604800000,max.message.bytes=52428800
一个解释: 

消息保留多长时间通过以下配置项进行设置:
log.retention.hours
log.retention.minutes
log.retention.ms
解释:以上三个配置项控制一条消息数据被保存多长时间。优先级 ms>minutes>hours 。

log.retention.hours=168表示默认保存 7 天的数据,自动删除 7 天前的数据。

Topic级别配置项:
retention.ms=604800000
Topic级别参数会覆盖broker级别参数,显然对所有topic统一留存7天的设置是不合理的。
Topic级别参数的配置,可以通过bin/kafka-topics.sh、bin/kafka-configs.sh在创建 Topic 时或修改 Topic 时进行设置:
bin/kafka-topics.sh --bootstrap-server localhost:9092 --create --topic test --partitions 3 --replication-factor 1 --config retention.ms=100000000000

部分参数的学习与使用-消息大小设置

配置文件里面的参数是:
message.max.bytes=52428800

但是使用命令的话 是这一个:
bin/kafka-topics.sh  --bootstrap-server 192.168.254.206:9092 --create --topic test3  --partitions 1  --replication-factor 1 \
--config retention.ms=604800000  --config  max.message.bytes=52428899

查看具体信息:
bin/kafka-topics.sh --describe -topic test3 --bootstrap-server 192.168.254.206:9092

验证 topic级别的参数可以覆盖 broker 配置节里面的参数. 

参数的修改

可以修改已经参数的配置

bin/kafka-configs.sh --bootstrap-server 192.168.254.206:9092 -topic test --alter --add-config retention.ms=1234567890
bin/kafka-configs.sh --bootstrap-server 192.168.254.206:9092 -topic test --alter  --add-config max.message.bytes=9999999

修改之前查看的信息为: 
bin/kafka-topics.sh --describe -topic test --bootstrap-server 192.168.254.206:9092
修改之前为: 
Configs: segment.bytes=1073741824,retention.ms=604800000,max.message.bytes=52428800
修改之后为:
segment.bytes=1073741824,retention.ms=1234567890,max.message.bytes=9999999

注意一次只能够修改增加一个参数, 不能多个参数一起增加. 

标签:初始化,--,bytes,Kafka,topic,参数,kafka,retention
From: https://www.cnblogs.com/jinanxiaolaohu/p/17804048.html

相关文章

  • 初始化块
    1.普通初始化块在一个类的声明中可以包括多个代码块,当类构造对象时,这些代码块会被自动执行。classPerson{privateintage;privateStringname;privatestaticintid=0;{//普通初始化块System.out.println(id);id++;......
  • kettle/ckettle进行参数对称加解密-AES为例
    ckettle/kettle字段加密对称加密机制方法调用链kettle-core-2.3.0.1-SNAPSHOT.jar:进行秘钥加密保护(不涉及实际业务处理) org.pentaho.di.core.encryption.Encr org.pentaho.di.core.encryption.TwoWayPasswordEncoderInterface 使用BigInteger进行或运算来进行秘钥加密解......
  • 线程池如何实现参数的动态修改?线程池如何调优?
    线程池如何实现参数的动态修改线程池提供了几个setter方法来设置线程池的参数。这里主要有两个思路:1、在微服务架构下,可以利用配置中心,如Nacos、Apollo等等,也可以自己开发配置中心。业务服务读取线程池配置,获取相应的线程池实例来修改线程池的参数。2、如果限制了配置中心的使用,也......
  • 前端歌谣-第贰拾贰课-函数参数默认值
    前言我是歌谣最好的种树是十年前其次是现在今天继续给大家带来的是this指向的讲解环境配置npminit-yyarnaddvite-D修改page.json配置端口{"name":"demo1","version":"1.0.0","description":"","main":"index.js",......
  • linux安装MySQL数据库初始化报错
    在使用如下初始化命令进行数据库初始化时报错,./bin/mysqld--user=mysql--basedir=/usr/local/mysql/mysql/--datadir=/usr/local/mysql/mysql/data/--initialize--lower-case-table-names=1; 权限不足导致,修改命令为:./bin/mysqld--user=root--basedir=/usr/local......
  • Postman使用当前时间作为参数
    这里如果直接使用newDate()的话,在传输数据时,会变成ISO时间,所以需要对当前时间进行格式化如果格式化成YYYY-MM-DDHH:mm:ss无法将时间传递给后端......
  • 机器学习——延后初始化
    到目前为止,我们忽略了建立网络时需要做的以下这些事情:我们定义了网络架构,但没有指定输入维度。我们添加层时没有指定前一层的输出维度。我们在初始化参数时,甚至没有足够的信息来确定模型应该包含多少参数。有些读者可能会对我们的代码能运行感到惊讶。毕竟,深度学习框......
  • 机器学习——参数管理
    参数访问我们从已有模型中访问参数。当通过Sequential类定义模型时,我们可以通过索引来访问模型的任意层。这就像模型是一个列表一样,每层的参数都在其属性中。如下所示,我们可以检查第二个全连接层的参数。print(net[2].state_dict())OrderedDict([('weight',tensor([[-0......
  • c语言学习(结构体初始化)42
    利用例题直接阐释:#define_CRT_SECURE_NO_WARNINGS1#include<stdio.h>structhobby//hobby:爱好{charcolor[10];charsports[10];};structstu{charname[10];intage;structhobbys2;doubleheight;};intmain(){structstu......
  • Match第三个参数为-1时的计算规则(旧文迁移)
    以前学二分法的时候,一直以为,Match的第三个参数只要不为0就是以二分法规律进行查找的,可是今天测试了一下,发现人家用的居然是历遍法,规则是:从上往下开始找,遇到比查找值小的前一个的位置,或者第一次出现与查找值相同的位置;如果查找值比查找范围内的第一个值大,则结果为NA;如果查找值比查找......