在线客服
扫描二维码
下载博学谷APP扫描二维码
关注博学谷微信公众号
Kafka是一个分布式、支持分区的、多副本的,基于zookeeper协调的分布式消息系统,它的最大的特性就是可以实时的处理大量数据以满足各种需求场景。在大数据面试中,Kafka也是一个必考点。因此小编汇总了历年来比较经典常见的大数据Kafka进阶面试题。
一、Kafka的介绍
1、什么是Kafka?
Apache Kafka 是一个开源消息系统,由 Scala 写成。是由 Apache 软件基金会开发的一个开源消息系统项目。Kafka 最初是由 LinkedIn 开发,并于 2011 年初开源。2012 年 10 月从 Apache Incubator 毕业。该项目的目标是为处理实时数据提供一个统一、高通量、低等待的平台。
Kafka 是一个分布式消息队列:生产者、消费者的功能。它提供了类似于JMS 的特性,但是在设计实现上完全不同,此外它并不是 JMS 规范的实现。Kafka 对消息保存时根据 Topic 进行归类,发送消息者称为 Producer,消息接受者称为 Consumer,此外 kafka 集群有多个 kafka 实例组成,每个实例(server) 成为 broker。无论是 kafka 集群,还是 producer 和 consumer 都依赖于 zookeeper 集群保存一些 meta 信息,来保证系统可用性。
2、Kafka与传统消息系统的区别
(1)在架构模型方面
RabbitMQ 遵循 AMQP 协议,RabbitMQ 的 broker 由 Exchange,Binding,queue组成,其中 exchange 和 binding 组成了消息的路由键;客户端 Producer 通过连接channel 和server 进行通信,Consumer 从queue 获取消息进行消费(长连接,queue有消息会推送到 consumer 端,consumer 循环从输入流读取数据)。rabbitMQ 以broker 为中心;有消息的确认机制。kafka 遵从一般的 MQ 结构,producer,broker,consumer,以 consumer 为中心,消息的消费信息保存的客户端 consumer 上,consumer 根据消费的点,从broker 上批量 pull 数据;无消息确认机制。
(2)在吞吐量
Kafka具有高的吞吐量,内部采用消息的批量处理,zero-copy 机制,数据的存储和获取是本地磁盘顺序批量操作,具有 O(1)的复杂度,消息处理的效率很高。rabbitMQ 在吞吐量方面稍逊于 kafka,他们的出发点不一样,rabbitMQ 支持对消息的可靠的传递,支持事务,不支持批量的操作;基于存储的可靠性的要求存储可以采用内存或者硬盘。
(3)在可用性方面
rabbitMQ 支持 miror 的 queue,主 queue 失效,miror queue 接管。kafka 的 broker 支持主备模式。
(4)在集群负载均衡方面
Kafka采用 zookeeper 对集群中的 broker、consumer 进行管理,可以注册 topic 到 zookeeper 上;通过 zookeeper 的协调机制,producer 保存对应 topic 的 broker 信息,可以随机或者轮询发送到 broker 上;并且 producer 可以基于语义指定分片,消息发送到 broker 的某分片上。
3、Kafka与 activeMQ 的区别。
Topic:主题,即一个标识,类似于 map 里面的 key,通过它来给消息分类, 消息根据 Topic 进行归类。
共同点:都有生产者和消费者两大组件,生产者发送消息给各自的服务器,(发送消息是就会定义一个 topic)并进行存储。
不同点:activeMQ:消费者会提前订阅自己需要的 topic,当该 topic 中有了消息以后,activeMQ 服务器会发送消息给消费者,然后消费者再去服务器中拿到自己想要的数据。
Kafka:消费者(指定 topic)会定时去 kafka 服务器中拿该 topic 中的数据。
4、Kafka的组件介绍
producer:生产者,主要用于我们的消息的生产,通过 producer 将我们的消息 push 到Kafka集群当中。
topic:某一类消息的高度抽象,可以理解成某一类消息的集合,一类消息,每个topic 将被分成多个 partition(区),在集群的配置文件中配置。
broker:Kafka的服务器,一个 broker 就代表一个服务器的节点partition:分区的概念,一个 topic 当中的消息,可以拆分成多个 partition 分区,存放在多个不同的服务器上,实现数据存放的横向扩展。
repliaction:副本,所有的 partition 都可以指定存放几个副本,做到数据的冗余,保证数据的安全。
segment:每个 partiiton 由多个 segment 组成,segment 又包含了两部分,一个.log 文件,一个是.index 文件。
.log:存放我们的日志文件,所有的数据,最后都以日志文件的形式存放到了Kafka集群当中。
.index :索引文件,所有的.log 文件的索引都存放在了这里,便于我们查找某一条日志文件的快速。
consumer:消费者,消费我们 kafka 集群当中的消息, 问题:如何知道消费者消费到了哪一条消息来了?可以通过记录的方式,记下来每次我们消费的位置。
第一种记录方式:Kafka的本地文件系统,比较慢,对应 kafka 的一个慢速消费的方式。
第二种记录方式:zookeeper 当中的节点数据记录,比较快,对应 kafka 的一个快速消费的方式。
offset:偏移量,就是记录的我们消费到了哪一条数据来了。发布者发到某个 topic 的消息会被均匀的分布到多个 part 上,broker 收到发布消息往对应 part 的最后一个 segment 上添加该消息。
以上就是大数据Kafka进阶面试题汇总。还没有看够的同学可以报名博学谷的大数据就业班,有线上的高级讲师和就业老师,专门为大家培训大数据面试的相关内容,帮助大家顺利拿到offer。
— 申请免费试学名额 —
在职想转行提升,担心学不会?根据个人情况规划学习路线,闯关式自适应学习模式保证学习效果
讲师一对一辅导,在线答疑解惑,指导就业!
相关推荐 更多
怎样学习spark
现在一提到云计算大数据,就会想到spark。要怎样学习spark呢?首先我们需要简单了解一下它:Spark 是一种与 Hadoop 相似的开源集群计算环境,甚至在某些工作负载方面表现得更加优越。Spark采用一个统一的技术堆栈解决了云计算大数据的如流处理、图技术、机器学习、NoSQL查询等方面的所有核心问题,具有非常完善的生态系统,这直接奠定了其一统云计算大数据领域的霸主地位;
6463
2019-08-06 10:20:49
计算机大数据应用技术就业前景怎么样?
计算机大数据应用技术就业前景怎么样?作为目前最为广泛和热门的新兴技术,计算机大数据应用技术的意义不在于存储海量的的数据信息,而在于对这些数据进行专业化处理,从而更好地辅助工作中的各项决策。因此,掌握了计算机大数据应用技术,其就业前景自然广阔明亮无比。关于大数据的更多就业方向选择,我们可以看看以下的具体分析。
12237
2020-01-14 15:33:07
Zookeeper基本知识总结
本文为大家整理总结了Zookeeper的基本知识,主要内容有Zookeeper概述、ZooKeeper特性、ZooKeeper集群角色以及ZooKeeper集群搭建。下面一起来看看大数据学习中的干货知识吧~
4404
2020-06-11 19:12:50
学习云计算需要学什么?
学习云计算需要学什么?云计算对于学历有时并没有硬性要求,一般都是专科,本科。但专业能力强对于学历要求就没那么严格了,因为云计算市场现在人才比较紧缺。学习云计算工作的方向比较多,像计算机网络系统研发、软件测试与开发、办公自动化处理、网络管理与维护、网页制作和面向云计算相关的行业都是学习云计算工作的方向。
5405
2020-07-09 14:59:07
学大数据技术与应用的女生多吗?适合吗?
随着人工智能的发展,对于大数据方面的人才需要越来越大,高校里面选择大数据技术的人不在少数,女生适不适合学大数据技术与应用这个问题跟女生适不适合学IT技术一样,没有性别限制,女生更适合数据分析方便的工作。
8602
2020-09-23 10:31:38
热门文章
- 前端是什么
- 前端开发的工作职责
- 前端开发需要会什么?先掌握这三大核心关键技术
- 前端开发的工作方向有哪些?
- 简历加分-4步写出HR想要的简历
- 程序员如何突击面试?两大招带你拿下面试官
- 程序员面试技巧
- 架构师的厉害之处竟然是这……
- 架构师书籍推荐
- 懂了这些,才能成为架构师 查看更多
扫描二维码,了解更多信息