一、什么是Kafka?
数据工程中最具挑战性的部分之一是如何从不同点收集和传输大量数据到分布式系统进行处理和分析。需要通过消息队列正确地分离大量数据,因为如果一部分数据无法传送,则可以在系统恢复时传输和分析其他数据。有两种消息排队,对于上述目的,它们都是可靠的和异步的。点对点(Point to point)和发布者——订阅者(publisher-subscriber)。下图展示了一个典型的消息系统,其中:消息的生产者负责产生消息;消息的消费者负责处理消息。
Kafka是一个分布式发布——订阅消息传递系统。Kafka快速、可扩展且耐用。它保留主题中的消息源。生产者将数据写入主题,消费者从主题中读取数据。
Zookeeper需要覆盖Kafka生态系统,因此有必要下载它,更改其属性并最终设置环境。在运行Zookeeper之后,应该下载Kafka,然后开发人员可以借助一些指令创建代理,集群和主题。
二、消息队列的分类
- 点对点(Queue)
在点对点或一对一中,有一个发件人和正在监听发件人的多个消费者。当一个消费者从队列收到消息时,该特定消息将从队列中消失,而其他消费者无法获得该消息。
- 发布和订阅系统(Topic)
在发布者——订阅者中,发布者向同时收听发布者的多个消费者或订阅者发送消息,并且每个订阅者可以获得相同的消息。数据应通过数据管道传输,数据管道负责整合来自数据源的数据。
三、Kafka的体系架构
- 主题和发布者
有一个发布者发送消息。消息根据主题进行分类,每个主题都有一个或多个分区,并有自己的偏移地址。例如,如果我们为一个主题分配复制因子= 2,那么Kafka将为每个分区创建两个相同的副本并在群集中找到它。
- 集群和Brokers
Kafka集群包括代理——服务器或节点,每个代理可以位于不同的机器中,并允许订户选择消息。因此,复制就像备份分区一样,这意味着Kafka是持久的,这有助于容错。
- Zookeeper
Kafka集群不保留其自身生态系统的元数据,因为它是无状态的。因此,Kafka依赖于Zookeeper来跟踪元数据。Zookeeper应该首先启动。实际上,Zookeeper是brokers和consumers之间的接口,它的存在是容错的必要条件。Kafka代理负责负载平衡,假设该主题有一个主题和多个分区,每个分区都有一个领导者,定期确认其与Zookeeper的偏移量。因此,如果一个节点或代理失败,Kafka可以从Zookeeper请求的最后一个偏移地址继续操作,因此Zookeeper在崩溃情况下在Kafka恢复中起着至关重要的作用。
四、Kafka单机单Broker的部署
- 部署ZooKeeper
配置/root/training/zookeeper-3.4.6/conf/zoo.cfg文件 dataDir=/root/training/zookeeper-3.4.6/tmp server.1=hadoop112:2888:3888 在/root/training/zookeeper-3.4.6/tmp目录下创建一个myid的空文件 echo 1 > /root/training/zookeeper-3.4.6/tmp/myid 启动ZooKeeper zkServer.sh start 查看ZooKeeper的状态 zkServer.sh status
由于我们部署的是单节点的ZooKeeper,所以ZooKeeper的状态将是Standalone。
- 部署Kafka
修改server.conf文件 broker.id=0 port=9092 log.dirs=/root/training/kafka_2.11-2.4.0/logs/broker0 zookeeper.connect=localhost:2181 启动Kafka bin/kafka-server-start.sh config/server.properties &
- 使用JPS查看后台进程
五、测试Kafka
创建Topic bin/kafka-topics.sh --create --zookeeper bigdata111:2181 --replication-factor 1 --partitions 3 --topic mytopic1 发送消息 bin/kafka-console-producer.sh --broker-list bigdata111:9092 --topic mytopic1 接收消息 消息消费 bin/kafka-console-consumer.sh --bootstrap-server bigdata111:9092 --topic mytopic1 从开始位置消费 bin/kafka-console-consumer.sh --bootstrap-server bigdata111:9092 --from-beginning --topic topicName 显示key消费 bin/kafka-console-consumer.sh --bootstrap-server bigdata111:9092 --property print.key=true --topic mytopic1
相关推荐
赵强老师在传智播客的Oracle课程是专为IT专业人士和对数据库技术感兴趣的学员设计的一系列教学资料,旨在深入浅出地讲解Oracle的核心概念、功能以及实际操作技巧。 在赵强老师的课程中,你可以学到以下几个重要的...
想要好好地学习Oracle数据库的朋友呀,你错过了她就太不值得了。里面有好多的Oracle操作命令可能你都没接触过吧。好了,话不多多说。坚信资料不错!你,值得拥有!OK.还有,之所有要你2分打赏,是我给了你这么好的...
精通JSP编程 作者赵强 编 12-18节
《精通JSP编程》是赵强先生的一部深入解析JSP技术的专业著作,该书针对JSP编程进行了全面且深入的讲解,旨在帮助读者掌握JSP的核心概念和技术,提升Web应用开发能力。根据提供的文件名列表,我们可以推测书籍的章节...
根据提供的文件信息,我们可以推断出这是一份与Java Server Pages (JSP)相关的学习资料介绍,特别是关于赵强编写的《精通JSP编程》这本书的相关信息。下面将基于这个理解来生成相关知识点。 ### 一、JSP基础概念 ...
在Oracle数据库的学习中,SQL优化是一项至关重要的技能,因为它直接影响到数据库的性能和查询效率。以下是一些关于SQL优化的关键知识点: 1. **使用列名代替通配符(*)**:在编写SQL查询时,避免使用`*`来获取所有列...
教程名称:Oracle 数据库赵强视频教程【3天】教程目录:【】Oracle安装与管理、SQL语句(赵强)【】Orcale存储过程jdbc与Orcale大文本操作等(赵强)【】SQL简单查询触发器视图(赵强) 资源太大,传百度网盘了,链接在...
本文将从NoSQL的基础概念出发,逐步深入介绍MongoDB的核心特性、架构、安装、数据操作和管理等方面的知识点。 首先,我们需要了解NoSQL的基本概念。NoSQL指的是“不仅仅是SQL”,它是对于传统关系型数据库的一种...
本资料包“day2013-0110-webLogic配置和集群(赵强).zip”包含了关于WebLogic的配置与集群搭建的详细教程,旨在帮助用户深入了解WebLogic的核心功能和管理技巧。 一、WebLogic基础配置 1. 安装与启动:首先,我们...
进入数字时代,存储技术进一步发展,包括半导体存储(RAM、ROM、Flash)、磁存储(硬盘、软盘、磁带)和光存储(CD、DVD、蓝光),各自具有独特的优缺点,共同构建了丰富的存储体系。 存储技术的今天,已经形成了...
1 体系架构.ppt中可能涵盖了数据库服务器、SGA(System Global Area)、PGA(Program Global Area)和后台进程等概念。 2. 文件管理:Oracle数据库中的文件主要分为数据文件、控制文件和重做日志文件。2 逻辑结构....
微信购物首页用户调研报告主要关注了微信购物首页用户的浏览动机、痛点以及不同用户群体的行为特征。报告通过定性和定量研究方法,包括一对一深访和问卷调查,收集了大量数据,旨在理解用户需求并优化用户体验。...
【标题】"java代码-46 赖赵强"所指的可能是一个关于Java编程的项目或示例,由开发者赖赵强创建。在这个项目中,他可能分享了一段特定的Java代码,用于解决某种问题或者实现一个功能。这个标题暗示了这是一个与Java...
《LoadRunner性能测试巧匠训练营》是一本深入讲解LoadRunner性能测试的教材,由赵强和邹伟伟两位专家共同编著。该资源提供的是完整版,且无需密码即可解压阅读,对于想要学习和提升LoadRunner性能测试技能的人来说,...
这篇PPT学习教案主要针对二年级的学生,旨在教授他们在生活中如何理解和使用大数。课程以实际生活中的例子引入,帮助...在教学过程中,教师可能会引导学生进行估算、比较和排序,培养他们的逻辑思维和问题解决能力。
这篇PPT课件是针对二年级学生的数学课程,主题为“生活中的大数”,旨在帮助孩子们理解和掌握大数的概念,并将其与日常生活中的实例相结合。在课件中,通过展示一些实际的例子来引入大数,例如可见的星星数量、教学...