在Ubuntu系统中调整Kafka配置参数,核心是通过修改server.properties文件(Kafka主配置文件)实现,以下是详细步骤及常见参数说明:
Kafka的主配置文件server.properties通常位于Kafka安装目录的config子目录下(如/usr/local/kafka/config/server.properties或/path/to/kafka/config/server.properties)。可通过以下命令进入配置目录:
cd /path/to/kafka/config
使用文本编辑器(如nano、vim)打开server.properties文件(需root权限):
sudo nano server.properties
或
sudo vim server.properties
根据业务需求修改以下常见参数(示例值为常见配置,需根据实际情况调整):
broker.id:Kafka broker的唯一标识符(集群中不可重复),需设置为整数(如0、1)。broker.id=0
listeners:Kafka监听的地址和端口(用于客户端连接),格式为协议://主机名:端口(如PLAINTEXT://localhost:9092或PLAINTEXT://0.0.0.0:9092允许远程访问)。listeners=PLAINTEXT://localhost:9092
log.dirs:Kafka日志文件的存储目录(可设置多个,用逗号分隔,提升IO性能),需提前创建目录。log.dirs=/tmp/kafka-logs
zookeeper.connect:Zookeeper集群连接字符串(用于协调broker),格式为主机名:端口(多个节点用逗号分隔,如localhost:2181或zk1:2181,zk2:2181,zk3:2181)。zookeeper.connect=localhost:2181
num.partitions:Topic的默认分区数(决定并行处理能力,建议设置为消费者线程数的1-2倍)。num.partitions=8
num.io.threads:处理磁盘IO的线程数(建议设置为CPU核心数的50%,如4核CPU设置为2)。num.io.threads=8
num.network.threads:处理网络请求的线程数(建议设置为CPU核心数的50%,如4核CPU设置为2)。num.network.threads=3
log.segment.bytes:单个日志段的大小(当日志达到该大小后会滚动创建新段,建议设置为1GB)。log.segment.bytes=1073741824
log.retention.hours:日志保留时间(超过该时间的日志会被自动删除,建议设置为72-168小时,即3-7天)。log.retention.hours=168
compression.type:消息压缩类型(减少网络IO,可选none、gzip、snappy、lz4,lz4为常用平衡选择)。compression.type=lz4
default.replication.factor:Topic分区的默认副本因子(数据冗余备份,建议设置为3,需与Zookeeper集群规模匹配)。default.replication.factor=3
acks:消息确认机制(决定生产者发送消息的成功标准,0=不等待确认(最快但不安全)、1=等待leader确认(平衡)、-1=等待所有副本确认(最安全))。acks=all
nano编辑器:按Ctrl+O保存文件,按Ctrl+X退出。vim编辑器:按:wq保存并退出。修改配置文件后,需重启Kafka服务使更改生效:
# 方式1:使用systemctl(推荐,适用于Ubuntu 16.04及以上版本)
sudo systemctl restart kafka
# 方式2:使用脚本(适用于旧版本或手动安装)
sudo /path/to/kafka/bin/kafka-server-stop.sh
sudo /path/to/kafka/bin/kafka-server-start.sh -daemon /path/to/kafka/config/server.properties
通过Kafka命令行工具验证配置是否生效:
sudo systemctl status kafka
若显示active (running)则表示服务已启动。/path/to/kafka/bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test_topic
/path/to/kafka/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test_topic
/path/to/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test_topic --from-beginning
server.properties(如cp server.properties server.properties.bak),避免配置错误导致服务无法启动。ulimit -n 65535、优化内核参数),以提升Kafka性能。