Kafka 安装

270 阅读2分钟

背景

之前一直用的是mq,想系统性学习下kafka。

环境:centos

kafka 安装

1. 下载

wget https://downloads.apache.org/kafka/3.6.2/kafka_2.13-3.6.2.tgz

2. 解压 & 重命名

tar -xzf kafka_2.13-3.6.2.tgz
mv kafka_2.13-3.6.2 kafka

3. 修改配置

vim kafka/config/server.properties

可以根据需要修改以下参数:

  • broker.id:每个 broker 的唯一标识符,可以是任意整数,通常从 0 开始递增。
  • listeners:设置 Kafka 服务监听的地址和端口,例如 PLAINTEXT://localhost:9092
  • log.dirs:指定 Kafka 存储日志文件的目录。我配置的是:/var/log/kafka.log

4. 启动 Kafka

1. 启动 Zookeeper

Kafka 使用 Zookeeper 进行协调,所以需要先启动 Zookeeper。

nohup /root/kafka/bin/zookeeper-server-start.sh /root/kafka/config/zookeeper.properties & 

2. 启动 Kafka 服务:

nohup /root/kafka/bin/kafka-server-start.sh /root/kafka/config/server.properties &

3. 每次开机自启动 kafka服务

不感兴趣的可不看。

在 CentOS 上设置让这两个命令开机自启动且有先后顺序的步骤:

一、使用 systemd 服务

  1. 创建一个 systemd 服务文件用于启动 Zookeeper:
sudo vi /etc/systemd/system/kafka-zookeeper.service
  1. 在打开的文件中输入以下内容:
[Unit]
Description=Kafka Zookeeper Service
After=network.target

[Service]
Type=forking
ExecStart=/bin/bash -c 'nohup /root/kafka/bin/zookeeper-server-start.sh /root/kafka/config/zookeeper.properties &'
User=root
Group=root
Restart=on-failure

[Install]
WantedBy=multi-user.target
  1. 保存并关闭文件。
  2. 创建一个 systemd 服务文件用于启动 Kafka
sudo vi /etc/systemd/system/kafka.service
  1. 在打开的文件中输入以下内容:
[Unit]
Description=Kafka Server Service
After=network.target

[Service]
Type=forking
ExecStart=/bin/bash -c 'nohup /root/kafka/bin/kafka-server-start.sh /root/kafka/config/server.properties &'
User=root
Group=root
Restart=on-failure

[Install]
WantedBy=multi-user.target
  1. 保存并关闭文件。

二、重新加载 systemd 配置并启用服务

  1. 重新加载 systemd 配置:
sudo systemctl daemon-reload
  1. 启用服务以实现开机自启动:
sudo systemctl enable kafka-zookeeper.service
sudo systemctl enable kafka.service

现在,每次 CentOS 系统启动时,会先启动 Zookeeper和Kafka。

kafka 测试

1. 创建主题

创建 test-topic 主题

/root/kafka/bin/kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic test-topic

如果 test-topic 主题已经存在,那么忽略这一步,直接进行第二步的发送消息。

2. 发送消息

/root/kafka/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test-topic

在控制台输入一些想要发送的内容。

3. 接受消息

/root/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test-topic --from-beginning

--from-beginning参数的作用是:

当启动消费者时,从指定主题的起始位置开始消费消息。如果没有这个参数,默认情况下消费者将从它上次停止的位置继续消费消息,或者如果是新的消费者组,它将从当前最新的消息位置开始消费。

例如,如果你的主题中已经积累了很多消息,使用--from-beginning可以确保消费者从主题的最开始读取所有的历史消息,而不是只读取新产生的消息。

总结

在centos环境下简单的下载安装了kafka,然后进行了简单的使用测试。