分布式消息队列Kafka(一)

news2024/11/24 22:27:41

一.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)Replica:副本。一个 topic 的每个分区都有若干个副本,一个Leader和若干个 Follower。

(8)Leader:每个分区多个副本的“主”,生产者发送数据的对象,以及消费者消费数 据的对象都是 Leader。

(9)Follower:每个分区多个副本中的“从”,实时从 Leader 中同步数据,保持和 Leader 数据的同步。Leader 发生故障时,某个 Follower 会成为新的 Leader。

二.kafka的安装与部署

1.集群规划

hadoop102hadoop103hadoop104
zkzkzk
kafkakafkakafka

2.集群部署

0)官方下载地址:http://kafka.apache.org/downloads.html

1)解压安装包

[zrclass@hadoop102 software]$ tar -zxvf kafka_2.12-3.0.0.tgz -C 
/opt/module/

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

[zrclass@hadoop102 module]$ mv kafka_2.12-3.0.0/ kafka

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

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

修改内容:

#broker 的全局唯一编号,不能重复,只能是数字。
broker.id=0

#kafka 运行日志(数据)存放的路径,路径不需要提前创建,kafka 自动帮你创建,可以配置多个磁盘路径,路径与路径之间可以用","分隔
log.dirs=/opt/module/kafka/datas

#配置连接 Zookeeper 集群地址(在 zk 根目录下创建/kafka,方便管理)
zookeeper.connect=hadoop102:2181,hadoop103:2181,hadoop104:2181/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
# xsync kafka/
# scp
[zrclass@hadoop102 module]$ scp -r kafka/ hadoop103:$PWD
[zrclass@hadoop102 module]$ scp -r kafka/ hadoop104:$PWD

5)分别在 hadoop103 和 hadoop104 上修改配置文件/opt/module/kafka/config/server.properties中的 broker.id=1、broker.id=2

注:broker.id 不得重复,整个集群中唯一。

6)配置环境变量

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

复制到其他节点,并source

source /etc/profile

7)启动集群

先启动 Zookeeper 集群,然后启动 Kafka。

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

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

3.kafka的基本操作命令

(1)主题命令行操作

1)主题查看主要参数命令

参数描述
–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

[zrclass@hadoop102 kafka]$ bin/kafka-topics.sh --bootstrap-server hadoop102:9092 --list

3)创建topic

[zrclass@hadoop102 kafka]$ bin/kafka-topics.sh --bootstrap-server hadoop102:9092 --create --partitions 1 --replication-factor 3 --topic test

选项说明:

–topic 定义 topic 名

–replication-factor 定义副本数

–partitions 定义分区数

4)查看 first 主题的详情

[zrclass@hadoop102 kafka]$ bin/kafka-topics.sh --bootstrap-server  hadoop102:9092 --describe --topic test 

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

[atguigu@hadoop102 kafka]$ bin/kafka-topics.sh --bootstrap-server  hadoop102:9092 --alter --topic test --partitions 3 

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

[zrclass@hadoop102 kafka]$ bin/kafka-topics.sh --bootstrap-server  hadoop102:9092 --describe --topic test 

7)删除 topic

[zrclass@hadoop102 kafka]$ bin/kafka-topics.sh --bootstrap-server  hadoop102:9092 --delete --topic test

(2)生产者命令行操作

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

[zrclass@hadoop102 kafka]$ bin/kafka-console-producer.sh 
参数描述
–bootstrap-server <String: server toconnect to>连接的 Kafka Broker 主机名称和端口号。
–topic <String: topic>操作的 topic 名称。

2)发送消息

[zrclass@hadoop102 kafka]$ 

bin/kafka-console-producer.sh --bootstrap-server hadoop102:9092 --topic test 

\>hello world 
\>hello kafka

(3)消费者命令操作

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

[zrclass@hadoop102 kafka]$ 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)消费消息

消费 test主题中的数据

[zrclass@hadoop102 kafka]$ bin/kafka-console-consumer.sh --bootstrap-server hadoop102:9092 --topic test 

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

[zrclass@hadoop102 kafka]$ bin/kafka-console-consumer.sh --bootstrap-server hadoop102:9092 --from-beginning --topic test 

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

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

相关文章

每日一个小技巧:1分钟告诉你截图翻译软件哪个好用

随着互联网的发展&#xff0c;我们对各种语言文字的翻译需求越来越高。在翻译时&#xff0c;大家经常会遇到一些生词或专业术语&#xff0c;这时候我们就需要使用翻译软件来帮助理解。但是&#xff0c;有些时候大家需要翻译的内容并不是一段文本&#xff0c;而是一张图片或截图…

《前端bug齁逼多,真假开发说》2023/4/10-2023/4/18问题汇总

1 高德地图 运行抱错 INVALID_USER_SCODE 这里是错误信息对应原因 错误信息列表-参考手册-地图 JS API | 高德地图API 这里是高德地图api设置说明 准备-入门-教程-地图 JS API | 高德地图API 如果你自己能排查出错误 那不用看我的&#xff0c;如果都写的对还是抱错…

最常用的从A到Z的Linux命令,真的很好记,三分钟刷完!

Linux的命令行是一个非常强大的工具。如果你知道如何利用Linux命令&#xff0c;你可以轻松地在Linux系统中执行各种任务。在这篇文章中&#xff0c;我们将介绍从A到Z的Linux命令。 alias alias命令允许你为常用的命令设置一个短的别名&#xff0c;以节省时间和减少敲击。例如&…

界面开发框架Qt新手入门 - 自定义排序/筛选模型示例(一)

Qt 是目前最先进、最完整的跨平台C开发工具。它不仅完全实现了一次编写&#xff0c;所有平台无差别运行&#xff0c;更提供了几乎所有开发过程中需要用到的工具。如今&#xff0c;Qt已被运用于超过70个行业、数千家企业&#xff0c;支持数百万设备及应用。 自定义排序/筛选模型…

IBL-镜面反射(LUT篇)

1. LUT需要求解什么 首先我们将镜面反射部分的积分分割为两个部分。 L o ( p , ω o ) ∫ Ω L i ( p , ω i ) d ω i ∗ ∫ Ω f r ( p , ω i , ω o ) n ⋅ ω i d ω i L_{o}\left(p, \omega_{o}\right)\int_{\Omega} L_{i}\left(p, \omega_{i}\right) d \omega_{i} * …

基于异常值鲁棒性问题的极限学习机的回归问题研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

外贸软件解决玩具行业管理难点,提升业务效率

在玩具外贸市场&#xff0c;中国显而易见是玩具的生产大国&#xff0c;但却不是玩具生产强国。与发达国家相比&#xff0c;我国玩具行业市场集中度较低&#xff0c;对于国外玩具采购商来说&#xff0c;他们对于采购费用都是相对固定的&#xff0c;连对采购的需求也不会有多少变…

解决在vue中使用elementUI自定义校验及点击提交不生效问题

前言&#xff1a; 本章讲述的主要是对身份证号码的校验 及 为何校验了但提交不生效问题。 拓展小知识&#xff1a; &#x1f340; 1、身份证号码&#xff08;二代18位身份证&#xff09;的含义&#xff1a; 1️⃣ 1-2位&#xff1a;代表所属省级政府的代码&#xff1b; 2️⃣ 3…

【前端】原型和原型链

最近面试的时候&#xff0c;面试官有问到这个&#xff0c;答得很简单&#xff0c;感觉了解得不深&#xff0c;下来之后自己又搜索了一下动手看了看相关的内容。 a. 每个函数都有prototype属性&#xff0c;称之为原型&#xff1b;因为这个属性的值有时候是一个对象&#xff0c;…

2023-04-04 2016天梯赛决赛练习题L2

7-11 互评成绩 学生互评作业的简单规则是这样定的&#xff1a;每个人的作业会被k个同学评审&#xff0c;得到k个成绩。系统需要去掉一个最高分和一个最低分&#xff0c;将剩下的分数取平均&#xff0c;就得到这个学生的最后成绩。本题就要求你编写这个互评系统的算分模块。 输…

JUC概述

1. JUC是什么&#xff1f; 在 Java 5.0 提供了 java.util.concurrent(简称JUC)包&#xff0c;在此包中增加了在并发编程中很常用的工具类。此包包括了几个小的、已标准化的可扩展框架&#xff0c;并提供一些功能实用的类&#xff0c;没有这些类&#xff0c;一些功能会很难实现或…

【JavaEE】SpringBoot配置文件的设置及其读取

目录 配置文件作用 配置文件注意事项 properties 用法 修改字符集 优缺点 yml 用法 优缺点 读取配置文件 使用 Value注解 读properties配置文件 读yml配置文件 使用 ConfigurationProperties 注解 读properties配置文件 读yml配置文件 配置文件作用 SpringBoot的…

MCMC采样

MCMC采样 MCMC 是一种随机的近似推断&#xff0c;其核心就是基于采样的随机近似方法蒙特卡洛方法。而近似推断中又可以分成两大类&#xff0c;即为确定性近似 (VI) 和随机近似 (MCMC)。我们需要从概率分布中取 个点&#xff0c;从而近似计算这个积分。常用采样方法有&#xff…

开关柜绝缘状态检测与故障诊断

摘要:电力开关柜作为电力系统的关键设备广泛应用于输电配电网络&#xff0c;其运行可靠性直接影响着电力系统供电质量及安全性能。开关柜绝缘状态检测与故障诊断是及时维修、更换和预防绝缘故障的重要技术手段。在阐述开关柜绝缘状态评估的基础上&#xff0c;指出其内典型的局部…

Docker --- 基本操作、Dockerfile自定义镜像

一、Docker的基本操作 1.1、镜像操作 镜像名称 首先来看下镜像的名称组成&#xff1a; 镜名称一般分两部分组成&#xff1a;[repository]:[tag]。 在没有指定tag时&#xff0c;默认是latest&#xff0c;代表最新版本的镜像 如图&#xff1a; 这里的mysql就是repository&…

数据库课设--基于Python+MySQL的餐厅点餐系统(表的设计)

文章目录 一、系统需求分析二、系统设计1. 功能结构设计2、概念设计2.2.1 bill_food表E-R图2.2.2 bills表E-R图2.2.3 categories E-R图2.2.4 discounts表 E-R图2.2.5 emp表E-R图2.2.6 food 表E-R图2.2.7 member表E-R图2.2.8 member_point_bill表E-R图2.2.9 servers表E-R图2.2.1…

MySQL的事务原理和实现

一、事务属性与架构概述 1、基本概念&#xff1a; 事务&#xff08;Transaction&#xff09;是访问和更新数据库的程序执行单元&#xff1b;事务中可能包含一个或多个sql语句&#xff0c;这些语句要么都执行&#xff0c;要么都不执行。作为一个关系型数据库&#xff0c;MySQL…

为什么很多程序员不反感加班?行内人:老板给钱是真的给啊

为什么很多程序员不反感加班&#xff1f;行内人&#xff1a;说给钱老板真的给&#xff01; 一提到程序员&#xff0c;大部分人第一反应是加班多、996、脱发&#xff0c;这几乎成了外界对程序员刻板印象的标配。不少知名的互联网大厂也是加班之风盛行&#xff0c;譬如著名的华为…

Java版企业电子招投标采购系统源码之登录页面

信息数智化招采系统 服务框架&#xff1a;Spring Cloud、Spring Boot2、Mybatis、OAuth2、Security 前端架构&#xff1a;VUE、Uniapp、Layui、Bootstrap、H5、CSS3 涉及技术&#xff1a;Eureka、Config、Zuul、OAuth2、Security、OSS、Turbine、Zipkin、Feign、Monitor、Stre…

Centos8编译安装内核

首先下载kernel&#xff0c;5.x版本的内核&#xff0c;下载地址&#xff1a; https://mirrors.edge.kernel.org/pub/linux/kernel/v5.x/ 系统安装相关包&#xff1a; # yum install -y bc gcc make python3 ncurses-devel flex bison openssl-devel elfutils-libelf-devel将内…