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

news2024/11/26 9:51:36

本文介绍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.coloradmin.cn/o/2092570.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

VUE-组件间通信(三)全局事件总线

一、作用&#xff1a;任意组件间通信 二、实现 1、创建全局事件总线 new Vue({render: h > h(App),beforeCreate(){//创建全局事件总线Vue.prototype.$busthis} }).$mount(#app) 2、学生组件 触发事件 <template><div class"studentInfo"><h…

(备份)常用ASCII 8*8 点阵 以及查询显示字符的点阵

图片 #include "driver/spi_master.h" #include "driver/gpio.h" #include "freertos/FreeRTOS.h" #include "freertos/task.h" #include "string.h" #include "driver/i2c.h" #include "esp_rom_sys.h"…

【postman如何生成python代码】

postman如何生成python代码 https://jingyan.baidu.com/article/86fae3461577c27d48121ad1.html

【大模型系列篇】词向量 - 从Word2Vec到ELMo

&#x1f525;&#x1f525;&#x1f525;首先安利一个比较不错的忍不住就想一键三连的大模型科普: 大模型科普专栏 - AI老兵文哲&#xff08;哔哩哔哩&#xff09; 词向量&#xff08;又叫词嵌入&#xff09;已经成为NLP领域各种任务的必备一步&#xff0c;而且随着BERT、GPT等…

JS打造一款你自己的专用字体:使用p5.js与JavaScript实现

前言 在最近的生成艺术项目中遇到一个小问题&#xff1a;如何在作品中优雅地添加文本元素&#xff0c;同时避免使用网络字体&#xff0c;要么侵权要么花钱~~给项目增加不必要的负担&#xff0c;我决定不走寻常路&#xff0c;自己动手&#xff0c;丰衣足食&#xff0c;用JS打造…

C++11 新特性基础

前言 C11是继&#xff0c;C98/03之后的最大的一次更新&#xff0c;这次更新虽然花了很长的时间&#xff0c;但是真的推出了很多的干货&#xff01;本期内容开始我们将介绍C11常用的操作&#xff01; 目录 前言 一、C11介绍 二、统一的列表初始化 1、{}初始化 2、std::in…

【机器学习】循环神经网络(RNN)介绍

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 循环神经网络(RNN)介绍什么是RNN?RNN的基本原理递归神经网络单元前向传播反向传…

Ubuntu下安装和配置MQTT服务器Mosquitto

MQTT&#xff08;Message Queuing Telemetry Transport&#xff09;是一种轻量级的通信协议&#xff0c;设计用于物联网设备之间的低带宽、不稳定网络环境下的高效通信。MQTT允许设备通过发布&#xff08;publish&#xff09;和订阅&#xff08;subscribe&#xff09;模式进行消…

清华2024内地录取3500人,其中900多人是走这个政策进来的... ...

2024年&#xff0c; 清华大学共录取本科新生3800余人&#xff0c;其中内地学生3500余人&#xff0c;覆盖全国31个省份1000 多所生源中学;港澳台学生60余人&#xff0c;国际学生约230人。 大李露个脸 清华大学2024年新生数据 普通批提前批共录取1549人&#xff0c;占比44% 强基计…

火龙果检测-目标检测数据集(包括VOC格式、YOLO格式)

火龙果检测-目标检测数据集&#xff08;包括VOC格式、YOLO格式&#xff09; 数据集&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1NdRBsHnYCK9xZd7bzQoN5w?pwd779l 提取码&#xff1a;779l 数据集信息介绍&#xff1a; 共有 1106 张图像和一一对应的标注文件 标注…

macos OneNote 2016 for Mac 官方pkg下载地址 - macos 10.15 Catalion 可用Onenote版本官方下载地址

macos 10.15 Catalion 版本的系统已经无法正常从应用商店下载到可用的Onenote 应用,原因是版本不受支持, 而且onenote官方链接的应用商店地址https://apps.apple.com/us/app/microsoft-onenote/id784801555?mt12在中国地区也无法访问, 所以中国地区用户如果想使用onenote应用…

【云原生系列之SkyWalking的部署】

1、分布式链路追踪 1.1概念 在较大的web集群和微服务环境中&#xff0c;客户端的一次请求需要经过不同的模块&#xff0c;多个不同中间件&#xff0c;多个不同机器一起相互协作才能处理完成客户端的请求&#xff0c;而在这一系列的请求过程之中,处理流程可能是串行执行,也可能…

华为云征文|基于Flexus云服务器X实例之安装长亭雷池waf教程

&#x1f534;大家好&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号&#xff1a;雄雄的小课堂 先看这里 写在前面何为长亭雷池waf安装社区版雷池雷池环境要求查看华为云Flexus云服务器X实例的配置一条命令安装雷池waf检查查看是否安装成功 雷池使用登录雷池配置站点 写在…

51单片机.之ADC数字模拟转换

1、数字转模拟电路&#xff0c;输出波形&#xff0c;示波器采集来显示波形 单片机通过i2c给&#xff0c;模数转换器&#xff0c;写入数字信号&#xff0c;定时器1s扫描按键的切换 1、key.c 切换波形 #include <reg52.h>sbit KEY_IN_1 P2^4; sbit KEY_IN_2 P2^5; …

五、Selenium操作指南(一)

文章目录 一、基本用法&#xff08;一&#xff09;初始化浏览器对象&#xff08;二&#xff09;访问页面&#xff08;三&#xff09;设置浏览器大小&#xff08;四&#xff09;刷新页面&#xff08;五&#xff09;前进后退 二、获取页面基础属性三、定位页面元素&#xff08;一…

【QNX+Android虚拟化方案】112 - 获取 88Q5152 Switch Port1、Port2 端口的主从模式 / 传输速率 / 链路状态

【QNX+Android虚拟化方案】112 - 获取 88Q5152 Switch Port1、Port2 端口的主从模式 / 传输速率 / 链路状态 1. 读取 P1、P2 端口 主从模式 / 传输速率2. 读取 P1、P2 端口 Link Status3. 读取 P1、P2 端口 Duplex 全双工/半双工模式4. 读取 P1、P2 链路信号SQI质量5. 完整代码…

基于单片机的肺活量检测仪设计

本设计主要对其中的一种测量方法和原理进行介绍与运用&#xff0c;设计了一款基于STC12C5A60S2单片机的肺活量检测仪&#xff0c;包括供电模块、气流检测模块、按键模块、显示模块、语音输出模块和蓝牙模块&#xff0c;实现对肺活量的数值检测&#xff0c;并对数据进行语音播报…

linux固定ip

背景 VMware&#xff0c;centos7 查询 网关 linux指执行 ip addr 命令 拿到自动分配的ip : 192.168.150.102 [rootlocalhost ~]# cd /etc/sysconfig/network-scripts/ 执行: cd /etc/sysconfig/network-scripts/ 进入到network-scripts文件中 执行: vi ifcfg-ens33 编辑ifc…

PPT到PDF转换器:一个功能强大的Python GUI应用(unzip,convert,replace,merge)

在当今的数字时代,文档格式转换已成为一项常见需求。特别是将PowerPoint演示文稿转换为PDF格式,这不仅可以确保文档的一致性,还能方便分享和打印。今天,我们将深入探讨一个使用Python开发的强大GUI应用程序,它不仅可以将PPT转换为PDF,还具备文本替换、PDF处理和文件合并等多项功…

TDesign 微信小程序组件库配置

文章目录 1.安装 npm 包2. 构建 npm3. 构建完成后即可使用 npm 包。4.修改 app.json5.修改 tsconfig.json6.使用组件 1.安装 npm 包 在小程序 package.json 所在的目录中执行命令安装 npm 包&#xff1a; npm install结果报错 PS C:\WeChatProjects\miniprogram-1> npm i…