docker安装kafka、zookeeper详细步骤

发布于:2025-08-31 ⋅ 阅读:(27) ⋅ 点赞:(0)

Kafka 简介

Kafka 是一个分布式流处理平台,由 LinkedIn 开发并开源,主要用于高吞吐量的实时数据管道和流处理。

核心特性

  • 高吞吐量:支持每秒百万级消息处理,适合大数据场景。
  • 持久化存储:消息可持久化到磁盘,并支持多副本备份。
  • 分布式架构:支持水平扩展,通过分区(Partition)实现并行处理。
  • 多客户端支持:提供 Producer、Consumer 和 Stream API,支持多种语言。

核心概念

  • Topic:消息的分类单位,逻辑上的数据流。
  • Partition:Topic 的物理分片,每个 Partition 是有序的消息队列。
  • Broker:Kafka 集群中的单个节点,负责存储和转发消息。
  • Producer:向 Topic 发布消息的客户端。
  • Consumer:从 Topic 订阅消息的客户端,支持消费者组(Consumer Group)实现负载均衡。

典型应用场景

  • 实时日志收集与分析(如 ELK 栈)。
  • 事件溯源(Event Sourcing)和消息队列。
  • 流处理(如与 Flink、Spark Streaming 集成)。

ZooKeeper 简介

ZooKeeper 是一个分布式协调服务,由 Apache 开发,用于解决分布式系统中的一致性和管理问题。

核心特性

  • 高可用性:基于多节点集群,避免单点故障。
  • 强一致性:通过 ZAB 协议(ZooKeeper Atomic Broadcast)保证数据一致性。
  • 轻量级:提供简单的 API 和基于内存的数据模型。
  • 观察机制:支持 Watcher 机制,实时监听节点变化。

核心概念

  • ZNode:ZooKeeper 中的数据单元,类似文件系统的节点,可存储少量数据。
  • Session:客户端与 ZooKeeper 服务器的连接会话,通过心跳保持活性。
  • Watcher:监听 ZNode 的变化(如创建、删除、数据更新)。

典型应用场景

  • 分布式锁(如实现互斥访问)。
  • 配置管理(集中式存储配置信息)。
  • 服务注册与发现(如 Dubbo、Kafka 依赖 ZooKeeper)。

Kafka 与 ZooKeeper 的关系

  • 早期版本:Kafka 依赖 ZooKeeper 存储元数据(如 Topic 配置、Broker 列表、消费者偏移量)。
  • Kafka 2.8+:逐步引入 KRaft 模式(基于 Raft 协议),替代 ZooKeeper 实现自管理元数据。
  • 关键作用:ZooKeeper 帮助 Kafka 实现 Broker 选举、分区 Leader 选举和集群状态同步。

区别对比

维度 Kafka ZooKeeper
核心功能 高吞吐量消息队列和流处理 分布式协调与一致性服务
数据模型 基于 Topic 和 Partition 的消息流 基于 ZNode 的树形结构
一致性协议 依赖 ZooKeeper 或 KRaft 协议 基于 ZAB 协议
典型依赖 早期依赖 ZooKeeper 独立运行,被其他系统依赖

安装 ZooKeeper 和 kafka

// ZooKeeper 
docker pull bitnami/zookeeper:latest

// kafka
docker pull bitnami/kafka:latest

创建目录结构

// 创建目录
sudo mkdir -p /root/kafka-zookeeper-cluster/{
   
   zookeeper1,zookeeper2,zookeeper3}/{
   
   data,datalog,conf} /root/kafka-zookeeper-cluster/{
   
   kafka1,kafka2,kafka3}


// 修改目录所有权为 UID 1001(Bitnami 默认用户)
sudo chown -R 1001:1001 /root/kafka-zookeeper-cluster
 
// 确保目录可读写
sudo chmod -R 755 /root/kafka-zookeeper-cluster

为每个 ZooKeeper 节点生成 JAAS 文件

// 创建 ZooKeeper JAAS 配置文件
cat <<EOF > /root/kafka-zookeeper-cluster/zookeeper1/conf/jaas.conf
Server {
   
   
  org.apache.zookeeper.server.auth.DigestLoginModule required
  user_root="123456";
};
Client {
   
   
  org.apache.zookeeper.server.auth.DigestLoginModule required
  username="root"
  password="123456";
};
EOF

// 复制到其他 ZooKeeper 节点
cp -r /ro

网站公告

今日签到

点亮在社区的每一天
去签到