Apache Kafka的受欢迎程度很高,Kafka拥有充足的就业机会和职业前景。此外,在这个时代拥有kafka知识是一条快速增长的道路。

    所以,在这篇文章中,小编收集了Apache Kafka面试中常见的问题,并提供了答案。因此,如果您希望参加Apache Kafka面试,这是一份不错的指南。这将有助于您成功参加Kafka面试。

问题1:什么是Apache Kafka?

    答:Apache Kafka是一个发布 - 订阅开源消息代理应用程序。这个消息传递应用程序是用“scala”编码的。基本上,这个项目是由Apache软件启动的。Kafka的设计模式主要基于事务日志设计。

问题2:Kafka中有哪几个组件?

    答:Kafka最重要的元素是:

    主题:Kafka主题是一堆或一组消息。

    生产者:在Kafka,生产者发布通信以及向Kafka主题发布消息。

    消费者:Kafka消费者订阅了一个主题,并且还从主题中读取和处理消息。

    经纪人:在管理主题中的消息存储时,我们使用Kafka Brokers。

问题3:解释偏移的作用。

    答:给分区中的消息提供了一个顺序ID号,我们称之为偏移量。因此,为了唯一地识别分区中的每条消息,我们使用这些偏移量。

问题4:什么是消费者组?

    答:消费者组的概念是Apache Kafka独有的。基本上,每个Kafka消费群体都由一个或多个共同消费一组订阅主题的消费者组成。

问题5:ZooKeeper在Kafka中的作用是什么?

    答:Apache Kafka是一个使用Zookeeper构建的分布式系统。虽然,Zookeeper的主要作用是在集群中的不同节点之间建立协调。但是,如果任何节点失败,我们还使用Zookeeper从先前提交的偏移量中恢复,因为它做周期性提交偏移量工作。

问题6:没有ZooKeeper可以使用Kafka吗?

    答:绕过Zookeeper并直接连接到Kafka服务器是不可能的,所以答案是否定的。如果以某种方式,使ZooKeeper关闭,则无法为任何客户端请求提供服务。

问题8:为什么Kafka技术很重要?

    答:Kafka有一些优点,因此使用起来很重要:

    高吞吐量:我们在Kafka中不需要任何大型硬件,因为它能够处理高速和大容量数据。此外,它还可以支持每秒数千条消息的消息吞吐量。

    低延迟:Kafka可以轻松处理这些消息,具有毫秒级的极低延迟,这是大多数新用例所要求的。

    容错:Kafka能够抵抗集群中的节点/机器故障。

    耐久性:由于Kafka支持消息复制,因此消息永远不会丢失。这是耐久性背后的原因之一。

    可扩展性:卡夫卡可以扩展,而不需要通过添加额外的节点而在运行中造成任何停机。

问题9:Kafka的主要API有哪些?

    答:Apache Kafka有4个主要API:(1)生产者API;(2)消费者API;(3)流 API;(4)连接器API。

问题10:什么是消费者或用户?

    答:Kafka消费者订阅一个主题,并读取和处理来自该主题的消息。此外,有了消费者组的名字,消费者就给自己贴上了标签。换句话说,在每个订阅使用者组中,发布到主题的每个记录都传递到一个使用者实例。确保使用者实例可能位于单独的进程或单独的计算机上。

问题11:解释领导者和追随者的概念。

    答:在Kafka的每个分区中,都有一个服务器充当领导者,0到多个服务器充当追随者的角色。

问题12:是什么确保了Kafka中服务器的负载平衡?

    答:由于领导者的主要角色是执行分区的所有读写请求的任务,而追随者被动地复制领导者。因此,在领导者失败时,其中一个追随者接管了领导者的角色。基本上,整个过程可确保服务器的负载平衡。

问题13:副本和ISR扮演什么角色?

    答:基本上,复制日志的节点列表就是副本。特别是对于特定的分区。但是,无论他们是否扮演领导者的角色,他们都是如此。

    此外,ISR指的是同步副本。在定义ISR时,它是一组与领导者同步的消息副本。

问题14:为什么Kafka的复制至关重要?

    答:由于复制,我们可以确保发布的消息不会丢失,并且可以在发生任何机器错误、程序错误或频繁的软件升级时使用。

问题15:如果副本长时间不在ISR中,这意味着什么?

    答:简单地说,这意味着跟随者不能像领导者收集数据那样快速地获取数据。

问题16:LEO 、HW、LSO、LW等分别代表什么

    LEO: 是 LogEndOffset 的简称,代表当前日志文件中下一条

    HW: 水位或水印(watermark)一词,也可称为高水位(high watermark),通常被用在流式处理领域(比如Apache Flink、Apache Spark等),以表征元素或事件在基于时间层面上的进度。 在Kafka中,水位的概念反而与时间无关,而是与位置信息相关。

    严格来说,它表示的就是位置信息,即位移(offset)。 取 partition 对应的 ISR中 最小的 LEO 作为 HW,consumer 最多只能消费到 HW 所在的位置上一条信息。

    LSO: 是 LastStableOffset 的简称, 对未完成的事务而言,LSO 的值等于事务中第一条消息的位置(firstUnstableOffset),对已完成的事务而言,它的值同 HW 相同

    LW:Low Watermark 低水位, 代表 AR 集合中最小的 logStartOffset 值。

问题17:在生产者中,何时发生QueueFullException?

    答:每当Kafka生产者试图以代理的身份在当时无法处理的速度发送消息时,通常都会发生QueueFullException。但是,为了协作处理增加的负载,用户需要添加足够的代理,因为生产者不会阻止。

问题18:解释Kafka Producer API的作用。

    答:允许应用程序将记录流发布到一个或多个Kafka主题的API就是我们所说的Producer API。

问题19:Kafka和Flume之间的主要区别是什么?

    答:Kafka和Flume之间的主要区别是:

    工具类型:

    Apache Kafka——Kafka是面向多个生产商和消费者的通用工具。

    Apache Flume——Flume被认为是特定应用程序的专用工具。

    复制功能:

    Apache Kafka——Kafka可以复制事件。

    Apache Flume——Flume不复制事件。

问题20:Apache Kafka是分布式流处理平台吗?如果是,你能用它做什么?

    答:毫无疑问,Kafka是一个流处理平台。它可以帮助:

    1.轻松推送记录

    2.可以存储大量记录,而不会出现任何存储问题

    3.它还可以在记录进入时对其进行处理。

问题21:你能用Kafka做什么?

    答:它可以以多种方式执行,例如:

    >>为了在两个系统之间传输数据,我们可以用它构建实时的数据流管道。

    >>另外,我们可以用Kafka构建一个实时流处理平台,它可以对数据快速做出反应。

问题22:在Kafka集群中保留期的目的是什么?

    答:保留期限保留了Kafka群集中的所有已发布记录。它不会检查它们是否已被消耗。此外,可以通过使用保留期的配置设置来丢弃记录。而且,它可以释放一些空间。

问题23:解释Kafka可以接收的消息最大为多少?

    答:Kafka可以接收的最大消息大小约为1000000字节。

问题24:传统的消息传递方法有哪些类型?

    答:基本上,传统的消息传递方法有两种,如:

    排队:这是一种消费者池可以从服务器读取消息并且每条消息转到其中一个消息的方法。

    发布-订阅:在发布-订阅中,消息被广播给所有消费者。

问题25:ISR在Kafka环境中代表什么?

    答:ISR指的是同步副本。这些通常被分类为一组消息副本,它们被同步为领导者。

问题26:什么是Kafka中的地域复制?

    答:对于我们的集群,Kafka MirrorMaker提供地理复制。基本上,消息是通过MirrorMaker跨多个数据中心或云区域复制的。因此,它可以在主动/被动场景中用于备份和恢复;也可以将数据放在离用户更近的位置,或者支持数据位置要求。

问题27:解释多租户是什么?

    答:我们可以轻松地将Kafka部署为多租户解决方案。但是,通过配置主题可以生成或使用数据,可以启用多租户。此外,它还为配额提供操作支持。

问题28:消费者API的作用是什么?

    答:允许应用程序订阅一个或多个主题并处理生成给它们的记录流的API,我们称之为消费者API。

问题29:解释流API的作用?

    答:一种允许应用程序充当流处理器的API,它还使用一个或多个主题的输入流,并生成一个输出流到一个或多个输出主题,此外,有效地将输入流转换为输出流,我们称之为流API。

问题30:连接器API的作用是什么?

    答:一个允许运行和构建可重用的生产者或消费者的API,将Kafka主题连接到现有的应用程序或数据系统,我们称之为连接器API。

问题31:解释生产者是什么?

    答:生产者的主要作用是将数据发布到他们选择的主题上。基本上,它的职责是选择要分配给主题内分区的记录。

问题32:比较RabbitMQ与Apache Kafka

    答:Apache Kafka的另一个选择是RabbitMQ。那么,让我们比较两者:

    (1)功能:

    Apache Kafka– Kafka是分布式的、持久的和高度可用的,这里共享和复制数据

    RabbitMQ中没有此类功能

    (2)性能速度:

    Apache Kafka–达到每秒100000条消息。

    RabbitMQ–每秒20000条消息。

问题33:Kafka 分区的目的?

    分区对于 Kafka 集群的好处是: 实现负载均衡。 分区对于消费者来说,可以提高并发度,提高效率。

问题34:为什么要使用Apache Kafka集群?

    答:为了克服收集大量数据和分析收集数据的挑战,我们需要一个消息队列系统。因此Apache Kafka应运而生。其好处是:

    只需存储/发送事件以进行实时处理,就可以跟踪Web活动。通过这一点,我们可以发出警报并报告操作指标。

    此外,我们可以将数据转换为标准格式。此外,它允许对主题的流数据进行连续处理。由于它的广泛使用,它秒杀了竞品,如ActiveMQRabbitMQ等。

问题35:解释术语“Log Anatomy”

    答:我们将日志视为分区。基本上,数据源将消息写入日志。其优点之一是,在任何时候,都有一个或多个消费者从他们选择的日志中读取数据。下面的图表显示,数据源正在写入一个日志,而用户正在以不同的偏移量读取该日志。

问题36:Kafka中的数据日志是什么?

    答:我们知道,在Kafka中,消息会保留相当长的时间。此外,消费者还可以根据自己的方便进行阅读。尽管如此,有一种可能的情况是,如果将Kafka配置为将消息保留24小时,并且消费者可能停机超过24小时,则消费者可能会丢失这些消息。

    但是,我们仍然可以从上次已知的偏移中读取这些消息,但仅限于消费者的部分停机时间仅为60分钟的情况。此外,关于消费者从一个话题中读到什么,Kafka不会保持状态。

问题37:解释如何调整Kafka以获得最佳性能。

    答:因此,调优Apache Kafka的方法是调优它的几个组件:

    (2)调整Kafka生产者;

    (2)Kafka代理调优;

    (3)调整Kafka消费者;

问题38:Kafka 高效文件存储设计特点

    (1)Kafka把topic中一个parition大文件分成多个小文件段,通过多个小文件段,就容易定期清除或删除已经消费完文件,减少磁盘占用。

    (2)通过索引信息可以快速定位message和确定response的最大大小。

    (3)通过index元数据全部映射到memory,可以避免segment file的IO磁盘操作。

    (4)通过索引文件稀疏存储,可以大幅降低index文件元数据占用空间大小

编辑推荐:







欢迎关注网站微信公众号:「面试大全」

点赞 0
死踩 0
继续阅读相关文章

发表评论 点击 登录 微信,亮头像秀观点,已发布 0