linux安装单机kafka

 

官网下载地址:https://kafka.apache.org/downloads

kafka 在 2.8 版本开始脱离 zookeeper。

参考:https://blog.csdn.net/zaixiaqin/article/details/134968110

 

在 Kafka 和 Zookeeper 的架构中,消息数据是存储在 Kafka 中,而 Zookeeper 仅用于管理和协调 Kafka 集群的元数据和状态。

消息存储:

  • Kafka 负责存储实际的消息数据。
    • Kafka 使用 主题(Topic) 和 分区(Partition) 来组织消息数据。每个分区可以有多个消息,Kafka 会将这些消息顺序地存储在磁盘上,保持持久化。
    • Kafka 集群中的每个 Broker 存储一部分消息数据,这些消息会根据生产者发送的内容写入到对应的分区。
    • 消费者通过读取分区中的消息来消费数据。

Zookeeper 的作用:

  • Zookeeper 并不存储实际的消息内容,而是主要用于 Kafka 集群的协调和管理。
    • 元数据存储:Zookeeper 存储 Kafka 集群的元数据,包括主题的配置信息、分区分配情况、Broker 的状态、Leader 节点的选举等。
    • Leader 选举:Zookeeper 负责管理分区的 Leader 选举,确保 Kafka 中的每个分区有且只有一个 Leader(负责写入和读请求),并且在 Leader 宕机时重新选举一个新的 Leader。
    • 消费者偏移量管理:在某些版本的 Kafka 中,消费者的消费进度(偏移量)也会存储在 Zookeeper 中,以便消费者在重启后能继续消费消息。

 

 一、安装3.9.1版本kafka,使用zookeeper

1、下载

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

 

2、解压

tar zxvf kafka_2.12-3.9.1.tgz -C /data/

3、配置

进入安装目录的config目录

cd /data/kafka_2.12-3.9.1/config

 

consumer.properties 是消费者的相关配置
producer.properties 是生产者的相关配置
server.properties 是 kafka 服务的配置
zookeeper.properties 是 zookeeper 的相关配置
  zookeeper 中记录kafka的broker等信息

修改 server.properties 的配置

  • listeners:作用是 “Kafka 服务端监听哪些网卡 / 端口”,可以用 0.0.0.0 表示监听服务器所有网卡(内网 / 外网),这是合法的;
  • advertised.listeners:作用是 “Kafka 告诉客户端(生产者 / 消费者)该连接哪个地址”,0.0.0.0 是 “非 routable 元地址”(客户端无法通过这个地址连接),因此 Kafka 强制要求这里填服务器的真实 IP / 域名。
vim /data/kafka_2.12-3.9.1/config/server.properties

# 修改2处,只能listeners可以填0.0.0.0,advertised只能填ip
listeners=PLAINTEXT://0.0.0.0:9092
advertised.listeners=PLAINTEXT://192.168.1.94:9092

# kafka的数据存储路径,可改可不改
log.dirs=/tmp/kafka-logs

# kafka的topic的消息存储时间默认7天
log.retention.hours=168

 

zookeeper.properties配置可以

# zookeeper的默认数据存储路径
dataDir=/tmp/zookeeper

 

不用改

 

4、启动

启动 zookeeper,监听2181端口

cd /data/kafka_2.12-3.9.1/
./bin/zookeeper-server-start.sh -daemon config/zookeeper.properties

启动 kafka,监听9092端口

./bin/kafka-server-start.sh -daemon config/server.properties

 

服务器异常断电关机后启动报错,重新部署kafka

 

二、安装4.1.1版本kafka(KRaft 单机模式),不使用zookeeper

1、下载

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

2、解压

tar zxvf kafka_2.13-4.1.1.tgz -C /usr/local/

3、修改配置

修改 server.properties 的配置

  • listeners:作用是 “Kafka 服务端监听哪些网卡 / 端口”,可以用 0.0.0.0 表示监听服务器所有网卡(内网 / 外网),这是合法的;
  • advertised.listeners:作用是 “Kafka 告诉客户端(生产者 / 消费者)该连接哪个地址”,0.0.0.0 是 “非 routable 元地址”(客户端无法通过这个地址连接),因此 Kafka 强制要求这里填服务器的真实 IP / 域名。
vim /usr/local/kafka_2.13-4.1.1/config/server.properties

 

#修改为本机ip
listeners=PLAINTEXT://0.0.0.0:9092,CONTROLLER://0.0.0.0:9093
advertised.listeners=PLAINTEXT://10.30.6.249:9092,CONTROLLER://10.30.6.249:9093

#配置数据存储目录和KRaft 元数据存储目录    
log.dirs=/usr/local/kafka_2.13-4.1.1/data/kafka-logs
metadata.log.dir=/usr/local/kafka_2.13-4.1.1/data/kafka-logs

#topic消息过期为6小时
log.retention.hours=6

4、创建数据目录并赋权

# 创建专用数据目录(和 log.dirs 对应)
mkdir -p /usr/local/kafka_2.13-4.1.1/data/kafka-logs

# 赋权(避免启动时权限不足)
chmod 755 -R /usr/local/kafka_2.13-4.1.1/data

5、初始化 KRaft 元数据(核心!生成 meta.properties)

cd /usr/local/kafka_2.13-4.1.1

# 1. 生成集群 ID(也可以手动指定,比如固定为 "kafka-cluster-123")
CLUSTER_ID=$(./bin/kafka-storage.sh random-uuid)

# 2. 初始化元数据(替换 CLUSTER_ID 为上面生成的值,或手动写)
./bin/kafka-storage.sh format -t $CLUSTER_ID -c config/server.properties

# 示例(手动指定集群 ID,更易维护):
# ./bin/kafka-storage.sh format -t kafka-cluster-123 -c config/server.properties

 

[root@clickhouse-middleware-production kafka_2.13-4.1.1]# cat data/kafka-logs/meta.properties 
#
#Tue Jan 27 16:52:30 CST 2026
node.id=1
directory.id=Mjn3jF8tRtOYfD9MA-uu1g
version=1
cluster.id=JVTMHHEvSKiaR17Se1-9pA

 

6、启动kafka

./bin/kafka-server-start.sh -daemon config/server.properties

 

posted @ 2024-07-04 18:35  苦逼yw  阅读(953)  评论(0)    收藏  举报