打怪升级之小白的大数据之旅(七十四)<初识Kafka>

限时加码!20+主流AI编程工具免费用 购周边加赠Coding Plan Lite,Claude Code、Cursor等即刻畅享,学习进阶更高效! 阅读详情

打怪升级之小白的大数据之旅(七十四)

初识Kafka

引言

学完Flume之后,接下来将为大家带来Kafka相关的知识点,在工作中,Kafka和Flume经常会搭配使用,那么Kafka究竟是什么呢?让我们开始今天的内容吧

Kafka地图

惯例,首先介绍kafka整个知识点的脉络,然后再详细为大家带来详细的知识点

  • kafka概述
    • kafka是什么?有什么应用场景,它的架构是什么?
  • kafka常用shell指令
    • 如何操作kafka
  • kafka原理
    • kafka它究竟是怎么实现的
  • 消息发送流程
    • kafka消息是怎么发送的

kafka概述

kafka是什么

按照官方的描述:kafka是基于发布/订阅的消息队列
在这里插入图片描述
想象上图中,这些人都预定今日头条的报纸,那么当今天的报纸印刷后,就会给每个人都发送一份,如果有人没有订阅该报纸,当然他就不会得到这份报纸,这就是发布/订阅的消息队列

kafka应用场景

kafka的应用场景主要有两大类

  • 用于实时场景,当有高并发场景时,可以通过kafka进行削峰
    • 举个栗子,秒杀活动中,可能同时会有海量的数据进来,此时服务器压力会很大,如果我们购买大量的服务器来解决这个高并发问题,等秒杀活动结束后,就会有大量服务器处于闲置状态
  • 用于离线场景,通常配合Flume用于缓冲
    • Flume的channel容量有限,当有大量数据通过source进行获取时,可能会造成channel容量溢出,所以可以通过kafka来减少flume的压力

kafka基础架构

在这里插入图片描述
kafka架构

  • Producer: 生产者

    • 向Topic写入消息
  • Topic:主题

    • 消息存储在Topic中,在工作中一般是一个业务一个主题
  • Partition:分区

    • topic的一个分段,topic为了实现分布式存储,将一个Topic划分为多个partition,每个分区存储在不同的节点上
    • 好处:
      1、实现topic的分布式存储
      2、提高的生产者、消费者的并发度
    • 一个partition只能被消费者组中一个消费者所消费
  • 副本:

    • 因为partition存储在不同节点,为了防止因节点宕机导致数据丢失,保证数据的完整性,提供了副本机制
  • ConsumerGroup 消费者组

    • 消费者组中有多个消费者。组中消费者的个数最好 = topic分区数
    • 如果消费者组中消费者个数>topic分区数,此时有个别消费者没有分区可以消费
    • 如果消费者组中消费者个数<topic分区数,此时有个别消费者需要消费多个分区的数据
  • Consumer

    • 消费者,向kafka拉取数据
  • broker kafka节点

    • 用于存储分区数据
  • leader: 副本中的一个角色,

    • produer写入数据以及消费者消费数据都找分区的leader
  • follower: 副本中的一个角色

    • follower同步leader的数据,如果leader宕机,会选举出一个新leader
  • zookeeper:

    • 后续kafka通过zk监听broker状态,leader选举等都依赖zk
  • offset: 偏移量

    • offset是每个分区数据的唯一标识,后续消费者组消费分区数据之后会记录下一次应该从哪个offset拉取数据

kafka安装

kafka下载地址:http://kafka.apache.org/downloads
因为是分布式,所以我们需要配置kafka集群

集群配置

第一步:下载安装包完成后,将安装包存储到服务器中,我这里还是存储到 /opt/modult/software中

第二步:安装kafka,直接解压即可

tar -zxvf kafka安装包名称 -C /opt/module

第三步:修改kafka名称[可以选择不改]

mv /opt/module/kafka带版本号的名称 kafka 

第四步:设置环境变量

sudo vim /etc/profile.d/my_env.sh
#KAFKA_HOME
export KAFKA_HOME=/opt/module/kafka
export PATH=$PATH:$KAFKA_HOME/bin

第五步:分发配置文件并重置环境变量

sudo /home/garylea/bin/xsync /etc/profile.d/my_env.sh
hadoop113、114节点分别执行
source /etc/profile.d/my_env.sh

第六步:配置kafka集群参数

#修改配置参数
vim /opt/module/kafka/config/server.properties 
# 修改broker.id
broker.id=2
# 修改kafka数据保存路径
log.dirs=/opt/module/kafka/data
# 修改kafka zk的节点连接ip,指定kafka在zookeeper的存储节点名称
zookeeper.connect=hadoop112:2181,hadoop113:2181,hadoop114:2181/kafka

第七步:分发kafka到其他节点,并修改对应的broker.id

xsync /opt/module/kafka 
# hadoop113的broker.id
vim /opt/module/kafka/config/server.properties 
broker.id=3

# hadoop114的broker.id
vim /opt/module/kafka/config/server.properties 
broker.id=4

第八步:测试启动kafka

分别启动kafka
bin/kafka-server-start.sh -daemon /opt/module/kafka/config/server.properties

第九步:编写一键启动脚本

  • 因为启动kafka集群需要在每一台节点都运行启动命令,所以我们可以通过shell脚本来完成一键启动kafka集群
	# 编写一键启动脚本
vim /home/garylea/bin/mykafka
# 编写完毕后,添加权限
chmod +x /home/garylea/bin/mykafka
	#! /bin/bash
	#1、判断参数是否传入
	if [ $# -lt 1 ]
	then
	        echo "必须传入参数...."
	        exit
	fi
	
	#2、根据参数匹配执行
	case $1 in
	"start")
	        for host in hadoop112 hadoop113 hadoop114
	        do
	                echo "=============================$host========================="
	                ssh $host "/opt/module/kafka/bin/kafka-server-start.sh -daemon /opt/module/kafka/config/server.properties"
	        done
	;;
	"stop")
	        for host in hadoop112 hadoop113 hadoop114
	        do
	                echo "=============================$host========================="
	                ssh $host "/opt/module/kafka/bin/kafka-server-stop.sh"
	        done
	;;
	"status")
	        for host in hadoop112 hadoop113 hadoop114
	        do
	                pid=$(ssh $host "ps -ef | grep server.properties | grep -v grep")
	                [ "$pid" ] && echo "$host kafka进程正常" || echo "$host kafka不存在或者异常"
	        done
	;;
	*)
	        echo "参数输入错误....."
	;;
	esac

kafka常用指令

通过shell指令来操作kafka,当然了,实际开发中,我们使用的API来操作kafka

topic相关

    # 1、创建topic:
     bin/kafka-topics.sh --create --boostrap-server borker主机:9092,broker主机:9092,.. --partitions 分区数 --replication-factor 副本数 --topic topic名称
    # 2、查看集群所有的topic: 
    bin/kafka-topics.sh --list --boostrap-server borker主机:9092,broker主机:9092,..
    # 3、查看某个topic详细信息: 
    bin/kafka-topics.sh --describe --boostrap-server borker主机:9092,broker主机:9092,.. --topic topic名称
  	# 4、修改topic[只能修改分区数,只能增大分区]:
     bin/kafka-topics.sh --alter --topic topic名称 --boostrap-server borker主机:9092,broker主机:9092,.. --partitions 分区数
    # 5、删除topic: 
    bin/kafka-topics.sh --delete --topic topic名称 --boostrap-server borker主机:9092,broker主机:9092,..

生产者相关

 bin/kafka-console-producer.sh --broker-list borker主机:9092,broker主机:9092,.. --topic topic名称

消费者相关:

bin/kafka-console-consumer.sh --boostrap-server borker主机:9092,broker主机:9092,.. --topic topic名称 [--from-beginning] [--group 消费者组id] --from-beginning : 代表消费者从最开始的offset开始消费

总结

本章介绍了kafka的基本概念、安装以及shell相关操作指令,下一章,为大家带来kafka的原理介绍

Java打怪升级路线的相关知识 11、SrpingCloud Netflix全家桶。12、SpringCloud Alibaba全家桶。4、SpringBootWeb开发。7、SpringBoot分布式开发。3、SpringBoot原理。3、Linux系统管理。3、Java10新特性。4、Java11新特性。5、Java12新特性。2、java入门学习。3、java基础语法。17、23种设计模式。14、MVC三层架构。14、MySQL高级。5、LAMP平台部署。6、LNMP平台部署。11、Linux集群。10、Spark系列。 阅读详情

相关推荐

百度飞桨+文心大模型实战:生成式AI工程师认证备考全攻略(含真题解析)

本文详细解析百度飞桨与文心大模型结合的生成式AI工程师认证备考策略,涵盖认证体系、学习路径、核心技能突破及真题分析。帮助开发者掌握大模型原理、飞桨平台操作和文心大模型应用,高效通过工信部与百度联合认证考试。

loss4bartender的博客 651

打怪升级之小白的大数据之旅(七十一)<Hadoop生态:初识Flume>

打怪升级之小白的大数据之旅(七十一) Hadoop生态:初识Flume 上次回顾 上一章,我们学习完了hive的内容,本章开始是Hadoop中经常使用的另外一个框架 Flume 初识Flume 下面这个是flume的标志 flume的中文是水槽,但我觉得将它音译为浮木更加贴切 官方对Flume的解释是这样的: Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统。Flume基于流式架构,灵活简单 我对Flume的理解: 水流就像数据的传输过程(想象IO流

不断努力的数据汪 453

旋转矩阵推导

推导前提: 坐标使用右手坐标系,角度逆时针旋转为正。 绕X轴旋转角度为 俯仰角 即Pitch 绕Y轴旋转角度为 偏航角 即Yaw(Head) 绕Z轴旋转角度为 翻滚角 即Roll 一、平面二维坐标点的旋转 如右图所示,根据三角函数关系,可以列出向量OP与OP’的坐标表示形式: x = |OP|•cosα x′ = |OP|•cos(α+β) y = |OP|•sinα y′ = |OP|•sin(α+β) 将P′(x′,y′)表达式展开: x′ =

suixinger_lmh的随笔 1359

2022,大数据Kafka全新学习路线升级

摘要:大海能够带走你的哀愁,就像带走每条河流…… 周三,一个普通的日子。 你孑然一身,但海哥陪你一起过! 打怪升级涨姿势,不是节日胜似节日。 海哥闭关修炼多日,再次激情发新:尚硅谷Kafka新版视频教程发布! 大数据时代,不会Kafka你就OUT了! Kafka是高吞吐量的分布式发布订阅消息系统,可以处理消费者在网站中的所有动作流数据。作为大数据领域全面且开源的分布式事件流平台,已成为大数据从业人员的必备技能。 Kafka新版视频相较原版全方位大升级! 基于Kafka 3.x最新

java_atguigu的博客 342

重镑更新!Linux 运维工程师打怪升级进阶成神之路 4.0

戳下方名片,关注并星标!回复“1024”获取2TB学习资源!大家好,我是民工哥。经过近三年的打磨与总结,今天《 Linux 运维工程师打怪升级进阶成神之路》V4.0版本发布了。V 4.0版本是在前面几个版本的基础上更加精细化了运维岗位所需的技能知识点,更详细、更全面,几乎囊括了 Linux系统运维岗所需的所有技能体系(如:TCP/IP 网络协议栈、Linux 常用命令、企业常用服务与应用软件...

民工哥的博客 1356

终于产完了!Kafka 打怪升级进阶成神之路(2023最新版)

点击下方名片,设为星标!回复“1024”获取2TB学习资源!大家好,我是民工哥!前面给大家介绍了:关系型数据库MySQL、 NoSQL 数据库Redis、MongoDB、搜索引擎ElasticSearch、大数据Hadoop框架、PostgreSQL 数据库等知识体系学习的文章。在当今这样的就业大背景下,卷是肯定的,强大自己也是必须的。所以,学习不能停,必须一直卷下去。截止今天,...

民工哥的博客 398

升级打怪之早日走上富婆之路

1、在计算层面,Spark相比较MR(MapReduce)有巨大的性能优势,但至今仍有许多计算工具基于MR构架,比如非常成熟的Hive,hive的底层默认是MapReduce,但是可以经过与spark重新编译后,底层计算框架换成spark。如 Spark Shell/Spark Submit 的批处理,Spark Streaming 的实时处理应用,Spark SQL 的即席查询,MLlib 的机器学习,GraphX 的图处理和 SparkR 的数学计算等。1.热备:数据库运行时备份,实时的。

TSTZXRYQ的博客 905

升级打怪之早日走上富婆之路,2024年最新大数据开发经典面试题详解

1、在计算层面,Spark相比较MR(MapReduce)有巨大的性能优势,但至今仍有许多计算工具基于MR构架,比如非常成熟的Hive,hive的底层默认是MapReduce,但是可以经过与spark重新编译后,底层计算框架换成spark。如 Spark Shell/Spark Submit 的批处理,Spark Streaming 的实时处理应用,Spark SQL 的即席查询,MLlib 的机器学习,GraphX 的图处理和 SparkR 的数学计算等。以走的很快,但一群人才能走的更远。

UYruihu的博客 767

Java打怪升级成长学习路线图,大佬是这样炼成的!一定要收藏

如果你想要学习Java的话,我给你分享一些Java的学习资料,你不用浪费时间到处搜了,从Java入门到精通的资料我都给你整理好了,这些资料都是我做Java这几年整理的Java最新学习路线,Java笔试题,Java面试题,Java零基础到精通视频课程,Java开发工具,Java练手项目,Java电子书,Java学习笔记,PDF文档教程,Java程序员面经,Java求职简历模板等,这些资料对你接下来学习Java一定会带来非常大的帮助,每个Java初学者都必备,请你进我的**Java技术qq交流群。

2401_87252899的博客 1327

Java 打怪升级路线图,大佬是这样炼成的!一定要收藏

技术日新月异,对于初入职场的同学来说,经常会困惑该往那个方向发展,这一点松哥是深有体会的。 网上的资料多如牛毛,但是很多时候我们缺的不是一个资料,而是一个学习规划! 就是说,做 Java 开发,我们应该从哪里开始学?应该学习哪些东西?应该按照什么样的顺序来学? 松哥大二刚开始自学 Java 那会,最大的问题就是不知道该学什么,以及学习的顺序,自己一个人摸索了很长时间,后来才逐步建立起自己的知...

游戏建模零基础入门教程 712

Java 打怪升级成长学习路线图,一定要收藏

有人跟你说小公司学的东西多,他害你的,刚开始能去多大的去多大的,越大越好,你想你去了大的你想去小的分分钟的事情,但是你小的要去大的就相对难了。Tip:而且说一下作为一个应届生,你除了基础知识,如果你有自己的技术博客,还有像样的项目能展示给面试官看,是真的很加分,搭建个简单的项目,项目流程你也知道了,技术栈也熟悉了,还可以手机访问网页给面试官现场演示,很加分的。文章来源:网络 版权归原作者所有。

xuezhangmen的博客 481

2025年江西省职业院校技能大赛“大数据应用开发“竞赛样题第二套

为完成工业大数据分析工作,你所在的小组将应用大数据技术,以Scala作为整个项目的基础开发语言,基于大数据平台综合利用 Hive、Spark、Flink、Vue.js等技术,对数据进行处理、分析及可视化呈现,你们作为该小组的技术人员,请按照下面任务完成本次工作。

我是网络安全兼技能大赛工程师,专注网络安全技术学习与技能大赛实战!持续分享最新的技术文章,帮你少走弯路,一起在技术赛道上进步~ 1033

Java最新Java 打怪升级路线图,大佬是这样炼成的!一定要收藏,劲爆

总的来说,面试是有套路的,一面基础,二面架构,三面个人。最后,小编这里收集整理了一些资料,其中包括面试题(含答案)、书籍、视频等。

2301_82244514的博客 660

两年车间技术员转型大数据开发,说说转型这点事儿

黄晓明(化名)是我学习群的一个小伙伴,同时也是我大学的直系学长,都是车辆工程专业。不过我比他比较早脱离苦海,他是从事两年车辆设计行业才转型的。在6月份找的我规划学习路线,...

a934079371的博客 692

终于产完了!Zookeeper 打怪升级进阶成神之路(2023最新版)

zooKeeper 是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。官方文档上这么解释zookeeper,它是一个分布式协调框架,是 Apache Hadoop 的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等。是一个为分布式应用提供一致性服务的软件。

民工哥的博客 405

两年 .net 开发转型大数据,上岸阿里P6

点击上方 "大数据肌肉猿"关注,星标一起成长后台回复【加群】,进入高质量学习交流群2021年大数据肌肉猿公众号奖励制度今天分享一位学习群小伙伴的转型经历,他双非院校数学专...

a934079371的博客 501

2025年江西省职业院校技能大赛“大数据应用开发“竞赛样题第01套

工业互联网是工业全要素、全产业链、全价值链的全面连接,是人、机、物、工厂互联互通的新型工业生产制造服务体系,是互联网从消费领域向生产领域、从虚拟经济向实体经济拓展的核心载体,是建设现代化经济体系、实现高质量发展和塑造全球产业竞争力的关键支撑,工业大数据则是工业互联网实现工业要素互联之后的核心价值创造者。随着大数据行业的发展,工业数据收集呈现时间维度不断延长、数据范围不断扩大、数据粒度不断细化的趋势。以上三个维度的变化使得企业所积累的数据量以加速度的方式在增加,最终构成了工业大数据的集合

我是网络安全兼技能大赛工程师,专注网络安全技术学习与技能大赛实战!持续分享最新的技术文章,帮你少走弯路,一起在技术赛道上进步~ 976

终于卷完了!玩转企业云计算平台 OpenStack 打怪升级进阶之路(2023最新版)

点击下方名片,设为星标!回复“1024”获取2TB学习资源!大家好,我是民工哥!在这之前,我们相继卷完了:关系型数据库MySQL、 NoSQL 数据库Redis、MongoDB、搜索引擎ElasticSearch、大数据Hadoop框架、PostgreSQL数据库、消息中间件Kafka分布式协调中间件Zookeeper、消息中间件RabbitMQ、构建企业级监控平台、...

民工哥的博客 357

2026江苏省职业院校技能大赛新一代信息技术赛道大数据应用开发项目样题

2026江苏省职业院校技能大赛大数据应用开发项目摘要 本项目包含三个主要任务: 离线数据处理(25分): 数据抽取:使用Spark将MySQL数据增量抽取到Hive ODS层,包含6个表的抽取任务,要求添加静态分区(前一天日期) 数据清洗:将ODS数据全量抽取到DWD层,进行数据合并、时间格式转换等处理,并添加审计字段 指标计算:使用Spark计算相关指标(具体内容未完整展示) 任务要求包括字段处理、分区管理、增量抽取策略等,每个子任务完成后需通过Hive CLI验证并截图提交。

我是网络安全兼技能大赛工程师,专注网络安全技术学习与技能大赛实战!持续分享最新的技术文章,帮你少走弯路,一起在技术赛道上进步~ 1157

大数据“重磅炸弹”:实时计算框架 Flink

上架刚一周多的大数据实时计算引擎 Flink 专栏收获了大量读者的赞誉和期许。甚至有读者愿意熬最深的夜看最佳的文。可见大家是真的很期待 Flink 专栏的内容更新。专...

技术杂谈 680
上一篇: 打怪升级之小白的大数据之旅(七十三)<Flume高级>
下一篇: MaxWell监控本地数据库/RDS数据库的配置与使用
GaryLea
博客等级 码龄8年 489粉丝 102原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值