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集群部署方法及一些常用管理命令