安装 Zookeeper 和 Kafka
注意:需要java环境
[root@hcss-ecs-2a6a ~]# java -version
java version "17.0.12" 2024-07-16 LTS
Java(TM) SE Runtime Environment (build 17.0.12+8-LTS-286)
Java HotSpot(TM) 64-Bit Server VM (build 17.0.12+8-LTS-286, mixed mode, sharing)
[root@hcss-ecs-2a6a ~]#
1、 安装 Zookeeper
1.1 下载 Zookeeper
从 Apache 官方网站下载 Zookeeper 的安装包。这里以最新的稳定版本为例。
wget https://archive.apache.org/dist/zookeeper/zookeeper-3.7.1/apache-zookeeper-3.7.1-bin.tar.gz
1.2 解压安装包
将下载的安装包解压到一个合适的目录,例如 /opt。
sudo tar -zxvf apache-zookeeper-3.7.1-bin.tar.gz -C /opt
1.3 创建软链接
为了方便管理,可以创建一个软链接指向解压后的目录。
sudo ln -s /opt/apache-zookeeper-3.7.1-bin /opt/zookeeper
1.4 配置 Zookeeper
编辑 Zookeeper 的配置文件 zoo.cfg。
sudo mkdir -p /opt/zookeeper/data
sudo nano /opt/zookeeper/conf/zoo.cfg
在 zoo.cfg 文件中添加以下内容:
tickTime=2000
dataDir=/opt/zookeeper/data
clientPort=2181
initLimit=5
syncLimit=2
1.5 启动 Zookeeper
启动 Zookeeper 服务。
sudo /opt/zookeeper/bin/zkServer.sh start
验证 Zookeeper 是否启动成功:
sudo /opt/zookeeper/bin/zkServer.sh status
2、安装 Kafka
2.1 下载 Kafka
从 Apache 官方网站下载 Kafka 的安装包。这里以最新的稳定版本为例。
wget https://archive.apache.org/dist/kafka/3.0.0/kafka_2.13-3.0.0.tgz
2.2 解压安装包
将下载的安装包解压到一个合适的目录,例如 /opt。
sudo tar -zxvf kafka_2.13-3.0.0.tgz -C /opt
2.3 创建软链接
为了方便管理,可以创建一个软链接指向解压后的目录。
sudo ln -s /opt/kafka_2.13-3.0.0 /opt/kafka
2.4 配置 Kafka
编辑 Kafka 的配置文件 server.properties。
sudo nano /opt/kafka/config/server.properties
在 server.properties 文件中进行以下配置:
broker.id=0
listeners=PLAINTEXT://:9092
zookeeper.connect=localhost:2181
log.dirs=/opt/kafka/logs
确保 zookeeper.connect 指向你刚刚启动的 Zookeeper 服务。
2.5 创建日志目录
创建 Kafka 的日志目录。
sudo mkdir -p /opt/kafka/logs
2.6 启动 Kafka
启动 Kafka 服务。
sudo /opt/kafka/bin/kafka-server-start.sh -daemon /opt/kafka/config/server.properties
验证 Kafka 是否启动成功:
[root@hcss-ecs-2a6a ~]# /opt/java/jdk-17.0.12/bin/jps
18307 QuorumPeerMain
19848 Kafka
28121 ConsoleConsumer
27627 ConsoleProducer
29996 Jps
你应该能看到 Kafka 进程在运行。
3、测试 Kafka
创建一个测试主题并发送消息。
3.1 创建主题
sudo /opt/kafka/bin/kafka-topics.sh --create --topic test-topic --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1
3.2 发送消息
sudo /opt/kafka/bin/kafka-console-producer.sh --topic test-topic --bootstrap-server localhost:9092
在打开的终端中输入一些消息,例如:
Hello, Kafka!
3.3 消费消息
打开另一个终端,运行消费者来接收消息。
sudo /opt/kafka/bin/kafka-console-consumer.sh --topic test-topic --from-beginning --bootstrap-server localhost:9092
你应该能看到之前发送的消息。
3.4 修改Kafka 的配置文件 server.properties,添加以下内容:
# 允许外部端口连接
listeners=PLAINTEXT://0.0.0.0:9092
# 外部代理地址
advertised.listeners=PLAINTEXT://1.94.145.26:9092
3.5 常用命令
# 重启kafka./kafka-server-stop.sh./kafka-server-start.sh -daemon ../config/server.properties
# 创建主题
./kafka-topics.sh --create --topic demo-topic20241207 \--bootstrap-server 1.94.145.26:9092 \--partitions 3 \--replication-factor 1# 查看主题详情
./kafka-topics.sh --describe --topic demo-topic20241207 --bootstrap-server 1.94.145.26:9092# 列出所有主题
./kafka-topics.sh --list --bootstrap-server 1.94.145.26:9092# 查看 Kafka 主题中的消息
./kafka-console-consumer.sh --bootstrap-server 1.94.145.26:9092 --topic demo-topic20241207 --from-beginning --property print.partition=true
1、说明:
--topic demo-topic20241207 - 使用你更新后的主题名称
--partitions 3 - 可以设置多个分区,即使只有一个 broker
--replication-factor 1 - 因为只有一个 broker,所以副本因子必须是 12、分区数(partitions)和副本因子(replication-factor)的区别:分区(partitions):
可以大于 broker 数量
用于并行处理和提高吞吐量
决定了可以有多少消费者并行消费(同一个消费者组内)副本(replication-factor):
不能超过 broker 数量
用于数据冗余和高可用
在单 broker 环境中只能是 13、在单实例环境下:
可以设置多个分区来提高并行度
副本因子必须是 1
没有故障转移能力(因为没有副本)