Kafka集群部署方法及一些常用管理命令

Kafka是一种高吞吐量的分布式发布订阅消息系统,由Apache开发,最初是为了解决linkedin的数据管道问题,具备持久化、高吞吐量、高可靠等特点。

部署kafka前请安装jdk,建议最新版本,如果与其他产品配合使用,请同时参考其他产品的JDK需求,安装方法略。

部署Kafka集群

Kafka集群的主机配置如下:

主机名 IP 用途
Kafka1 10.10.200.201 zookeeper+kafka
Kafka2 10.10.200.202
Kafka3 10.10.200.203

点击此处访问Kafka下载页面,本文以2.4.1版本为例进行部署。

wget https://mirrors.tuna.tsinghua.edu.cn/apache/kafka/2.4.1/kafka_2.12-2.4.1.tgz
tar zxvf kafka_2.12-2.4.1.tgz
mv kafka_2.12-2.4.1 kafka-2.4.1

配置zookeeper

默认使用解压包中自带的zookeeper服务,需要注意的是:必须先配置并启动zookeeper集群后才能启动kafka,同样须先关闭kafka再关闭zookeeper,而且zookeeper集群一般设置奇数个节点。

cd kafka-2.4.1
vim config/zookeeper.properties
dataDir=/opt/kafka-2.4.1/data
clientPort=2181
maxClientCnxns=3
admin.enableServer=false

启动zookeeper

./bin/zookeeper-server-start.sh ./config/zookeeper.properties &

配置kafka

Kafka集群一般配置奇数个节点,以broker1为例配置如下(各节点的lroker.id不同),请根据实际情况调整相应的配置:

cd /opt/kafka-2.4.1
vim ./config/server.properties
broker.id=1
listeners=PLAINTEXT://KAFKA1:9092
advertised.listeners=PLAINTEXT://KAFKA1:9092
num.network.threads=3
num.io.threads=8
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600
log.dirs=/opt/kafka-2.4.1/logs
num.partitions=48
num.recovery.threads.per.data.dir=1
offsets.topic.replication.factor=3
transaction.state.log.replication.factor=3
transaction.state.log.min.isr=3
default.replication.factor=3
log.retention.hours=72
log.segment.bytes=1073741824
log.retention.check.interval.ms=300000
zookeeper.connect=KAFKA1:2181, KAFKA2:2181, KAFKA3:2181
zookeeper.connection.timeout.ms=6000
group.initial.rebalance.delay.ms=0

参数说明

在Kafka中,topic以partition的形式存放,每个topic都可以设置partition数量,partition的数量决定组成topic的log的数量。因此partition数量一定要大于同时运行consumer的数量,同时建议partition数量大于集群broker的数量,以保障消息均匀分布在各个broker中。

启动kafka

./bin/kafka-server-start.sh -daemon ./config/server.properties

需要注意,如果修改了server.properties中与集群相关的信息,则必须删除logs目录下的meta.properties文件,否则无法启动kafka。

常用命令

# 创建topic
./bin/kafka-topics.sh --create --bootstrap-server KAFKA1:9092, KAFKA2:9092, KAFKA3:9092 --topic Topic_Name --partitions 3 --replication-factor 2

# 删除topic
./bin/kafka-topics.sh --delete --bootstrap-server KAFKA1:9092, KAFKA2:9092, KAFKA3:9092 --topic Topic_Name

# 查看topic列表
./bin/kafka-topics.sh --list --bootstrap-server KAFKA1:9092, KAFKA2:9092, KAFKA3:9092

# 查看topic明细
./bin/kafka-topics.sh --describe --bootstrap-server KAFKA1:9092, KAFKA2:9092, KAFKA3:9092 --topic Topic_Name

# 生产消息
./bin/kafka-console-producer.sh --broker-list KAFKA1:9092, KAFKA2:9092, KAFKA3:9092 --topic Topic_Name

# 消费消息
./bin/kafka-console-consumer.sh --bootstap-server KAFKA1:9092, KAFKA2:9092, KAFKA3:9092 --topic Topic_Name

原创文章禁止转载:技术学堂 » Kafka集群部署方法及一些常用管理命令

精彩评论

8+6=

感谢您的支持与鼓励

支付宝扫一扫打赏

微信扫一扫打赏