当前位置: 首页 > news >正文

Kafka 概述与安装部署整理

Kafka 概述与安装部署整理

一、Kafka 概述

Kafka 最初由 LinkedIn 公司开发,是一个分布式、支持分区、多副本、基于 ZooKeeper 协调的分布式消息系统。它使用 Scala 语言编写,于 2010 年贡献给 Apache 基金会并成为顶级开源项目。

核心特性:
  • 高吞吐量、低延迟
  • 持久化消息存储
  • 可扩展性强
  • 支持多副本冗余
  • 支持流式处理
适用场景:
  • 实时数据处理
  • 日志聚合与分析
  • 流处理(如 Storm、Spark Streaming)
  • 消息中间件
  • 行为追踪

二、消息队列通信模式

1. 点对点模式(Point-to-Point)
  • 基于拉取或轮询模型
  • 每条消息仅被一个消费者处理
  • 消费者主动拉取消息,可控制频率
  • 缺点:消费者需轮询检查新消息
2. 发布订阅模式(Pub-Sub)
  • 基于推送模型
  • 一条消息可被多个订阅者消费
  • 消费者被动接收消息
  • 问题:推送速率难以匹配不同消费者的处理能力

三、Kafka 架构原理

Kafka 是一个高吞吐的分布式发布订阅消息系统,具备高性能、持久化、多副本备份和横向扩展能力。

核心组件:
组件说明
Producer消息生产者,向 Kafka 写入消息
BrokerKafka 服务实例,每个服务器可运行多个 Broker
Topic消息主题,用于分类存储消息
PartitionTopic 的分区,提升并发和吞吐量
Replication分区的副本,提高可用性
Consumer消息消费者,从 Kafka 读取消息
Consumer Group多个消费者组成一个组,共同消费一个 Topic
ZooKeeper存储 Kafka 集群元数据,管理 Broker 和消费者状态
数据流特点:
  • 消息顺序写入分区,保证分区内有序
  • Producer 推送到 Broker,Consumer 从 Broker 拉取
  • Follower 主动从 Leader 同步数据

四、Kafka 集群安装部署(基于 ZooKeeper)

环境准备
  • 三台服务器:192.168.100.10/20/30

  • 关闭防火墙和selinux

  • 配置时间同步

  • 配置 /etc/hosts

  • 配置免密钥

安装 Java
[root@node1 ~]# mkdir /opt/software
[root@node1 ~]# cd /opt/software/
[root@node1 software]# tar -zxvf jdk-8u181-linux-x64.tar.gz
[root@node1 software]# vim /etc/profile
[root@node1 software]# source /etc/profile
export JAVA_HOME=/opt/software/jdk1.8.0_181
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
[root@node1 software]# scp -r jdk1.8.0_181/ root@node2:/opt/software/
[root@node1 software]# scp -r jdk1.8.0_181/ root@node3:/opt/software/
[root@node1 software]# scp /etc/profile root@node2:/etc/profile
[root@node1 software]# scp /etc/profile root@node3:/etc/profile

三台主机全部都source一下/etc/profile

[root@node2 ~]# source /etc/profile
[root@node3 ~]# source /etc/profile
安装 ZooKeeper 集群
[root@node1 software]# tar -zxvf zookeeper-3.4.8.tar.gz ^C
[root@node1 software]# mv zookeeper-3.4.8 zookeeper
[root@node1 software]# chown -R root.root zookeeper
[root@node1 software]# cd zookeeper/
[root@node1 zookeeper]# mkdir data logs
[root@node1 zookeeper]# cd conf/
[root@node1 conf]# cp zoo_sample.cfg zoo.cfg
[root@node1 conf]# vim zoo.cfg 
[root@node1 conf]# echo 1 > /opt/software/zookeeper/data/myid
# 修改 dataDir 参数内容如下: 
dataDir=/opt/software/zookeeper/data# 在文档最末尾填写如下几行
server.1=192.168.100.10:2888:3888
server.2=192.168.100.20:2888:3888
server.3=192.168.100.30:2888:3888
[root@node1 conf]# cd /opt/software/
[root@node1 software]# scp -r zookeeper/ root@node2:/opt/software/
[root@node1 software]# scp -r zookeeper/ root@node3:/opt/software/

在每个节点的 data 目录下创建 myid 文件,分别写入 1、2、3

[root@node2 ~]# echo 2 > /opt/software//zookeeper/data/myid
[root@node3 ~]# echo 3 > /opt/software/zookeeper/data/myid
启动 ZooKeeper

配置 zookeeper 的环境变量

[root@node1 ~]# vim /etc/profile
[root@node1 ~]# source /etc/profile
export ZOOKEEPER_HOME=/opt/software/zookeeper
export PATH=$PATH:$ZOOKEEPER_HOME/bin
[root@node1 ~]# scp /etc/profile root@node2:/etc/profile 
[root@node1 ~]# scp /etc/profile root@node3:/etc/profile

三台主机全部都source一下/etc/profile

[root@node2 ~]# source /etc/profile
[root@node3 ~]# source /etc/profile

三台主机都启动 zookeeper 并查询一下 zookeeper 状态

发现有两个 follower ,一个 leader

[root@node1 ~]# zkServer.sh start
[root@node1 ~]# zkServer.sh status
[root@node2 ~]# zkServer.sh start
[root@node2 ~]# zkServer.sh status
[root@node3 ~]# zkServer.sh start
[root@node3 ~]# zkServer.sh status
安装 Kafka
[root@node1 ~]# tar -zxvf kafka_2.11-2.4.0.tgz
# 在配置文件中找到以下两行并注释掉(在文本前加#)如下所示:
#broker.id=0
#zookeeper.connect=localhost:2181# 在末尾添加
broker.id=1
zookeeper.connect=192.168.100.10:2181,192.168.100.20:2181,192.168.100.30:2181
listeners = PLAINTEXT://192.168.100.10:9092
[root@node1 ~]# scp -r kafka_2.11-2.4.0/ root@node2:/root/
[root@node1 ~]# scp -r kafka_2.11-2.4.0/ root@node3:/root/

修改zookeeper2主机的kafka配置文件

[root@node2 ~]# vim kafka_2.11-2.4.0/config/server.properties
broker.id=2
zookeeper.connect=192.168.100.10:2181,192.168.100.20:2181,192.168.100.30:2181
listeners = PLAINTEXT://192.168.200.20:9092

修改zookeeper3主机的kafka配置文件

[root@node3 ~]# vim kafka_2.11-2.4.0/config/server.properties
broker.id=3
zookeeper.connect=192.168.100.10:2181,192.168.100.20:2181,192.168.100.30:2181
listeners = PLAINTEXT://192.168.200.30:9092

三台主机全部启动 kafka

[root@node1 ~]# ./kafka_2.11-2.4.0/bin/kafka-server-start.sh -daemon ./kafka_2.11-2.4.0/config/server.properties
[root@node2 ~]# ./kafka_2.11-2.4.0/bin/kafka-server-start.sh -daemon ./kafka_2.11-2.4.0/config/server.properties
[root@node3 ~]# ./kafka_2.11-2.4.0/bin/kafka-server-start.sh -daemon ./kafka_2.11-2.4.0/config/server.properties

查看

[root@node1 ~]# jps
8147 Kafka
8739 Jps
7624 QuorumPeerMain
[root@node2 ~]# jps
7587 QuorumPeerMain
8099 Kafka
8200 Jps
[root@node3 ~]# jps
8209 Jps
7586 QuorumPeerMain
8094 Kafka
http://www.dtcms.com/a/549283.html

相关文章:

  • 做ic芯片的要去哪个网站网站制作成app
  • 迭代器适配器全景透视:从 `map`/`filter` 到 `fold` 的零成本魔法
  • Drop Trait与资源清理机制:Rust内存安全的最后一道防线
  • 黑马JAVA+AI 加强07 Stream流-可变参数
  • Qt中的常用组件:QWidget篇
  • 天津做网站选津坤科技wordpress qqworld
  • 351-Spring AI Alibaba Dashscope 多模型示例
  • 东莞专业做网站的公司域名注册在那个网站好
  • 金仓数据库平替MongoDB:医共体数据互通的高效安全之道
  • 基于比特位图映射对List<Object>多维度排序
  • ArrayList和LinkedList
  • 中南建设集团招标网站三点水网站建设合同
  • 网站结构分析具体分析内容企业建网站好
  • 深入探讨JavaScript性能瓶颈,分享优化技巧与最佳实践
  • Mac与Kali主机间SSH连接故障排除:主机密钥变更的解决方案
  • 跨平台C++开发:Ubuntu 24.04下CLion安装与配置
  • 网站不想被百度抓取涉及部署未备案网站
  • 国产数据库替换MongoDB实战:浙江人民医院电子病历系统国产化升级案例
  • 测量连接距离方法
  • 从文件结构、索引、数据更新、版本控制等全面对比Apache hudi和Apache paimon
  • 怎样看网站的浏览量自助建站免费建站平台
  • 怎么用AI进行视觉设计?AI设计全流程技术解析与实战指南
  • Flink 优化-资源配置优化
  • c# 收件单通知单生成程序
  • 类似淘宝的购物网站 建设定制开发网站
  • 【Rust 编程】工作窃取(Work-Stealing)调度算法
  • 做网站与运营一般多少钱企业seo指的是
  • 东莞网站建设设计价格提供手机网站制作哪家好
  • 百度ocr识别解决图形验证码登录问题
  • MySQL配置环境变量