kafka 重要参数

kafka 重要参数

Broker 端参数

broker.id

每个broker都需要有一个标识符,使用broker.id来表示。它的默认值是0,也可以被设置成其他任意整数。这个值在整个Kafka集群里必须是唯一的。

Port:

如果使用配置样本来启动Kafka,它会监听9092端口。修改port配置参数可以把它设置成其他任意可用的端口。

zookeeper.connect:

用于保存broker元数据的Zookeeper地址是通过zookeeper.connect来指定的。localhost:2181表示这个Zookeeper是运行在本地的2181端口上。该配置参数是用冒号分隔的一组hostname:port/path列表,每一部分的含义如下:

  • hostname是Zookeeper服务器的机器名或IP地址;

  • port是Zookeeper的客户端连接端口;

  • /path是可选的Zookeeper路径,作为Kafka集群的chroot环境。如果不指定,默认使用根路径。

如果指定的chroot路径不存在,broker会在启动的时候创建它。

存储相关的参数

Broker 存储信息,即Broker使用哪些磁盘。

  • log.dirs:Kafka把所有消息都保存在磁盘上,存放这些日志片段的目录是通过log.dirs指定的。
  • log.dir:注意这是 dir,结尾没有s,说明它只能表示单个路径,它是补充上一个参数用的。

主题的默认配置:

num.partitions:

num.partitions参数指定了新创建的主题将包含多少个分区。

auto.create.topics.enable:

默认情况下,Kafka会在如下几种情形下自动创建主题:

  • 当一个生产者开始往主题写入消息时;
  • 当一个消费者开始从主题读取消息时;
  • 当任意一个客户端向主题发送元数据请求时;

log.retention.ms:

Kafka通常根据时间来决定数据可以被保留多久。默认使用log.retention.hours参数来配置时间,默认值为168小时,也就是一周。

log.retention.bytes:

通过保留的消息字节数来判断消息是否过期。作用在每个分区上的。

auto.create.topics.enable:

是否允许自动创建 Topic。

unclean.leader.election.enable:

是否允许 Unclean Leader 选举。

auto.leader.rebalance.enable:

是否允许定期进行 Leader 选举。

Topic 级别参数

同时设置broker 级别参数和topic 级别参数,哪个生效呢?答案:Topic级别参数。

保存消息纬度:

retention.ms:

规定了该 Topic 消息被保存的时长。默认是 7 天,即该 Topic 只保存最近 7 天的消息。一旦设置了这个值,它会覆盖掉 Broker 端的全局参数值。

retention.bytes:

规定了要为该 Topic 预留多大的磁盘空间。和全局参数作用相似,这个值通常在多租户的 Kafka 集群中会有用武之地。当前默认值是 -1,表示可以无限使用磁盘空间。

max.message.bytes:

决定了 Kafka Broker 能够正常接收该 Topic 的最大消息大小。

bin/kafka-topics.sh --bootstrap-server localhost:9092 --create --topic transaction --partitions 1 --replication-factor 1 --config retention.ms=15552000000 --config max.message.bytes=5242880
bin/kafka-configs.sh --zookeeper localhost:2181 --entity-type topics --entity-name transaction --alter --add-config max.message.bytes=10485760

JVM

堆大小:建议6GB

KAFKA_HEAP_OPTS:

指定堆大小。

KAFKA_JVM_PERFORMANCE_OPTS:

指定 GC 参数。

在启动kafka 之前,设置两个环境变量:

$> export KAFKA_JVM_PERFORMANCE_OPTS= -server -XX:+UseG1GC -XX:MaxGCPauseMillis=20 -XX:InitiatingHeapOccupancyPercent=35 -XX:+ExplicitGCInvokesConcurrent -Djava.awt.headless=true
$> bin/kafka-server-start.sh config/server.properties
posted @ 2022-08-10 13:39  sixinshuier  阅读(443)  评论(0编辑  收藏  举报