版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单元10分布式消息发布订阅系统Kafka学习目标知识目标技能目标1.了解Kafka的基本概念及应用场景。2.掌握Kafka架构。3.掌握KafkaProducer和Consumer关键流程。4.掌握Kafka的安装与配置方法,并理解参数的含义。1.能完成Kafka的安装与配置。2.能完成Kafka的启动与关闭操作。3.能完成KafkaTopic的创建与删除操作。4.能完成KafkaProducer和Consumer操作。5.能完成Kafka读/写,以及分区和偏移量查看等操作。单元任务任务10.1Kafka技术原理任务10.2Kafka的安装与应用
(1)认识Kafka。(2)Kafka应用场景。(3)Kafka架构与功能。(4)Producer。(5)Consumer。(6)Topic。本任务学习Kafka的基本概念及应用场景。通过Kafka拓扑结构的学习,了解Kafka拓扑结构中各功能组件(如生产者、消费者、Broker和ZooKeeper)的工作原理,理解Kafka主题(Topic)、分区(Partition)和分区偏移量等的概念。【任务描述】【关键步骤】任务10.1Kafka技术原理
(7)Partition。(8)Kafka分区偏移量。10.1.1认识Kafka10.1.2
Kafka应用场景10.1.3
Kafka架构与功能10.1.4
Producer10.1.5
Consumer10.1.6
Topic10.1.7
Partition10.1.8
Kafka分区偏移量任务10.1Kafka技术原理10.1.1认识KafkaKafka是一个高性能的分布式消息发布订阅系统,能够为发送的消息数据提供冗余备份机制,同时能够对发布的主题进行分类,主要用于处理活跃的数据流。其主要特性如下。(1)提供对消息可靠的持久化机制,保证数据不丢失。(2)高吞吐量。Kafka能够在普通硬件上每秒处理数十万条消息。(3)高扩展性。Kafka支持分布式架构,同时支持多个相同的组件并存;无须停机,通过增加机器和配置即可完成Kafka的扩展。(4)Kafka支持通过Hadoop并行加载数据。(5)Kafka中的消息处理状态由消费端维护,允许消费者以灵活的方式处理消息,其中包括在消费失败时重新组织消费。10.1.1认识KafkaKafka中的一些重要概念如下。(1)Broker:在Kafka中,任何运行的实例和进程都可以被称为Broker。(2)Topic:主题,主要用于标记消息发送和接收的通道,本质上是一个消息队列。(3)Partition:分区,Kafka能够保证消费者在分区上的消费一定是有序的。(4)Producer:Kafka中消息的生产者。(5)Consumer:Kafka中消息的消费者。(6)ConsumerGroup:消费组,多个消费者组成一个消费组。在Kafka中,同一个消费组能够获得一个Topic中的全量消息,而获得Topic全量消息的消费组中的每个消费者通过竞争获得消息(每个消费者只能获得一条消息进行消费)。10.1.1认识Kafka10.1.2Kafka应用场景10.1.3
Kafka架构与功能10.1.4
Producer10.1.5
Consumer10.1.6
Topic10.1.7
Partition10.1.8
Kafka分区偏移量任务10.1Kafka技术原理10.1.2Kafka应用场景Kafka凭消息持久化、高吞吐、实时特性,适用于离线与实时消息消费,尤在网站活性跟踪、系统运营数据聚合、日志收集等场景。用户访问日志、API数据可存服务器或发数据中心分析。多服务器传数据至数据中心需缓冲区,Kafka高性能、分布式、持久化、高扩展性,且为Hadoop生态部分,广泛应用于大数据实时计算,成大数据平台首选数据缓冲区。大数据实时计算系统的简易流程如图10.1.1所示。(1)数据采集系统采集数据源,此处的数据采集系统可以是Flume等。(2)数据采集系统将采集到的数据发送到数据缓冲区中,此处的数据缓冲区可以是Kafka等。(3)数据缓冲区以推或拉的方式将数据传输到数据存储中心,此处的数据存储中心可以是支持高速存取的数据库,如HBase。图10.1.1大数据实时计算系统的简易流程10.1.2Kafka应用场景(4)数据分析中心对数据存储中心的数据进行分析和计算,此处的数据分析中心可以是Storm、Spark或Flink。(5)数据缓冲区不经过数据存储中心,直接将数据发送给数据分析中心,由数据分析中心对数据进行分析和计算。(6)数据分析中心将分析和计算出的最终结果写入数据存储系统,此处的数据存储系统可以是HDFS、HBase或其他关系数据库等。在实际工作中,Kafka往往会接收Flume或其他应用发送过来的数据,并将数据传送到Storm中进行分析和处理,分析和处理的结果将被存储到数据存储系统中。10.1.1认识Kafka10.1.2Kafka应用场景10.1.3Kafka架构与功能10.1.4
Producer10.1.5
Consumer10.1.6
Topic10.1.7
Partition10.1.8
Kafka分区偏移量任务10.1Kafka技术原理10.1.3Kafka架构与功能Kafka集群含Producer、Broker、Consumer和ZooKeeper。ZooKeeper管配置、选leader、再均衡。Producer推消息至Broker,Consumer拉消息。拓扑见图。(1)Broker:Kafka集群包含一个或多个服务实例,这些服务实例被称为Broker。(2)Producer (生产者):负责发布消息到KafkaBroker。(3)Consumer(消费者):消息消费者,是从KafkaBroker读取消息的客户端。图10.1.2
Kafka拓扑结构10.1.1认识Kafka10.1.2Kafka应用场景10.1.3Kafka架构与功能10.1.4Producer10.1.5
Consumer10.1.6
Topic10.1.7
Partition10.1.8
Kafka分区偏移量任务10.1Kafka技术原理10.1.4ProducerKafka中的Producer主要用于接收其他系统发送过来的数据,并向Kafka集群中的某个Topic发送消息。其中,每个消息都被封装成一个ProducerRecord对象,Producer需要指定消息发送的Topic和消息发送的数据,还可以指定消息的分区和消息的Key。Producer发送消息的流程如下。(1)Producer将消息封装成ProducerRecord对象并发送数据。(2)Producer发送的消息由序列化器执行序列化操作,便于数据在整个Kafka集群之间进行传输。(3)发送的消息数据如果需要经过Kafka的分区器进行分区,或者发送的消息数据已经被指定了分区,则消息数据会被发送到指定分区下的Topic中;如果不需要经过Kafka的分区器进行分区,则消息数据会被发送到相应的Topic中。(4)消息数据被写入Broker。(5)如果消息数据被成功写入Broker,则向Producer返回RecordMetaData对象。RecordMetaData对象中封装了元数据,包含Topic信息、分区信息、消息在分区中的偏移量(Offset)信息等。(6)如果消息写入Broker失败,则判断是否需要重试。如果需要重试,则重新将消息发送到Topic中,并写入Broker;如果不需要重试,则直接向Producer返回写入失败的消息。10.1.1认识Kafka10.1.2Kafka应用场景10.1.3Kafka架构与功能10.1.4Producer10.1.5Consumer10.1.6
Topic10.1.7
Partition10.1.8
Kafka分区偏移量任务10.1Kafka技术原理10.1.5Consumer在Producer和Consumer模型中,往往一个Producer会对应多个Consumer。在Kafka中,多个Consumer可以形成一个(ConsumerGroup)来订阅Topic消息,并对消息进行分类。同时,Consumer采用Pull(拉)模式从Broker读取数据进行消费,这样可以由Consumer控制消息消费的速率。Consumer消费数据的总体流程:Consumer连接指定TopicPartition所在的LeaderBroker,用主动获取方式从Kafka获取消息。10.1.1认识Kafka10.1.2Kafka应用场景10.1.3Kafka架构与功能10.1.4Producer10.1.5Consumer10.1.6Topic10.1.7
Partition10.1.8
Kafka分区偏移量任务10.1Kafka技术原理10.1.6Topic每条发布到Kafka的消息都有一个类别,这个类别被称为Topic,也可以理解为一个存储消息的队列。例如,天气作为一个Topic,每天的温度消息就可以存储在“天气”这个队列中。图10.1.3中展示了Kafka的一个Topic,每个格子代表一条消息。Producer产生的消息被逐条放到Topic的末尾。Consumer按照从左至右的顺序读取消息,使用Offset来记录读取位置。图10.1.3
KafkaTopic10.1.1认识Kafka10.1.2Kafka应用场景10.1.3Kafka架构与功能10.1.4Producer10.1.5Consumer10.1.6Topic10.1.7Partition10.1.8
Kafka分区偏移量任务10.1Kafka技术原理10.1.7Partition每个Topic被分成多个Partition(分区),每个Partition在存储层面对应一个Log文件,Log文件中记录了所有的消息数据。引入Partition机制,保证了Kafka的高吞吐能力,因为Topic的多个Partition分布在不同的Kafka节点上,所以多个客户端(Producer和Consumer)可以通过并发访问不同节点来对一个Topic进行消息的读/写。每个Topic都由一个或多个Partition构成。每个Partition都是有序且不可变的消息队列。KafkaPartition如图10.1.4所示。图10.1.4
KafkaPartition10.1.7PartitionTopic的Partition数量可以在创建时配置。Partition数量决定了每个ConsumerGroup中并发Consumer的最大数量。图10.1.5展示了两个ConsumerGroup消费Partition消息的情况,ConsumerGroupA有两个Consumer来消费4个Partition中的消息。ConsumerGroupB有4个Consumer来消费4个Partition中的消息。图10.1.5
ConsumerGroup并发消费消息从图10.1.5中可以看出,不同ConsumerGroup下的Consumer可以消费相同Partition中的消息;同一ConsumerGroup下的Consumer只能消费不同Partition中的消息。10.1.1认识Kafka10.1.2Kafka应用场景10.1.3Kafka架构与功能10.1.4Producer10.1.5Consumer10.1.6Topic10.1.7Partition10.1.8Kafka分区偏移量任务10.1Kafka技术原理10.1.8Kafka分区偏移量每条消息在文件中的位置被称为Offset(偏移量),Offset是一个long型数字,唯一标记一条消息。消费者通过Offset、Partition、Topic来跟踪记录,如图10.1.6所示。图10.1.6
Kafka分区偏移量任何发布到Partition中的消息都会被直接追加到Log文件的尾部。(1)Kafka安装。(2)Kafka操作应用。本任务介绍分布式发布订阅消息系统Kafka的安装与部署方法,演示Kafka的安装与部署过程,并确保ZooKeeper已安装并启动。同时介绍KafkaShell命令的运用。【任务描述】【关键步骤】任务10.2Kafka的安装与应用
10.2.1
Kafka安装10.1.2
Kafka操作应用任务10.2Kafka的安装与应用10.2.1Kafka安装第1步:下载并上传安装包。下载kafka_2.11-2.4.0.tgz安装包。将下载的Kafka安装包上传到主节点master的/root目录下。第2步:解压缩安装包。在主节点master上解压缩Kafka安装包,命令如下:将kafka_2.11-2.1.1目录重命名为kafka,命令如下:第3步:配置环境变量。配置环境变量,修改/etc/profile文件,命令如下:10.2.1Kafka安装在文件末尾添加如下环境变量:保存并退出。使环境变量生效,命令如下:分发环境变量到其余节点上,命令如下:使slave1、slave2节点上的环境变量生效。在slave1、slave2节点上分别执行如下命令:第4步:修改配置文件。进入配置文件目录,修改配置文件perties,命令如下:10.2.1Kafka安装在文件中添加以下代码:保存并退出。第5步:分发安装文件。分发安装文件到其余节点上,命令如下:切换窗口,在slave1、slave2节点上分别修改配置文件,命令如下:在slave1节点上修改broker.id=1,在slave2节点上修改broker.id=2。第6步:启动Kafka集群。首先启动ZooKeeper服务。在master、slave1、slave2节点上分别执行如下命令:10.2.1Kafka安装在master节点上启动Kafka服务(直接启动或后台启动),命令如下:启动Kafka服务的过程如图10.2.1所示。切换窗口,在slave1、slave2节点上分别启动Kafka服务,命令如下:图10.2.1启动Kafka服务的过程10.2.1Kafka安装在master节点上启动Kafka服务(直接启动或后台启动),命令如下:启动Kafka服务的过程如图10.2.1所示。切换窗口,在slave1、slave2节点上分别启动Kafka服务,命令如下:图10.2.1启动Kafka服务的过程注意:Kafka服务关闭速度较慢,需要耐心等待。必须确保ZooKeeper已启动,否则Kafka将无法运行。若Kafka启动后,ZooKeeper未启动,则首先用jps命令查看Kafka进程ID,再用kill-9<进程ID>的方式结束进程。10.2.1Kafka安装设置为后台启动时需先关闭Kafka服务,然后分别在master、slave1、slave2节点上执行开启命令:查看进程,命令如下:在master、slave1、slave2节点上运行的Java进程信息如图10.2.2所示。从图10.2.2中可以看出,三个节点上都开启了Kafka和QuorumPeerMain进程。图10.2.2后台启动Kafka后三个节点上运行的Java进程信息10.2.1Kafka安装第7步:验证Kafka集群。在master节点上创建Kafka的Topic,命令如下:执行结果如图10.2.3所示。在master节点上启动Consumer命令行界面,启动后进程等待Producer消息输入,命令如下:在slave1节点上启动Producer命令行界面,命令如下:输出:图10.2.3
mytopic1创建成功10.2.1Kafka安装上述输出表示KafkaProducer启动成功,>用于提示用户输入数据。slave1Producer启动后,输入以下内容进行验证:在master节点的Consumer命令行界面中进行查看,输出如图10.2.4所示。按Ctrl+C快捷键可退出Producer和Consumer命令行界面。若需关闭Kafka服务,则在所有节点上执行如下命令:图10.2.4
KafkaConsumer成功消费数据10.2.1
Kafka安装10.1.2Kafka操作应用任务10.2Kafka的安装与应用
Kafka读/写操作第1步:创建Topic。在master节点上创建mytopic2,命令如下:执行结果如图10.2.5所示。第2步:查看Topic信息。在master节点上查看Topic信息,命令如下:执行结果如图10.2.6所示。图10.2.5创建mytopic2图10.2.6查看Topic信息
Kafka读/写操作第3步:运行Producer。在master节点上运行Producer,命令如下:第4步:运行Consumer。在slave1节点上运行Consumer,命令如下:第5步:测试Kafka。单击master窗口,回到Producer命令行界面,输入以下内容:masterProducer命令行界面如图10.2.7所示。
Kafka读/写操作单击slave1窗口,回到Consumer命令行界面,查看页面输出结果,如图10.2.8所示。至此,已确认Kafka可正常使用。图10.2.7
masterProducer命令行界面图10.2.8
slave1Consumer命令行界面
Kafka其他操作单击master窗口,作为Producer,执行Producer代码;单击slave2窗口,作为Consumer,执行Consumer代码。第1步:查看Topic信息。在master窗口中查看Topic信息,命令如下:执行结果如图10.2.9所示。图10.2.9查看Topic信息备注:图10.2.9中第一行显示Partition的总体情况,以下的每一行分别给出一个Partition中的信息。Leader:在给出的所有Partition中负责读/写的节点,每个节点都有可能成为Leader。Replicas:显示给定Partition所有副本所存储节点的节点列表,不管该节点是否是Leader或者是否存活。Isr:副本都已同步的节点集合,这个集合中的所有节点都是存活状态,并且与Leader同步。
Kafka其他操作第2步:查看分区偏移量。(1)查看初始分区偏移量,命令如下:执行结果如图10.2.10所示。在图10.2.10中,“mytopic2:0:4”表示mytopic2的分区号为0,偏移量为4。(2)在master窗口中,运行Producer,命令如下:图10.2.10查看初始分区偏移量
Kafka其他操作输入以下6行内容:(3)在slave2窗口中,运行Consumer,命令如下:执行结果如图10.2.11所示。图10.2.11
slave2Consumer命令行界面
Kafka其他操作(4)回到master窗口,按Ctrl+Z快捷键结束Producer的运行,输入以
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- pe管道施工方案
- 初中八年级科学(化学模块):相对原子质量与相对分子质量的计算及应用教学设计
- 2026营养指导员题库及答案
- 管道安装安全施工方案
- 护理护理查房护理内涵建设查房
- 2026年监理工程师考试建设工程监理基本理论与相关法规试题与答案
- 建筑工地救援安全教育培训计划
- 部编版语文小学五年级上册期末模拟试题及答案
- 供水管道工程施工方案及技术措施
- GBT 47600.2-2026《电子商务交易产品信息描述 第2部分:旅游服务》
- 2026年高考全国一卷数学题及参考答案
- 银行信贷经理岗位面试常见问题及答案
- 恒丰银行招聘笔试题及答案
- 2024-2025学年安徽省合肥市第五十中学七年级下学期期末道德与法治试题
- 越野知识培训课件
- 2025年广东省(中小学、幼儿园)教师招聘考试笔试试题及答案解析
- 施工人员安全法教育培训课件
- (完整版)铁艺护栏施工方案
- GJB2351A-2021航空航天用铝合金锻件规范
- 发泡陶瓷构件安装知识培训课件
- 内培茶叶知识培训课件
评论
0/150
提交评论