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