在Windows环境与Linux环境下安装单机Kafka与安装搭建Kafka集群

772 阅读4分钟

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