最新Kafka单机安装无需zookeeper

在 Kafka 2.8 及以前的版本,ZooKeeper 是 Kafka 运行必不可少的组件,它主要负责管理和协调 Kafka 集群中的各种元数据,比如主题、分区、副本的状态信息等。不过从 Kafka 3.0 版本开始,Kafka 引入了 KRaft 模式,此模式可以让 Kafka 摆脱对 ZooKeeper 的依赖,独立运行。

一、安装

下载 Kafka:从 Apache Kafka 官网 下载最新版本的 Kafka安装包:

最新Kafka单机安装无需zookeeper_第1张图片

解压文件

tar -xzf kafka_2.13-4.0.0.tgz
cd kafka_2.13-4.0.0

生成集群 ID

bin/kafka-storage.sh random-uuid

将输出的 UUID 记录下来,后续会用到。
格式化存储目录:用上面生成的 UUID 格式化 Kafka 的日志存储目录。

sh ./bin/kafka-storage.sh format -t  -c ./config/server.properties --standalone

把  替换成你实际生成的 UUID。
启动 Kafka 服务

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

windows 安装和Linux类似,启动脚本在 bin/windows下,依次执行以下命令:
 

bin\windows\kafka-storage.bat random-uuid

bin\windows\kafka-storage.bat format -t  -c ./config/server.properties --standalone

bin\windows\kafka-server-start.bat .\config\server.properties

二、验证

通过下面的python脚本进行验证:

安装kafka包:

pip install kafka-python

from kafka import KafkaProducer, KafkaConsumer
import json
import time

# 生产消息
def produce_message():
    producer = KafkaProducer(
        bootstrap_servers='127.0.0.1:9092',
        value_serializer=lambda v: json.dumps(v).encode('utf-8')
    )

    message = {'key': 'value'}
    future = producer.send('test_topic', message)
    try:
        record_metadata = future.get(timeout=10)
        print(f"消息发送成功,主题: {record_metadata.topic}, 分区: {record_metadata.partition}, 偏移量: {record_metadata.offset}")
    except Exception as e:
        print(f"消息发送失败: {e}")
    producer.flush()

# 消费消息
def consume_message():
    consumer = KafkaConsumer(
        'test_topic',
        bootstrap_servers='127.0.0.1:9092',
        auto_offset_reset='earliest',  # 从最早的消息开始消费
        enable_auto_commit=True,       # 自动提交偏移量
        group_id='test_group',         # 消费者组ID
        value_deserializer=lambda m: json.loads(m.decode('utf-8'))
    )

    print("开始监听消息...")
    for msg in consumer:
        print(f"收到消息: {msg.value}")

if __name__ == '__main__':
    produce_message()
    time.sleep(2)  # 等待消息被生产
    consume_message()

打印结果:

你可能感兴趣的:(kafka)