【Kafka】安装配置操作(二)

Kafka安装与操作

安装与配置

版本说明

安装包下载地址: http://archive.apache.org/dist/kafka/3.5.0/

源码包下载地址: http://archive.apache.org/dist/kafka/3.5.0/

安装配置

1)解压: tar -zxvf kafka_2.12-3.5.0.tgz -C /opt/module/

2)重命名: mv kafka_2.12-3.5.0/ kafka-3.5.0/

3)hadoop101执行以下命令创建数据文件存放目录: mkdir -p /opt/module/kafka-3.5.0/datas

4)修改配置文件:

// 修改$KAFKA_HOME/config/server.properties //
当前kafka实例的id,必须为整数,一个集群中不可重复 broker.id=0 //
生产到kafka中的数据存储的目录,目录需要手动创建 log.dirs=/opt/module/kafka-3.5.0/datas //
kafka数据在zk中的存储目录
zookeeper.connect=hadoop101:2181,hadoop102:2181,hadoop103:2181/kafka
// 添加配置,用来删除topic delete.topic.enable=true host.name=hadoop101

5)同步到其他机器:

scp -r kafka/ hadoop102:$PWD

scp -r kafka/ hadoop103:$PWD

6)修改broker.id:

//修改broker.id
broker.id=1 broker.id=2
//修改host.name
host.name=hadoop102 host.name=hadoop103

服务启动

服务启动:每台都要运行此命令:

nohup bin/kafka-server-start.sh config/server.properties 2>&1 &

启动结果如图-5所示:
在这里插入图片描述
图-5 kafka启动

Kafka基本操作

Kafka的topic操作
topic是kafka非常重要的核心概念,是用来存储各种类型的数据的,所以最基本的就需要学会如何在kafka中创建、修改、删除的topic,以及如何向topic生产消费数据。
关于topic的操作脚本:kafka-topics.sh:

bin/kafka-topics.sh --create
–topic hadoop \ // 指定要创建的topic的名称
–bootstrap-server hadoop101:9092,hadoop102:9092,hadoop103:9092\ //指定kafka关联的zk地址
–partitions 3 \ //指定该topic的分区个数
–replication-factor 3 //指定副本因子

创建topic
注意:指定副本因子的时候,不能大于broker实例个数,否则报错,如图-6所示:
在这里插入图片描述

图-6 kafka创建topic
当使用正确的方式,即将replication-factor设置为3,之后执行脚本命令,创建topic成功,如图-7所示。
在这里插入图片描述

图-7 zookeeper中的topic列表
与此同时,在kafka数据目录data.dir=/opt/module/kafka-3.5.0/datas/中有了新变化,如图-8所示。
在这里插入图片描述
图-8 kafka数据目录

查看topic列表

bin/kafka-topics.sh --list
–bootstrap-server hadoop101:9092,hadoop102:9092,hadoop103:9092

执行结果如图-9所示。
在这里插入图片描述
图-9 kafka topic列表

查看每一个topic的信息

bin/kafka-topics.sh --describe
–topic hadoop
–bootstrap-server hadoop101:9092,hadoop102:9092,hadoop103:9092

执行结果如图-10所示。
在这里插入图片描述

图-10 kafka topic信息

其中partition,replicas,leader,isr代表的是什么意思呢。
1)Partition:当前topic对应的分区编号。
2)Replicas:副本因子,当前kafka对应的partition所在的broker实例的broker.id的列表。
3)Leader:该partition的所有副本中的leader领导者,处理所有kafka该partition读写请求。
4)ISR:该partition的存活的副本对应的broker实例的broker.id的列表。
修改一个topic

[root@hadoop101 kafka]$ bin/kafka-topics.sh --alter
–topic hadoop
–partitions 4
–bootstrap-server hadoop101:9092,hadoop102:9092,hadoop103:9092

执行结果如图-11所示,可以看出partition由原先的3个变成了4个。
在这里插入图片描述

图-11 kafka topic修改partition
但是注意:partition个数,只能增加,不能减少,如图-12所示。
在这里插入图片描述

图-12 kafka topic partition只能增加

删除一个topic

[root@hadoop101 kafka]$ bin/kafka-topics.sh --delete
–topic test
–bootstrap-server hadoop101:9092,hadoop102:9092,hadoop103:9092

执行结果如图-13所示
在这里插入图片描述

图-13 kafka topic删除

Kafka终端数据生产与消费

脚本简介
在$KAFKA_HOME/bin目录下面提供了很多脚本,其中kafka-console-producer.sh和kafka-console-consumer.sh分别用来在终端模拟生产和消费数据,即作为kafka topic的生产者和消费者存在。
生产数据
生产数据,执行以下的命令:

[root@hadoop101 kafka]$ bin/kafka-console-producer.sh
–topic hadoop
–bootstrap-server hadoop101:9092,hadoop102:9092,hadoop103:9092

如图-14所示:
在这里插入图片描述

图-14 kafka-console-producer生产数据

消费数据
类似的,消费刚刚生产的数据需要执行以下命令:

[root@hadoop102 kafka]$ bin/kafka-console-consumer.sh
–topic hadoop
–bootstrap-server hadoop101:9092,hadoop102:9092,hadoop103:9092

如图-15所示:
在这里插入图片描述
图-15 kafka-console-producer生产数据

但遗憾的是,我们并没有看到刚刚生产的数据,这很好理解,比如新闻联播每晚7点开始了,结果你7点15才打开电视看新闻,自然7点到7点15之间的新闻你就会错过,如果你想要看这之间的新闻,那么就需要其提供回放的功能,幸运的是kafka不仅提供了从头开始回放数据的功能,还可以做到从任意的位置开始回放或者读取数据,这点功能是非常强大的。
那么此时重新在生产端生产数据,比如4,5,6,再看消费端,如图-16所示,就可以看到有数据产生了。
在这里插入图片描述
图-16 kafka-console-consumer消费数据

那么我想要读取1,2,3的数据,那该怎么办呢?此时只需要添加一个参数–from-beginning从最开始读取数据即可,如图-17所示:
在这里插入图片描述

图-17 kafka-console-consumer从头消费数据

Kafka的数据消费的总结

消费者与分区之间的关系
kafka消费者在消费数据的时候,都是分组别的。不同组的消费不受影响,相同组内的消费,需要注意,如果partition有3个,消费者有3个,那么便是每一个消费者消费其中一个partition对应的数据;如果有2个消费者,此时一个消费者消费其中一个partition数据,另一个消费者消费2个partition的数据。如果有超过3个的消费者,同一时间只能最多有3个消费者能消费得到数据,如图-18所示。
在这里插入图片描述

图-18 kafka消费数据的特点

如下命令查看不同分区中产生的数据:
第一个消费者:

[root@hadoop102 kafka]$ bin/kafka-console-consumer.sh
–topic hadoop
–bootstrap-server hadoop101:9092,hadoop102:9092,hadoop103:9092
–partition 0
–offset earliest

第二个消费者:

[root@hadoop102 kafka]$ bin/kafka-console-consumer.sh
–topic hadoop
–bootstrap-server hadoop101:9092,hadoop102:9092,hadoop103:9092
–partition 1
–offset earliest

第三个消费者:

[root@hadoop102 kafka]$ bin/kafka-console-consumer.sh
–topic hadoop
–bootstrap-server hadoop101:9092,hadoop102:9092,hadoop103:9092
–partition 2
–offset earliest

offset:是kafka的topic中的partition中的每一条消息的标识,如何区分该条消息在kafka对应的partition的位置,就是用该偏移量。offset的数据类型是Long,8个字节长度。offset在分区内是有序的,分区间是不一定有序。如果想要kafka中的数据全局有序,就只能让partition个数为1,如图-19所示。
在这里插入图片描述
图-19 kafka offset概念

在组内,kafka的topic的partition个数,代表了kafka的topic的并行度,同一时间最多可以有多个线程来消费topic的数据,所以如果要想提高kafka的topic的消费能力,应该增大partition的个数。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

贪心算法-活动安排问题和背包问题

实验6贪心算法-活动安排问题和背包问题 实验目的: 理解贪心算法的基本思想运用贪心算法解决实际问题 实验内容: 采用贪心方法编程实现以下问题的算法 1.如何安排下列活动使得使用的活动场所最少,并给出具体的安排方法。 活动 a b c …

【笔试】03

FLOPS FLOPS 是 Floating Point Operations Per Second 的缩写,意为每秒浮点运算次数。它是衡量计算机性能的指标,特别是用于衡量计算机每秒能够执行多少浮点运算。在高性能计算领域,FLOPS 被广泛用来评估超级计算机、CPU、GPU 和其他处理器…

甘特图是什么?利用甘特图来优化项目管理流程

在现代项目管理中,图表是一种强大而直观的工具,可以帮助项目经理和团队成员清晰地了解并掌控整个项目进程。其中,甘特图是最常用和最有效的图表之一。 甘特图是一种条形图,可以用来直观地展示项目中各个任务的进度、持续时间和相互关系。它由一个横轴和一个纵轴组成。横轴代表时…

2024 OceanBase 开发者大会:OceanBase 4.3正式发布,打造PB级实时分析数据库

4月20日,2024 OceanBase开发者大会盛大召开,吸引了50余位业界知名的数据库专家和爱好者,以及来自全国各地的近600名开发者齐聚一堂。他们围绕一体化、多模、TP与AP融合等前沿技术趋势展开深入讨论,分享场景探索的经验和最佳实践&a…

编程基础“四大件”

基础四大件包括:数据结构和算法,计算机网络,操作系统,设计模式 这跟学什么编程语言,后续从事什么编程方向均无关,只要做编程开发,这四个计算机基础就无法避开。可以这么说,这基础四大件真的比编程语言重要!&#xff0…

typedef 定义函数指针

typdef int(*FUNC_TYPE)(int,int) FUNC_TYPE p NULL; 定义了一个函数指针 函数指针作为函数的参数的用法demon

基于python+django+mysql农业生产可视化系统

博主介绍: 大家好,本人精通Java、Python、C#、C、C编程语言,同时也熟练掌握微信小程序、Php和Android等技术,能够为大家提供全方位的技术支持和交流。 我有丰富的成品Java、Python、C#毕设项目经验,能够为学生提供各类…

I2C,UART,SPI(STM32、51单片机)

目录 基本理论知识: 并行通信/串行通信: 异步通信/同步通信: 半双工通信/全双工通信: UART串口: I2C串口: SPI串口: I2C在单片机中的应用: 软件模拟: 51单片机:…

投票刷礼物链接怎么弄?最新投票活动创建系统源码 轻松创建活动

投票刷礼物链接怎么弄?投票活动创建系统的作用和功能多种多样,为用户提供一个便捷、高效且功能强大的平台,用于创建、管理和执行各种投票活动。分享一个最新投票活动创建系统源码,源码开源可二开,含完整代码包和详细搭…

对象与JSON字符串互转

1、JSON字符串转化成JSON对象 JSONObject jsonobject JSON.parseObject(str); 或者 JSONObject jsonobject JSONObject.parseObject(str); 功能上是一样的,都是将JSON字符串(str)转换成JSON对象 jsonobject 。注意str一定得是以键值对存在…

专业社区团购小程序,开启社区营销新模式

随着互联网的快速发展,社区团购已经成为了当下最热门的商业模式之一。它通过将社区居民聚集在一起,以较低的价格购买高品质的商品,改变了传统购物模式。社区团购不仅为消费者带来了实惠,同时也为商家提供了新的盈利渠道。 开发社区…

MYSQL之锁机制

什么是锁机制? MySQL的锁机制是数据库中用于管理和控制对共享资源并发访问的一种机制。在多用户环境下,不同的用户可能同时对同一数据进行读写操作,如果没有适当的锁机制,就可能出现数据不一致或脏读等问题。 锁分类 1.从数据库的操作类型…