大数据高级阶段面试题(实时)

2024-05-07 09:28

本文主要是介绍大数据高级阶段面试题(实时),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.Kafka的producer如何实现幂等性?

①开启幂等性,将Idempotent设置为true

②将ack设置为-1,确保相同的消息只会发送一次,避免重新发送

2.Kafka的ISR和OSR的作⽤分别是什么?

ISR是副本和领导者的数据和状态要保持一致,如果出现网络波动导致领导者宕机了,ISR会选择一个副本成为新的领导者,保证数据的高可用。

OSR是指副本和领导者的数据和状态可能因为网络波动导致没有保持一致,OSR需要追上领导者的数据

3.Kafka⽣产者如何实现幂等性写⼊和事务?

幂等性:

①开启幂等性,将Idempotent设置为true

②将ack设置为-1,确保相同的消息只会发送一次,避免重新发送

事务:Kafka开启事务,必须要先开启幂等性

①生产者使用事务之前,必须先自定义一个事务id,kafka根据事务id分配事务协调器

②事务协调器会返回一个pid

③生产者开始发送数据到topic,不过这些数据和之前的数据不同,他们都带着一个字段,表示自己是事务信息

④当生产者消息发送完毕,会向事务协调器发送commit请求或者是abort请求

⑤事务协调器收到请求后会持久化transcation_state中,transcation_state默认有50个分区,每个分区负责一部分事务

⑥事务协调器后台会跟topic通信,告诉他们事务是成功了还是失败了

4.Kafka消费者位置提交⽅式有哪些?分别什么场景下使⽤?

1.自动提交:

消费者定期将偏移量提交到kafka,提交的频率由消费者配置的参数控制,适用于一些对数据一致性要求不高的场景,但可能导致消息被重复处理或者是丢失

2.手动同步提交:

消费者在消费完一批数据之后,调用commitSync方法来提交偏移量,这种方式可以确保消息的一次性处理,适用于对数据一致性要求较高的场景,但可能会影响消费者的吞吐量

3.手动异步提交:

消费者在消费完一批数据之后,调用commitAsync方法异步提交偏移量,异步提交不会阻塞消费者的处理线程,从而提高吞吐量,但是异步提交可能会导致消息的重复处理或者是丢失,需要消费者设置适当的异常处理和重试机制。

5.Kafka消息丢失场景有哪些?如何避免?

①生产者发送消息失败:

生产者发送消息时发生错误,并且没有设置重试机制,就有可能导致数据丢失,这个时候我们可以设置合适的重试次数以及重试间隔

②消息在网络传输过程中丢失:

生产者发送消息到kafka的过程中,可能会遇到网络波动或者是配置不当导致数据丢失,这时候我们可以设置重试机制和调整网络配置来提高稳定性

③消费者处理消息失败:

消费者在消费数据时发生错误,并且没有设置适当的错误处理和重试机制,那么消息就有可能丢失,需要我们设置重试机制来确保消息能够被正确处理并且不会丢失。

6.Kafka消费组重新平衡流程

每个消费者启动之后都会自动加入所属的消费者组中,并且向协调器发送心跳表示是运行状态

当消费者启动之后,首先向协调器发送加入组的请求,如果消费者组中已经存在了这个消费者,协调器就返回成功,否则协调器会将其加到消费者队列中,并通知其他消费者进行重平衡

新的消费者加入之后,协调器会按照订阅的主题计算出当前消费者负责消费的分区,并将分配结果发送给消费者,消费者在接收到分配结果之后,可以根据分区信息消费对应的消息

7.Kafka消费者分区分配策略

Range(范围分区):

首先我们会对每个topic下的partition进行排序,然后对消费者按照字母进行排序,然后用分区数除以消费者数量。例子:假如现在我们有十个分区,三个消费者,那么就是10除以3,如果除不尽,那么前面的消费者就会多消费一个分区。

弊端就是前面的消费者会比后面的消费者多处理几个分区的数据,会出现负载均衡的现象

RoundRoBin(轮询分区):

将消费者和分区按照字典序进行排序,然后通过轮询的方法将分区逐个分配给每个消费者,但是也可能会出现负载不均衡的情况

StickyAssignor(粘性分区):

分区的分配要尽可能的均匀,消费者之间的分区数最多相差一个

分区的分配尽可能要与上次分配的保持相同

8.ClickHouse中ReplicatedMergeTree是什么?有什么优点?

ReplicatedMergeTree是一种数据表引擎,用于处理分布式环境下的数据复制和合并,是MergeTree表引擎的一个扩展,用于在分布式环境中实现数据的可靠复制和合并

优点

①:ReplicatedMergeTree表支持数据的复制和分布式存储,可以在多个节点上存储数据的副本,并且可以跨多个节点分布数据以实现负载均衡

②:ReplicatedMergeTree表可以合并来自不同节点的数据,保证数据的一致性和完整性

③:由于ReplicatedMergeTree支持数据复制,因此具有良好的容错性和高可用性,即使某个节点发生故障,仍然可以从其他节点获取数据

缺点:

性能消耗:由于ReplicatedMergeTree需要进行数据复制和合并,可能会导致额外的性能消耗,在处理大规模数据的时候,可能会成为性能瓶颈

一致性和延迟:由于数据复制和合并需要一定的时间,因此在分布式环境中可能存在一致性和延迟问题,在某些情况下,可能需要额外的措施来确保数据的一致性和实时性

9.ClickHouse的分布式查询流程是什么样的?

10.ClickHouse存储结构及优势

优势

列式存储:

ClickHouse采用列式存储结构,数据按列存储,而不是将整行数据存储在一起,这种存储方式有助于提高查询性能,在数据规模大的情况下,可以减少磁盘io和内存消耗。

数据分区:

ClickHouse支持对数据进行分区,可以根据时间范围或其他维度将数据划分为不同的分区,这种分区存储结构有助于提高查询性能,可以根据查询需求只加载特定分区的数据,减少不必要的数据扫描。

11.ClickHouse各种索引的区别和使⽤场景

一级索引:

一级索引是表的主键索引,主键索引是表中一列或多列的唯一标识,用于快速定位每一行数据,一级索引在ClickHouse中是必须的,每张表必须有一个一级索引

稀疏索引:

索引标记对应的是一段数据, 但是查询速度可能会受影响,因为某些数据无法直接通过索引定位到,从而需要进行更多的磁盘访问

稠密索引:

索引标记对应到一行具体的数据记录,查询速度快,每行数据都能通过索引快速定位到,但是会占用更多的存储空间

二级索引:

二级索引是指除了主键索引之外的其他索引,用于加速查询非主键列

12.ClickHouse查询性能优化

索引优化:

使用适当的索引类型,根据查询模式创建合适的索引

数据分区:

利用ClickHouse的分区功能,将数据按照时间范围或其他维度进行分区存储,这样可以降低单个分区的数据量,提高查询性能,同时也便于数据的维护和管理

硬件优化:

提供足够的硬件资源,升级配置

数据压缩:

使用合适的压缩算法来减少存储空间,同时也能提高读取速度,ClickHouse提供了多种压缩算法,可以根据数据的特点选择合适的压缩方式

13.Flink窗口机制有哪些?应⽤场景分别是什么?

滑动窗口:

滑动窗口在固定大小的窗口上定义了一个滑动步长,窗口之间可以有重叠部分,常用于连续的数据流分析

滚动窗口:

滚动窗口将数据按照固定的大小进行划分,窗口之间没有重叠,常用于对实时数据进行周期性的统计分析,如每分钟,每小时。

会话窗口:

当数据流中一段时间内没有数据到达时,会话窗口结束,会话窗口需要制定两个参数,会话超时时间和间隔时间,当某个数据到达时,会话窗口会检查该数据与前一个数据的时间间隔,如果超过了会话超时时间,则结束前一个会话窗口并开始一个新的会话窗口

全局窗口:

全局窗口将整个数据流视为一个窗口,通常用于一次性对整个数据流进行统计分析

处理时间窗口:

根据数据的处理时间来划分窗口,即数据到达flink算子的时间,适用于对实时数据进行快速分析,不考虑事件时间顺序的场景

事件时间窗口:

根据数据中的事件时间来划分窗口,即数据中的时间戳,用于处理具有时间顺序的数据流,可以解决数据延迟,乱序等问题

这篇关于大数据高级阶段面试题(实时)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/966964

相关文章

Redis的数据过期策略和数据淘汰策略

《Redis的数据过期策略和数据淘汰策略》本文主要介绍了Redis的数据过期策略和数据淘汰策略,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录一、数据过期策略1、惰性删除2、定期删除二、数据淘汰策略1、数据淘汰策略概念2、8种数据淘汰策略

轻松上手MYSQL之JSON函数实现高效数据查询与操作

《轻松上手MYSQL之JSON函数实现高效数据查询与操作》:本文主要介绍轻松上手MYSQL之JSON函数实现高效数据查询与操作的相关资料,MySQL提供了多个JSON函数,用于处理和查询JSON数... 目录一、jsON_EXTRACT 提取指定数据二、JSON_UNQUOTE 取消双引号三、JSON_KE

Python给Excel写入数据的四种方法小结

《Python给Excel写入数据的四种方法小结》本文主要介绍了Python给Excel写入数据的四种方法小结,包含openpyxl库、xlsxwriter库、pandas库和win32com库,具有... 目录1. 使用 openpyxl 库2. 使用 xlsxwriter 库3. 使用 pandas 库

SpringBoot定制JSON响应数据的实现

《SpringBoot定制JSON响应数据的实现》本文主要介绍了SpringBoot定制JSON响应数据的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们... 目录前言一、如何使用@jsonView这个注解?二、应用场景三、实战案例注解方式编程方式总结 前言

使用Python在Excel中创建和取消数据分组

《使用Python在Excel中创建和取消数据分组》Excel中的分组是一种通过添加层级结构将相邻行或列组织在一起的功能,当分组完成后,用户可以通过折叠或展开数据组来简化数据视图,这篇博客将介绍如何使... 目录引言使用工具python在Excel中创建行和列分组Python在Excel中创建嵌套分组Pyt

在Rust中要用Struct和Enum组织数据的原因解析

《在Rust中要用Struct和Enum组织数据的原因解析》在Rust中,Struct和Enum是组织数据的核心工具,Struct用于将相关字段封装为单一实体,便于管理和扩展,Enum用于明确定义所有... 目录为什么在Rust中要用Struct和Enum组织数据?一、使用struct组织数据:将相关字段绑

在Mysql环境下对数据进行增删改查的操作方法

《在Mysql环境下对数据进行增删改查的操作方法》本文介绍了在MySQL环境下对数据进行增删改查的基本操作,包括插入数据、修改数据、删除数据、数据查询(基本查询、连接查询、聚合函数查询、子查询)等,并... 目录一、插入数据:二、修改数据:三、删除数据:1、delete from 表名;2、truncate

Java实现Elasticsearch查询当前索引全部数据的完整代码

《Java实现Elasticsearch查询当前索引全部数据的完整代码》:本文主要介绍如何在Java中实现查询Elasticsearch索引中指定条件下的全部数据,通过设置滚动查询参数(scrol... 目录需求背景通常情况Java 实现查询 Elasticsearch 全部数据写在最后需求背景通常情况下

Java中注解与元数据示例详解

《Java中注解与元数据示例详解》Java注解和元数据是编程中重要的概念,用于描述程序元素的属性和用途,:本文主要介绍Java中注解与元数据的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参... 目录一、引言二、元数据的概念2.1 定义2.2 作用三、Java 注解的基础3.1 注解的定义3.2 内

将sqlserver数据迁移到mysql的详细步骤记录

《将sqlserver数据迁移到mysql的详细步骤记录》:本文主要介绍将SQLServer数据迁移到MySQL的步骤,包括导出数据、转换数据格式和导入数据,通过示例和工具说明,帮助大家顺利完成... 目录前言一、导出SQL Server 数据二、转换数据格式为mysql兼容格式三、导入数据到MySQL数据