大数据实习面试题详解
··by suki
Kafka参数调优的注意事项
Kafka生产者如何实现幂等性写入和事务 &Kafka的producer如何实现幂等性?
Kafka的ISR和OSR的作用分别是什么?
Kafka的producer如何实现幂等性?
Kafka消费者位置提交⽅式有哪些?分别什么场景下使⽤?
Kafka消息丢失场景有哪些?如何避免?
Kafka消费组重新平衡流程
Kafka消费者分区分配策略
Kafka&Flink&ClickHouse在联合场景中的优势
ClickHouse中的ReplicatedMergeTree是什么?有什么优点?
ClickHouse的分布式查询流程是什么样的?
ClickHouse存储结构及优势
ClickHouse各种索引的区别和使用场景
ClickHouse查询性能优化
Flink任务链和任务槽的作用是什么?
Flink SQL和Table API的区别是什么?
Flink Streaming如何处理迟到事件?
Flink中数据倾斜原因和解决方案
Flink内存模型与内存优化
Flink窗口机制有哪些?应用场景分别是什么?
Flink Savepoint和Checkpoint的区别
Flink与Spark Streaming的技术选型对比
Flink内存管理机制及其参数调优?
口诀:
一压二查三指标,延迟吞吐是关键
时刻关注资源量,排查首先看GC
1. JSON序列化与反序列化
常出现在source和sink任务上,在指标上没有体现,容易被忽略
2. Map和set的Hash冲突
由于HashMap,HashSet等随着负载因子增高,引起的插入和查询性能下降。
3. 数据倾斜
数据倾斜会导致其中一个或者多个subtask处理的数据量远大于其他节点,造成局部数据延迟。
4. 和低速系统的交互
在实时系统进行高速数据处理时,当涉及到与外部低俗的系统(如Mysql,Hbase等)进行数据交互时。
5. 频繁的GC
因内存或者内存比例分配不合理导致频繁GC, 甚至是TaskManager失联
6. 大窗口
窗口size大,数据量大,或者是滑动窗口size和step的比值比较大,如size=10minmatch, step=1。
Flink任务链和任务槽的作用是什么?
Flink状态管理内部原理是什么?
假设我们有一个电商网站,在这个网站上可以进行商品的浏览、购买、评价等操作。为了便于业务分析和优化,我们需要对用户的行为进行实时统计和分析。具体来说,需要统计每个商品的浏览次数、下单次数、成交金额等指标,并以实时可视化的方式展现出来。
为了实现这一目标,我们可以使用Flink来进行实时计算和数据处理。在程序中,我们需要定义一些状态来记录用户的行为,如:
- 商品浏览量:记录每个商品的浏览次数;
- 商品下单量:记录每个商品的下单次数;
- 商品成交金额:记录每个商品的成交金额;
- 用户购买记录:记录每个用户的购买记录。
在Flink中,我们可以通过声明和管理这些状态来实现实时计算和分析。具体步骤如下:
- 状态的定义:Flink支持不同类型的状态,如键值对状态、列表状态、折叠状态等。用户可以自定义状态的数据结构和计算操作,并在程序中显式声明并使用这些状态。状态的声明通常在程序的开始位置完成,可以用于保存一些需要跨任务和操作保持一致的状态信息。(两种类型的状态:算子状态和键值分区状态)
- 状态的管理:Flink将状态分配给不同的任务运行实例进行管理,保证在不同的并行任务之间共享该状态。Flink利用快照机制来保证状态的一致性和恢复。具体来说,Flink定期对状态进行快照(Checkpoint),并将快照写入持久化存储中,以便在发生故障时能够恢复状态。此外,Flink还提供了精细的控制机制,可以让用户自定义快照的触发时间、间隔和一致性模式等参数。
- 状态的持久化:为了保证状态在故障发生时不会丢失或损坏,Flink将状态持久化到外部存储介质中,例如文件系统、HDFS、分布式数据库等。Flink采用异步写入的方式,将状态持久化操作放在后台线程中完成,以避免影响任务的执行性能。在状态恢复时,Flink会从持久化存储中读取最近一次的快照,并将状态恢复到该快照的状态。
- 托管方式(Manager State & Raw State)