Kafka分布式集群部署实战:跨越理论,直击生产环境部署难题与解决方案,性能调优、监控与管理策略大揭秘,轻松上手分布式消息中间件

news/2024/9/18 14:49:01/ 标签: kafka, 大数据, linux

本文介绍kafka的集群如何部署和安装,1-4章理论知识,第5章详解集群的部署,部署Kafka之前需要先部署好分布式的Zookeeper,不喜欢理论的可以直接看第5章,欢迎大家一起探讨技术!

Zookeeper集群部署参考文章:精通Zookeeper:详解分布式集群部署全程,掌握数据一致性、选举机制与集群容错能力-CSDN博客

关于Kafka的资料:

大数据技术之Kafka(最新版)资料+jar包+安装包+笔记+视频+代码集合,看完学会使用Kafka

关于Kafka进阶高手资料:

Kafka集群调优实战+分布式集群搭建,分布式集群搭建与调优实战,Kafka专家之路!课程内容全程实战,没有拖泥带水

Apache Kafka是一个开源的分布式消息系统,也是一个分布式流式计算平台。尽管它在流式计算方面有着强大功能,但在实际应用中,Kafka更多地被用作分布式消息队列。以下是对Kafka的详细解析:

一、Kafka的主要特点

  1. 高吞吐量:Kafka能够处理非常高的消息吞吐量,适用于大规模数据处理和实时数据流。
  2. 低延迟:Kafka具有较低的消息传递延迟,能够提供快速的消息传递服务。
  3. 可伸缩性:Kafka支持水平扩展,通过增加更多的节点来扩展处理能力和存储容量,保证系统的可靠性和性能。
  4. 持久性:Kafka使用磁盘存储消息,确保消息的持久性和可靠性,并支持消息的批量处理。
  5. 高可靠性:通过副本机制保证消息的可靠性,即使某些节点发生故障,也不会丢失消息。
  6. 分区:Kafka的消息被分成多个分区,每个分区可以在不同的服务器上进行写入和读取,提高了并发性能。
  7. 支持流处理:Kafka提供了强大的流处理功能,可以进行实时数据处理、转换和分析。
  8. 社区活跃:Kafka拥有庞大的开源社区支持,持续更新和改进,解决了许多实际场景中的数据处理问题。

二、Kafka的关键概念

  1. Topic:Kafka把收到的消息按Topic进行分类,可以理解为Topic是一种类别。
  2. Producer:消息生产者,即向Kafka broker发送消息的客户端。
  3. Consumer:消息消费者,即向Kafka broker取消息的客户端。消费者通过订阅Topic来消费消息。
  4. Consumer Group:消费者组,由多个Consumer组成。消费者组内每个消费者负责消费不同分区的数据,一个分区只能由一个组内消费者消费;消费者组间互不影响。
  5. Partition:分区,是实现Kafka高吞吐量的关键。一个Topic可以分成多个Partition,每个Partition是一个有序的队列。
  6. Replica:副本,为保证集群中某个节点发生故障时,该节点上的Partition数据不丢失,且Kafka仍然可以继续工作,Kafka提供了副本机制。每个Partition都有若干个副本,其中一个作为Leader,其他作为Follower。Leader负责处理所有读写请求,Follower实时从Leader同步数据。

三、Kafka的应用场景

  1. 日志处理与分析:Kafka可以有效地从各个实例收集日志流,并与其他系统(如ElasticSearch、Kibana)结合,提供日志的索引、搜索和可视化。
  2. 实时点击流分析:收集系统指标进行监控和故障排除。与日志分析类似,但处理的是结构化数据。
  3. 更改数据捕获(CDC):将数据库更改流式传输到其他系统以进行复制或缓存/索引更新。
  4. 构建数据管道:使用Kafka从各种来源获取数据、应用处理规则,并将数据存储在仓库、数据湖或数据网格中。
  5. 微服务解耦通信:Kafka可以作为微服务之间的消息队列,实现服务的解耦和异步通信。
  6. 事件溯源:捕获一系列事件中状态的变化,并作为系统中的事实来源,用于重建状态或进行其他处理。

四、Kafka的优缺点

优点

  • 高吞吐量、低延迟。
  • 支持水平扩展和分区,提高并发性能。
  • 持久性高,数据不丢失。
  • 社区活跃,支持丰富。

缺点

  • 由于是批量发送,数据达不到真正的实时。
  • 不支持MQTT协议和物联网传感数据直接接入。
  • 只能保证一个分区内消息的有序性,无法实现全局消息有序。
  • 监控不完善,需要安装插件。
  • 可能会重复消费数据,需要额外的处理逻辑来确保数据的一致性。

五、集群部署

1、上传Kafka安装包

关于Kafka的资料和安装包+源码可以在这里下载

大数据技术之Kafka(2019新版)资料+jar包+安装包+笔记+视频+代码集合,看完学会使用Kafka

将Kafka的安装包上传到hadoop102机器下的/opt/software下

2、解压安装包

 tar -zxvf kafka_2.11-0.11.0.0.tgz -C /opt/module/

这个命令是用于在Linux或Unix-like系统中使用tar工具来解压一个名为kafka_2.11-0.11.0.0.tgz的tarball(tar归档文件,通常用于打包多个文件和目录)到指定的目录/opt/module/下。命令的各个部分意义如下:

  • tar:这是调用tar工具的命令。tar是一个在Unix和Unix-like系统中广泛使用的命令行程序,用于打包和解包文件。

  • -zxvf:这是传递给tar命令的选项,每个字母都代表一个不同的操作或行为。

    • z:表示通过gzip进行压缩或解压缩。这个选项告诉tar命令,它要处理的归档文件(在这个例子中是kafka_2.11-0.11.0.0.tgz)是用gzip压缩的。
    • x:表示解包或解压。这个选项告诉tar命令要执行的操作是解压归档文件。
    • v:表示在操作过程中显示详细信息。这个选项会让tar命令在执行时显示正在被解压的文件列表,便于用户了解解压进度。
    • f:表示后面跟随的是归档文件的名称。这个选项告诉tar命令,接下来的参数(即kafka_2.11-0.11.0.0.tgz)是要处理的归档文件的名称。
  • kafka_2.11-0.11.0.0.tgz:这是要解压的归档文件的名称。文件名中的kafka指的是Apache Kafka,一个分布式流处理平台;2.11指的是这个Kafka版本是编译来兼容Scala 2.11的;0.11.0.0是Kafka的版本号;.tgz.tar.gz的简写,表示这是一个通过gzip压缩的tar归档文件。

  • -C /opt/module/:这个选项指定了解压后的文件应该被放置的目录。-C选项后面跟着的/opt/module/是目标目录的路径。注意,-C选项在某些版本的tar中可能写作--directory=或者简写为-C,用于在解压之前改变当前工作目录到指定的目录。但是,在这个上下文中,-C实际上更准确地被理解为在解压时直接将内容解压到指定的目录,而不是先改变当前工作目录。不过,大多数用户(包括很多文档和教程)都使用-C来表示这个操作,尽管具体实现可能略有不同。

3、修改解压后的文件名称

mv kafka_2.11-0.11.0.0/ kafka

4、在/opt/module/kafka 目录下创建 logs 文件夹

mkdir logs

5、修改配置文件

进入到Kafka/config目录下

[atguigu@hadoop102 kafka]$ cd config/ 
[atguigu@hadoop102 config]$ vim server.properties

配置以下参数,这些参数原本配置文件中是存在是

#broker 的全局唯一编号,不能重复
broker.id=0
#删除 topic 功能
delete.topic.enable=true
#处理网络请求的线程数量 
num.network.threads=3
#用来处理磁盘 IO 的现成数量
num.io.threads=8
#发送套接字的缓冲区大小 
socket.send.buffer.bytes=102400
#接收套接字的缓冲区大小
socket.receive.buffer.bytes=102400
#请求套接字的缓冲区大小 
socket.request.max.bytes=104857600
#kafka 运行日志存放的路径 
log.dirs=/opt/module/kafka/logs
#topic 在当前 broker 上的分区个数 
num.partitions=1
#用来恢复和清理 data 下数据的线程数量 
num.recovery.threads.per.data.dir=1
#segment 文件保留的最长时间,超时将被删除 
log.retention.hours=168
#配置连接Zookeeper 集群地址
zookeeper.connect=hadoop102:2181,hadoop103:2181,hadoop104:2181

6、配置环境变量

sudo vim /etc/profile.d/my_env.sh

配置以下内容

#KAFKA_HOME
export KAFKA_HOME=/opt/module/kafka 
export PATH=$PATH:$KAFKA_HOME/bin

7、分发安装包

[atguigu@hadoop102 module]$ xsync kafka/
注意:分发之后记得配置其他机器的环境变量
分别在 hadoop103 hadoop104 上修改配置文件 /opt/module/kafka/config/server.properties
中的 broker.id=1 broker.id=2
注: broker.id 不得重复

8、启动集群

依次在 hadoop102 hadoop103 hadoop104 节点上启动 kafka
注意:启动前确保集群中的zookeeper已经启动
zookeeper集群部署可以看这篇文章: 精通Zookeeper:详解分布式集群部署全程,掌握数据一致性、选举机制与集群容错能力-CSDN博客
jps查看进程

 三台服务器都有 QuorumPeerMain表示zookeeper集群已经启动

[atguigu@hadoop102 kafka]$ bin/kafka-server-start.sh -daemon
config/server.properties
[atguigu@hadoop103 kafka]$ bin/kafka-server-start.sh -daemon
config/server.properties
[atguigu@hadoop104 kafka]$ bin/kafka-server-start.sh -daemon
config/server.properties

这里需要使用 -daemon 指定刚才设置的配置文件config/server.properties

9、关闭集群

[atguigu@hadoop102 kafka]$ bin/kafka-server-stop.sh stop
[atguigu@hadoop103 kafka]$ bin/kafka-server-stop.sh stop
[atguigu@hadoop104 kafka]$ bin/kafka-server-stop.sh stop

10、kafka 群起脚本

for i in hadoop102 hadoop103 hadoop104
do
echo "========== $i ==========" 
ssh $i '/opt/module/kafka/bin/kafka-server-start.sh -daemon 
/opt/module/kafka/config/server.properties'
done


http://www.ppmy.cn/news/1517189.html

相关文章

JavaScript 数据结构 ==== 二叉树

目录 二叉树 结构 二叉树和二叉搜索树介绍 1.创建树 2.插入一个键 3.树的遍历 中序排序 先序遍历 后序遍历 4.搜索树中的值 5.删除节点 二叉树 在计算机科学中,二叉树是每个结点最多有两个子树的树结构。通常子树被称作“左子树”(left subtre…

【数据结构】优先级队列 — 堆

文章目录 前言1. 优先级队列1.1 概念1.2 特性 2. 堆2.1 概念2.2 存储方式 3. 堆的模拟实现3.1 堆的创建3.2 堆的插入3.3 堆的删除 4. PriorityQueue4.1 注意事项4.2 构造器介绍4.3 常用方法介绍 5. 经典题型6. 结语 前言 我们之前学习过队列,它是遵循先进先出原则的…

全国教育大模型完成备案已达40个

全国教育大模型完成备案已达40个 近期,教育行业正迎来一场由人工智能引领的革新风暴,近日,职业培训机构粉笔上线了AI老师“粉笔头”,被称为首个职教行业的垂直大模型。据最新统计,截至今年6月,我国教育领域…

中资优配:国家推动大规模投资更新能源重点领域设备

8月21日,国家开展变革委、国家动力局联合印发《动力要点领域大规模设备更新施行方案》(以下简称《方案》),清晰将要点推进施行煤电机组节能改造、供热改造和灵活性改造“三改联动”,输配电、风电、光伏、水电等领域完成…

mac Let‘s Encrypt 免费SSL证书申请

1、安装certbot brew install certbot 2、执行命令 sudo certbot certonly -d "iot.xxx.cn" --manual --preferred-challenges dns --server https://acme-v02.api.letsencrypt.org/directory 3、域名解析配置 4、按Enter继续 5、生成证书 fullchain.pem 是证书文…

GPS北斗授时服务器(网络时钟系统)助力金融领域

GPS北斗授时服务器(网络时钟系统)助力金融领域 GPS北斗授时服务器(网络时钟系统)助力金融领域 摘 要:首先对计算机网络时间同步相关技术进行了介绍,然后阐述了时间同步技术在现代计算机网络中的应用与发展,最后指出时间同步网络在…

【奇某信-注册/登录安全分析报告】

前言 由于网站注册入口容易被黑客攻击,存在如下安全问题: 暴力破解密码,造成用户信息泄露短信盗刷的安全问题,影响业务及导致用户投诉带来经济损失,尤其是后付费客户,风险巨大,造成亏损无底洞…

嵌入式机器视觉的流水线分拣机器人:OpenCV、 FreeRTOS、 TensorFlow(代码详解)

一、项目概述 在现代自动化生产中,分拣机器人作为提高生产效率和准确度的重要工具,正逐渐成为工业流水线的核心组成部分。本项目旨在设计一款基于嵌入式机器视觉的流水线分拣机器人,通过高效的图像处理与实时控制技术,实现对物品…

【XR】SDK的接口规划与设计

【XR】SDK的接口规划与设计 1. **模块化与扩展性****设计思路****设计理由** 2. **状态管理的清晰性****设计思路****设计理由** 3. **用户体验与易用性****设计思路****设计理由** 4. **稳定性和容错性****设计思路****设计理由** 5. **性能优化与实时性****设计思路****设计理…

C++中 inline 的含义是什么?

在C中,inline是一个关键字,它向编译器发出一个请求(注意,这是一个请求而不是命令),请求编译器尝试将函数的调用替换为函数体本身的代码。这样做的目的是减少函数调用的开销,特别是对于那些体积小…

从小鹏看自动驾驶发展趋势

 小鹏:端到端大模型量产落地,体验升级成下阶段主线 算法端,小鹏已量产国内首个端到端大模型,其模型采用分段式结构,分为神经网络 XNet、规控大模型 XPlanner 以及大语言模型 XBrain 三部分。数据闭环方面&#xff0…

【linux】sar -d 磁盘性能

概述 sar -d 命令是 sysstat 包的一部分,用于收集、报告和保存系统活动信息。使用 -d 选项时,sar 会提供有关系统磁盘活动的详细报告。 以下是 sar -d 命令输出的主要字段及其含义: DEV: 报告的设备(例如 sda, sdb)…

009 批量删除

文章目录 前端后端 https://element.eleme.cn/#/zh-CN/component/button 前端 <el-button type"danger" click"batchDelete">批量删除</el-button><el-treeref"menuTree"batchDelete() {console.log("批量删除菜单..."…

在浏览器输入URL回车之后发生了什么?

首先浏览器解析URL 中的协议部分&#xff08;例如http://或https://&#xff09;来确定使用哪种通信方式。浏览器从 URL 中提取域名&#xff08;例如www.example.com&#xff09;和路径&#xff08;例如/page&#xff09;&#xff0c;路径部分指向网站的具体资源。输入的 URL 会…

自动驾驶中的模仿学习

自动驾驶中的模仿学习是一种关键技术&#xff0c;用于使自动驾驶系统能够学习和模仿人类驾驶行为。通过模仿驾驶员的操作&#xff0c;自动驾驶车辆可以在复杂的道路环境中实现类似人类的驾驶决策和操作&#xff0c;从而提升安全性、舒适性和可靠性。 1. 什么是模仿学习&#x…

Wails实现桌面番茄钟应用

0.项目背景 最近在优化自己的工作流&#xff0c;在工作方法上开始使用番茄钟来实现时间控制&#xff0c;一直觉得番茄钟的方式有点silly&#xff0c;直到自己用过之后才发现&#xff0c;番茄钟是真的好用&#xff0c;它不止是工作的方法&#xff0c;更是休息的艺术&#xff0c…

代码随想录算法训练营第62天|Floyd 算法精讲、A * 算法精讲 (A star算法)

打卡Day62 1.Floyd 算法精讲2.A * 算法精讲 &#xff08;A star算法&#xff09; 1.Floyd 算法精讲 题目链接&#xff1a;Floyd 算法精讲 文档讲解&#xff1a; 代码随想录 本题是多源最短路&#xff0c;即求多个起点到多个终点的多条最短路径。Floyd算法对边的权值正负没有要…

sophon bm1684x 运行qwen2

1、用户名/密码 登录 linaro linaro2、删除安装文件 sudo mv /var/lib/dpkg/info/wps-office.* /tmp3、更新 sudo apt-get update sudo apt-get upgrade4、Qwen2实例 LLM-TPU-main.zip /data/LLM-TPU-main/models/Qwen2/python_demo5、安装依赖 pip3 install transformers…

Nginx: 代理场景下Nginx接收用户请求包体的处理

Nginx 反向代理图 当用户发过来一个request body的时候&#xff0c;Nginx 是如何处理这样一个body这个body 它对应的就是我们客户请求的一些具体内容 1 &#xff09;proxy_request_bufering 指令 接收包体的两种方式 接收完全部包体再发送一边接收包体一边发送 接收包体的两种…

Android 息屏录音

问题 解决Android录音的息屏之后无法录制声音的问题&#xff0c;看日志发现&#xff0c;录音程序并没有中断&#xff0c;但是录制到的数据均是byte为0的数据&#xff0c;即空数据。 测试机为Android 13系统 废话 网上一搜一大堆&#xff0c;ai也是一问也回答得头头是道&…