Windows安装Kafka
下载与安装
下载地址:https://kafka.apache.org/downloads
配置
修改
server.properties,指定Kafka数据存放目录
log.dirs=D:/Development/kafka/data
# 端口设置
#listeners=PLAINTEXT://localhost:9092
若使用内置zookeeper则修改zookeeper.properties指定zookeeper数据存放目录与日志目录
dataDir=D:/Development/kafka/zkData
dataLogDir=D:/Development/kafka/zkLog
启动Zookeeper
可使用内置或外置Zookeeper,Windos建议使用内置zookeeper,简单方便
D:\Development\kafka\bin\windows>zookeeper-server-start.bat ../../config/zookeeper.properties
启动Kafka
D:\Development\kafka\bin\windows>kafka-server-start.bat ../../config/server.properties
测试
创建Topic
D:\Development\kafka\bin\windows>kafka-topics.bat --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic mytopic
Created topic mytopic.
生产者发送消息
D:\Development\kafka\bin\windows>kafka-console-producer.bat --broker-list localhost:9092 --topic mytopic
>hello kafka
>
消费者接受消息
D:\Development\kafka\bin\windows>kafka-console-consumer.bat --bootstrap-server localhost:9092 --from-beginning --topic mytopic
hello kafka
快速启动脚本
创建KafkaStart.bat文件,填入如下内容,在Window环境下快速启动Kafka
start cmd /k "D:\Development\kafka\bin\windows\zookeeper-server-start.bat D:\Development\kafka\config\zookeeper.properties"
start cmd /k "ping 127.1 -n "4">nul&&D:\Development\kafka\bin\windows\kafka-server-start.bat D:\Development\kafka\config\server.properties"
Linux安装单机版Kafka
下载与安装
下载地址:https://kafka.apache.org/downloads
wget https://dlcdn.apache.org/kafka/3.2.0/kafka_2.13-3.2.0.tgz
tar -xzf kafka_2.13-3.2.0.tgz
mv kafka_2.13-3.2.0 kafka
cd kafka
配置
:set number 或 :set nu开启行号显示
修改Kafka配置文件vim kafka/config/server.properties
# 每个节点单独配置
broker.id=0
# broker对外暴露的IP和端口 每个节点单独配置
listeners=PLAINTEXT://localhost:9092
# 数据路径配置 log就是指kafaka数据
log.dirs=/usr/local/program/kafka/data
# zookeeper地址
zookeeper.connect=localhost:2181
可使用外置或内置Zookeeper,这里使用内置Zookeeper
修改Zookeeper配置文件vim kafka/config/zookeeper.properties
16 dataDir=/usr/local/program/kafka/zkData
17 dataLogDir=/usr/local/program/kafka/zkLogs
添加环境变量
修改vim /etc/profile,添加Kafka环境变量设置
export KAFKA_HOME=/usr/local/program/kafka/
export PATH=$KAFKA_HOME/bin:$PATH
# 配置文件生效
source /etc/profile
启动内置zookeeper
这里启动内置Zookeeper,也可使用外置Zookeeper
zookeeper-server-start.sh config/zookeeper.properties
启动Kafka
# 前台运行
kafka-server-start.sh /usr/local/program/kafka/config/server.properties
# 后台运行
kafka-server-start.sh /usr/local/program/kafka/config/server.properties &
快速启动脚本
创建启动脚本:vim kafka_start.sh
# 启动zookeeper
zkServer.sh start
#等待5s,给与Zookeeper一定启动时间
sleep 5
#启动kafka
/usr/local/program/kafka/bin/kafka-server-start.sh /usr/local/program/kafka/config/server.properties
#等待5s后查看服务是否启动
sleep 5
jps
创建停止脚本:vim kafka_stop.sh
#关闭kafka
/usr/local/program/kafka/bin/kafka-server-stop.sh /usr/local/program/kafka/config/server.properties
#等待5s
sleep 3
#关闭zookeeper
zkServer.sh stop
#等待5s后查看服务是否关闭
sleep 5
jps
Linux搭建Kafka集群
搭建Zookeeper集群
参考:https://blog.csdn.net/qq_38628046/article/details/123591295
下载与安装
下载地址:https://kafka.apache.org/downloads
wget https://dlcdn.apache.org/kafka/3.2.0/kafka_2.13-3.2.0.tgz
tar -xzf kafka_2.13-3.2.0.tgz
mv kafka_2.13-3.2.0 kafka
cd kafka
配置
# 每个节点单独配置
broker.id=0
# broker对外暴露的IP和端口 每个节点单独配置
listeners=PLAINTEXT://node001:9092
# 数据路径配置 log就是指kafaka数据
log.dirs=/usr/local/program/kafka/data
# zookeeper地址 在根节点下创建/kafka,管理节点
zookeeper.connect=node001:2181,node002:2181,node003:2181/kafka
添加环境变量
修改vim /etc/profile,添加Kafka环境变量设置
export KAFKA_HOME=/usr/local/program/kafka/
export PATH=$KAFKA_HOME/bin:$PATH
# 配置文件生效
source /etc/profile
分发软件到其他节点
scp -r kafka root@node002:`pwd`
scp -r kafka root@node003:`pwd`
scp /etc/profile root@node002:/etc/profile
scp /etc/profile root@node003:/etc/profile
# node002、node003执行
source /etc/profile
修改配置
修改node002、node003机器上的
server.properties配置文件,确保broker.id在每个节点机器上唯一。
node002
broker.id=1
listeners=PLAINTEXT://node002:9092
node003
broker.id=2
listeners=PLAINTEXT://node003:9092
启动集群
在每个节点分别启动Kafaka
# 查看命令帮助
[root@node001 kafka]# bin/kafka-server-start.sh
USAGE: bin/kafka-server-start.sh [-daemon] server.properties [--override property=value]*
# 前台运行
[root@node001 kafka]# bin/kafka-server-start.sh config/server.properties
# 后台运行
[root@node001 kafka]# bin/kafka-server-start.sh -daemon config/server.properties
Kafka常用操作命令
新版Kafka相对于旧版Kafka操作命令有一定变化,表现在使用
--bootstrap-server命令;
创建和管理主题
1.创建主题:
kafka-topics.sh --create --topic <topic_name> --partitions <num_partitions> --replication-factor <replication_factor> --zookeeper <zookeeper_host:port>
# 旧版
kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic mytopic
# 新版
# 创建一个名为mytopic的主题,包含 3 个分区,复制因子为 2,并使用localhost:2181的ZooKeeper
kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 2 --partitions 3 --topic mytopic
2.查看主题列表:
kafka-topics.sh --list --zookeeper <zookeeper_host:port>
kafka-topics.sh --list --zookeeper localhost:2181
kafka-topics.sh --list --bootstrap-server localhost:9092
3.查看主题详情:
kafka-topics.sh --describe --topic <topic_name> --zookeeper <zookeeper_host:port>
# 旧版
kafka-topics.sh --describe --zookeeper localhost:2181 --topic mytopic
# 新版
kafka-topics.sh --describe --bootstrap-server localhost:9092 --topic mytopic
4.删除主题:
kafka-topics.sh --delete --topic <topic_name> --zookeeper <zookeeper_host:port>
kafka-topics.sh --delete --zookeeper localhost:2181 --topic mytopic2
kafka-topics.sh --delete --bootstrap-server localhost:9092 --topic mytopic2
生产者和消费者操作
1.启动一个消息生产者:
kafka-console-producer.sh --topic <topic_name> --bootstrap-server <bootstrap_servers>
# 发送消息到名为mytopic的主题
kafka-console-producer.sh --broker-list localhost:9092 --topic mytopic
2.启动一个消息消费者:
kafka-console-consumer.sh --topic <topic_name> --bootstrap-server <bootstrap_servers> [--from-beginning]
kafka-console-consumer.sh --zookeeper localhost:2181 --from-beginning --topic mytopic
# 消费来自主题mytopic的消息
kafka-console-consumer.sh --bootstrap-server localhost:9092 --from-beginning --topic mytopic
3.启动一个消费者组消费:
kafka-console-consumer.sh --topic <topic_name> --bootstrap-server <bootstrap_servers> --group <group_id> [--from-beginning]
# 从主题mytopic 中消费消息,并通过组ID my_group连接到 localhost:9092 的 Kafka服务器
kafka-console-consumer.sh --topic mytopic --bootstrap-server localhost:9092 --group my_group
生产者和消费者配置
消费者偏移量重置:
kafka-consumer-groups.sh --bootstrap-server <bootstrap_servers> --group <group_id> [--reset-offsets --to-earliest --execute --topic <topic_name>]
# 将消费者组mytopic的消费者偏移量重置为最早的可用偏移量
kafka-consumer-groups.sh --bootstrap-server localhost:9092 --group my_group --reset-offsets --to-earliest --execute --topic mytopic
修改分区数,只能往大改
kafka-topics.sh --zookeeper localhost:2181 --alter --topic mytopic --partitions 4
kafka-topics.sh --bootstrap-server localhost:9092 --alter --topic mytopic --partitions 4