Kafka学习---1、Kafka 概述、Kafka快速入门

news2024/11/14 13:54:33

1、Kafka概述

1.1 定义

1、Kafka传统定义:Kafka是一个分布式的基于发布/订阅模式的消息队列(Message Queue),主要是应用于大数据实时处理领域。
2、发布/订阅:消息的发布者不会将信息直接发送给特定的订阅者,而是将发布的信息分为不同的类别,订阅者只接受感兴趣的消息。
3、Kafka最新定义:Kafka是一个开源的分布式事件流平台(Event Streaming Platform),被数千家公司用于高性能数据管道、流分析、数据集成和关键任务应用。

1.2 消息队列

目 前企 业中比 较常 见的 消息 队列产 品主 要有 Kafka、ActiveMQ 、RabbitMQ 、RocketMQ 等。
在大数据场景主要采用 Kafka 作为消息队列。在 JavaEE 开发中主要采用 ActiveMQ、RabbitMQ、RocketMQ。

1.2.1 传统消息队列的应用场景

传统的消息队列的主要应用场景包括:缓存/消峰、解耦和异步通信。
1、消息队列的应用场景——缓冲/消峰
有助于控制和优化数据流经过系统的速度,解决生产消息和消费信息的处理速度不一致的情况。
在这里插入图片描述

2、消息队列的应用场景——解耦
运行你独立的扩展或修改两边的处理流程,只有确保它们遵守同样的接口约束
在这里插入图片描述
3、消息队列的应用场景——异步通信
允许用户把一个信息放入队列,但并不立即处理它,然后在需要的时候再去处理它们
在这里插入图片描述

1.2.2 消息队列的两种模式

1、点对点模式
消费者主动拉取数据,消息收到后清除消息
在这里插入图片描述
2、发布/订阅模式
可以有多个topic主题(浏览、点赞、收藏、评论等)
消费者消费数据之后,不删除数据
每个消费者互相独立,都可以消费到数据
在这里插入图片描述

1.3 Kafka基础架构

在这里插入图片描述
1、producer:消息生产者,就是向Kafka broker发消息的客户端
2、Consumer:消息消费者,向Kafka broker取消息的客户端
3、Consumer Group(CG):消费组,由多个Consumer组成。消费者组内每个消费者负责消费不同分区的数据,一个分区只能由一个组内消费者消费;消费者组之间互不影响。所有的消费者都属于某个消费者组,即消费者组是逻辑上的一个订阅者。
4、Broker:一台Kafka服务器就是一个broker。一个集群由多个broker组成。一个broker可以容纳多个topic。
5、Topic:可以理解为一个队列,生产者和消费者面向的都是一个Topic。
6、Partition:为了实现扩展性,一个非常大的topic可以分布到多个broker(即服务器)上,一个topic可以分为多个partition,每个partition是一个有序的队列。
7、Reolica:副本。一个topic的每个分区都有若干个副本,一个Leader和若干个Follower。
8、Leader:每个分区多个副本的“主”,生产者发生数据的对象,以及消费者消费数据的对象都是Leader。
9、Follower:每个分区多个副本中的“从”,实时从Leader中同步数据,保持和Leader数据的同步。Leader发生故障时,某个Follower会成为新的Leader。

2、Kafka快速入门

2.1 安装部署

2.1.1 集群规划
hadoop102hadoop103hadoop104
zkzkzk
kafkakafkakafka
2.1.2 集群部署

0、获取安装包
链接:https://pan.baidu.com/s/1zzgLmW6kz65C5V3E2ENxSg
提取码:zhm6
1、解压安装包(记得到上传的目录下将文件解压)

tar -zxvf kafka_2.12-3.0.0.tgz -C /opt/module/

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

 mv kafka_2.12-3.0.0/ kafka

3、进入到/opt/module/kafka 目录,修改配置文件

#broker 的全局唯一编号,不能重复,只能是数字。
***broker.id=0***
#处理网络请求的线程数量
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 运行日志(数据)存放的路径,路径不需要提前创建,kafka 自动帮你创建,可以配置多个磁盘路径,路径与路径之间可以用","分隔
***log.dirs=/opt/module/kafka/datas***
#topic 在当前 broker 上的分区个数
num.partitions=1
#用来恢复和清理 data 下数据的线程数量
num.recovery.threads.per.data.dir=1
# 每个 topic 创建时的副本数,默认时 1 个副本
offsets.topic.replication.factor=1
#segment 文件保留的最长时间,超时将被删除
log.retention.hours=168
#每个 segment 文件的大小,默认最大 1G
log.segment.bytes=1073741824
# 检查过期数据的时间,默认 5 分钟检查一次是否数据过期
log.retention.check.interval.ms=300000
#配置连接 Zookeeper 集群地址(在 zk 根目录下创建/kafka,方便管理)
***zookeeper.connect=hadoop102:2181,hadoop103:2181,hadoop104:2181/kafka***

4、分发安装包(将安装包发送到其他两个节点)

xsync kafka/

5、分别在 hadoop103 和 hadoop104 上修改配置文件/opt/module/kafka/config/server.properties中的 broker.id=1、broker.id=2
注:broker.id 不得重复,整个集群中唯一
6、配置环境变量
(1)在/etc/profile.d/my_env.sh 文件中增加 kafka 环境变量配置

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

(2)刷新一下环境

 source /etc/profile

(3)分发环境变量文件到其他节点,并source。
7、启动集群
(1)先启动Zookeeper集群,然后启动Kafka集群。

 zk.sh start

(2)依次在 hadoop102、hadoop103、hadoop104 节点上启动 Kafka。

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

(8)关闭集群(每个节点都要)

 bin/kafka-server-stop.sh
2.1.3 集群一键启动和停止脚本

1、在/home/atguigu/bin 目录下创建文件 kf.sh 脚本文件

#! /bin/bash
case $1 in
"start"){
 for i in hadoop102 hadoop103 hadoop104
 do
 echo " --------启动 $i Kafka-------"
 ssh $i "/opt/module/kafka/bin/kafka-server-start.sh -
daemon /opt/module/kafka/config/server.properties"
 done
};;
"stop"){
 for i in hadoop102 hadoop103 hadoop104
 do
 echo " --------停止 $i Kafka-------"
 ssh $i "/opt/module/kafka/bin/kafka-server-stop.sh "
 done
};;
esac

2、添加执行权限

 chmod +x kf.sh

3、启动集群命令

 kf.sh start

4、停止集群命令

kf.sh stop

注意:停止Kafa集群的时候,一定要等kafka所以节点进程全部停止后再停止Zookeeper集群。因为Zookeeper集群当中记录着Kafka集群相关的信息,Zookeeper集群一旦先停止,Kafka集群就没办法再获取停止进行的信息,只能手动杀死Kafka进程了。

2.2 命令行操作

2.2.1 主题命令行操作

1、查看操作主题命令参数

bin/kafka-topics.sh
参数描述
–bootstrap-server<String: server toconnect to>连接的kafka Broker主机名称和端口号
–topic<String: topic>操作的topic名称
–create创建主题
–delete删除主题
–alter修改主题
–list查看所有主题
–describe查看主题详细描述
–partitions<Integer:# of partitions>设置分区数
–replication-factor<Integer:replication factor>设置分区数
–config<String: name=value>更新系统默认的配置
2、查看当前服务器中的所有topic
bin/kafka-topics.sh --bootstrap-server hadoop102:9092 --list

在这里插入图片描述

3、创建first topic

bin/kafka-topics.sh --bootstrap-server hadoop102:9092 --create --partitions 1 --replication-factor 3 --topic first

在这里插入图片描述

选项说明:
(1)topic:定义topic名
(2)replication-factor:定义副本数
(3)partitions 定义分区数
4、查看first 主题的详情

bin/kafka-topics.sh --bootstrap-server hadoop102:9092 --describe --topic first

在这里插入图片描述

5、修改分区数(分区数只能增加,不能减少)

 bin/kafka-topics.sh --bootstrap-server hadoop102:9092 --alter --topic first --partitions 3

在这里插入图片描述

6、再次查看 first 主题的详情

 bin/kafka-topics.sh --bootstrap-server hadoop102:9092 --describe --topic first

在这里插入图片描述

7、删除topic

 bin/kafka-topics.sh --bootstrap-server hadoop102:9092 --delete --topic first

在这里插入图片描述

2.2.2 生产者命令行操作

1、查看操作生产者命令参数

 bin/kafka-console-producer.sh
参数描述
–bootstrap-server <String: server toconnect to>连接的 Kafka Broker 主机名称和端口号。
–topic <String: topic>操作的 topic 名称。
2、发送消息
bin/kafka-console-producer.sh --bootstrap-server hadoop102:9092 --topic first
2.2.2 消费者命令行操作

1、查看操作消费者命令参数

  bin/kafka-console-consumer.sh
参数描述
–bootstrap-server <String: server toconnect to>连接的 Kafka Broker 主机名称和端口号。
–topic <String: topic>操作的 topic 名称。
–from-beginning从头开始消费
–group <String: consumer group id>指定消费者组名称。。
2、消费消息
(1)消费first主题中的数据
bin/kafka-console-consumer.sh --bootstrap-server hadoop102:9092 --topic first

在这里插入图片描述

(2)把主题中所有的数据都读取出来(包括历史数据)。

bin/kafka-console-consumer.sh --bootstrap-server hadoop102:9092 --from-beginning --topic first

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/638814.html

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

相关文章

【Linux 学习 ①】- Linux 环境搭建

目录 一、GouMai 云服务器 二、使用 Xshell 远程登录服务器 三、编写一个 C 程序 四、多用户共享同一个服务器 一、GouMai 云服务器 我们以腾讯云为例&#xff08;购买其他厂商的云服务器&#xff0c;例如&#xff1a;华为云、阿里云&#xff0c;其操作也是类似的&#…

Java集成开发环选择与Eclipse初始常用配置

开发工具的选择 Eclipse 、Idea是最常用的两个Java开发工具&#xff0c;虽然Idea相比前者更易用&#xff0c;但由于其价格昂贵&#xff0c;且由于整体市场经济环境的猥琐&#xff0c;导致各公司开始打击盗版软件&#xff0c;以此来增加收入。 基于以上背景&#xff0c;还是建议…

Kamrada operator:新一代的 Karmada 管理方式

Karmada operator 是 Karmada 社区推出的新组件&#xff0c;它为用户提供了全新的 Karmada 生命周期管理的方式。用户可以在全局集群之上集中式来管理多个 Karmada&#xff0c;通过 CR 资源来控制 Karmada 的创建、升级和卸载。为用户运维和管理 Karmada 提供了极大的便捷。本文…

12个经典性能测试人员面试题

1、性能测试包含了哪些软件测试&#xff08;至少举出3种&#xff09;&#xff1f; 参考答案&#xff1a;负载测试;压力测试;容量测试;负载测试&#xff08;Load Testing&#xff09;&#xff1a;负载测试是一种主要为了测试软件系统是否达到需求文档设计的目标&#xff0c;譬如…

如何在 Jupyter Notebook 用一行代码启动 Milvus?

随着各种大语言模型&#xff08;LLM&#xff09;的涌现和 AI 技术变得越来越普遍&#xff0c;大家对于向量数据库的需求也变得越来越多。作为大模型的记忆体&#xff0c;向量数据库不仅可以帮助解决 LLM 面临的最大问题——缺乏特定领域知识和最新数据&#xff0c;还可以赋能相…

【数据结构】查找(一)

因为时间关系&#xff08;现阶段来不及&#xff09;&#xff0c;先不学红黑树和B树&#xff0c;所以这是查找&#xff08;一&#xff09;。 先写一下二分查找&#xff0c;数据结构数上叫的“折半查找”。 二分查找 左闭右闭区间 左闭右开区间 下面依旧是对王道书上选择题的一…

突破竞争壁垒:独立站如何实现有效的品牌差异化?

在当今竞争激烈的电商市场中&#xff0c;独立站已经成为了越来越多品牌的选择。然而&#xff0c;要想在这个竞争激烈的环境中脱颖而出&#xff0c;建立起独特的品牌差异化是至关重要的。品牌差异化是一种战略方法&#xff0c;旨在突出品牌在市场上的独特性和独有价值&#xff0…

Java阶段四Day02

Java阶段四Day02 文章目录 Java阶段四Day02VueCli嵌套路由总结项目开发开发流程关于项目项目分析数据库的设计规范(基于阿里巴巴Java开发手册)数据库表设计创建项目关于依赖项关于<build>报错 VueCli嵌套路由 由于Vue Cli工程是单页面的&#xff0c;为了保证能显示各式各…

如何实现不同服务器之间 大规模数据同步?

随着企业结构分散化的不断扩大&#xff0c;企业的数据中心、服务器节点、异地分支机构之间&#xff0c;会存在多种文件交换场景。传统的FTP、rsync、网盘等传输方式在数据体量较小、时效性要求不高的情况下&#xff0c;基本也可以满足需求。 但随着数量爆发式增长&#xff0c;需…

大二下学期期末总结

文章目录 针对学习方面大学生就业指导与创业教育数据结构Java企业级开发大数据实时处理大数据可视化服务器技术 针对生活方面针对课外活动方面 针对学习方面 大学生就业指导与创业教育 这门课很好的帮我们分析了目前的就业形势&#xff0c;预测了未来的就业前景&#xff0c;为…

庆祝牛学长4周年!精彩折扣活动等你来享!

值此周年庆之际&#xff0c;我们衷心感谢您对我们的支持与信任。为了回馈广大用户的厚爱&#xff0c;我们特别推出一系列令人振奋的打折活动&#xff0c;让您在软件购买和使用过程中获得更多实惠和便利。 活动时间&#xff1a;从即日起&#xff0c;至2023年6月26日 活动链接&…

接口测试开发之:一篇搞懂 Cache、Cookie及Session。

目录 1、引言 2、Cache 2.1 缓存定义 2.1.1 缓存概念 2.1.2 缓存优点 2.2 浏览器缓存 2.2.1 存储路径 2.2.2 缓存优点 2.2.3 缓存弊端 2.2.4 原理图 2.3 代理缓存 2.3.1 原理 2.3.2 应用场景 2.3.3 原理图 2.4 网关缓存 2.4.1 原理 2.4.2 缓存分类 2.4.3 缓存…

uniapp uview2.0 其中u--textarea组件无法换行,换行无效问题解决方案

最终发现是因为默认值的问题&#xff0c;uniapp和uview的官方文档写的confirmType的默认值都是done&#xff0c;但是uniapp的textarea在没有配置的情况下是没有值的&#xff0c;uview给加了一个默认值done&#xff0c;就出现了无法返回的问题&#xff0c;尝试了将uview的textar…

qt样式表qss选择器

目录 1、通用选择器 2、类型选择器&#xff08;类和子类&#xff09; 3、类选择器 4、ID选择器 5、子孙后代控件选择器 6、子后代控件选择器 7、属性选择器 7.1 静态属性 7.2 动态属性 8、子控件选择 9、伪状态选择 在开始之前&#xff0c;先要区分3个概念&#xff1…

Android MediaPlayer多次Seek产生杂音优化

前言 MediaPlayer 作为Android自带的Player目前还是存在很多不好使用问题&#xff0c;但实际开发中&#xff0c;还是有不少使用场景&#xff0c;本文针对多次seek产生杂音的问题进行分析讨论&#xff0c;自己遇到了进行记录&#xff0c;目前底层也不好解决和轻易改动原生代码&…

2020年CSP-J认证 CCF非专业级别软件能力认证第一轮真题-单项选择题解析

2020 CCF认证第一轮&#xff08;CSP-J&#xff09;真题 一、单项选择题 (共15题&#xff0c;每2分&#xff0c;共30分;每题有且有一个正确选项&#xff09; 1、在内存储器中每个存储单元都被赋予一个唯一的序号,称为 A、下标 B、序号 C、地址 D、编号 答案&#xff1a;C…

当618成“抢人大战”,知道“怎么抢”才能“抢得到”

文 | 螳螂观察 作者 | 易不二 今年618对很多平台来说都意义非凡。 尤其是最具主场优势的阿里、京东而言&#xff0c;更是一场硬仗&#xff1a;阿里“16N”组织架构调整后&#xff0c;淘天的第一次大促&#xff0c;且还恰逢也淘宝20周年&#xff1b;京东换帅、CEO许冉第一次接…

华为OD机试真题 Java 实现【素数伴侣】【2023 B卷 100分】,附详细解题思路

一、题目描述 若两个正整数的和为素数&#xff0c;则这两个正整数称之为“素数伴侣”&#xff0c;如2和5、6和13&#xff0c;它们能应用于通信加密。现在密码学会请你设计一个程序&#xff0c;从已有的 N &#xff08; N 为偶数&#xff09;个正整数中挑选出若干对组成“素数伴…

13.常用类|Java学习笔记

文章目录 包装类包装类型和String类型的相互转换Integer类和Character类的常用方法Integer创建机制&面试题 String类创建String对象的两种方式和区别字符串的特性String类的常用方法 StringBuffer类String和StringBuffer相互转换StringBuffer常用方法 StringBuilder类Strin…

Java实训日志01

文章目录 一、安装录屏软件&#xff08;一&#xff09;下载软件&#xff08;二&#xff09;安装软件 二、使用录屏软件三、安装XMind软件&#xff08;一&#xff09;下载XMind软件&#xff08;二&#xff09;安装XMind软件 四、创建思维导图&#xff08;一&#xff09;启动XMin…