Flink高频面试题( 精简 )

本文是《董工的1000个大数据技术体系》专栏的一部分,聚焦Flink面试常见问题。内容涵盖Flink与SparkStreaming的区别、编程模型、集群角色、并行度设置、重启策略、广播变量、状态存储、分区策略、时间概念、提交任务方式、watermark机制、容错方式、Hadoop依赖、Slot与并行度、状态管理以及资源调度。旨在帮助读者快速掌握Flink核心要点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文隶属于专栏《董工的1000个大数据技术体系》摘要,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢!

目录

前言

一、SparkStreaming和Flink的区别是什么?

二、Flink的编程模型?

三、Flink中集群有哪些角色?各个角色有什么作用?

四、Flink如何设置并行度

五、Flink中有没有重启策略?

六、Flink的广播变量,使用的时候需要注意什么?

七、Flink的状态储存

八、Flink的分区策略

九、Flink时间有那几类?

十、你们公司怎么提交FLink任务

十一、Flink中watermark

十二、Flink如何容错

十三、Flink运行中必须依赖Hadoop组件吗?

十四、Flink的Slot和parallelism有什么区别?

十五、Flink的状态

十六、Flink的资源调度

十七、Flink SQL的实现原理


前言

作为大数据领域炙手可热的大数据组件,Flink作为大数据行业跳槽必问的组件,整理一些Flink相关的面试题供大家参考,有些题言简意赅即可,大多数的博客冗余一堆的知识点,看完要好久,我想帮大家提炼总结出核心的点,以帮助大家临阵磨枪,短时间掌握,当你把知识提炼出来,你会发现你的知识进步了,当你把简单提炼的知识再用自己的语言详细的说出来,那你就成为很厉害的人了,希望帮助大家收获到自己满意的offer。

一、SparkStreaming和Flink的区别是什么?

1、Flink 是实时处理引擎,基于事件驱动。而 Spark Streaming 是微批(Micro-Batch)的模型。(根本区别,一定要说出来)

2、时间机制:Spark Streaming只支持处理时间。 Flink支持处理时间、事件时间、注入时间。同时也支持watermark来处理滞后数据。

3、容错机制:Spark Streaming 通过checkpoint实现数据不丢失,但无法做到恰好一次处理语义。Flink 则使用两阶段提交协议和checkpoint实现精准一次处理,容错性好

区别相对比较多,具体不一一介绍,只要说出来其代表性的即可

二、Flink的编程模型?

  1. Source数据源输入
  2. Tranformation数据转换
  3. Sink数据输出

三、Flink中集群有哪些角色?各个角色有什么作用?

  jobmanager: 管理集群master的角色,负责资源调度和资源管理,管理taskManager,协调checkpoint,故障恢复

  taskManager: 实际执行计算,与TaskManager状态传递

  client(客户端): 负责与jobManager进行交互把任务提交到集群

四、Flink如何设置并行度

系统层面(flink客户端的配置yml文件中设置)

客户端层面(提交flink run -p的时候设置)

执行环境层面(构建Flink环境时getExecutionEnvironment.setParallelism(1)设置)

算子层面(算子.setParallelism(3),实际算子时设置)

优先级设置: 算子层面>执行环境层面>客户端层面>系统层面

(实际业务中通常设置和kafka分区数一样或者kafka分区倍数的并行度)

五、Flink中有没有重启策略?

故障延迟重启策略

故障率重启策略

没有重启策略

Fallback重启策略

如果没有启用 checkpointing,则使用无重启 (no restart) 策略。如果启用了 checkpointing,但没有配置重启策略,则使用固定间隔 (fixed-delay) 策略
重启策略可以在flink-conf.yaml中配置&

当谈到 Flink高频面试题时,以下是一些常见的问题: 1. 什么是 FlinkFlink 是一个开源的流处理和批处理框架,具有低延迟、高吞吐量和Exactly-Once语义。 2. Flink 和其他流处理框架(如Spark Streaming)有什么区别?Flink 是真正的流处理框架,支持事件时间、状态和容错。而其他框架通常是微批处理框架,处理延迟较高。 3. Flink 的核心组件是什么?核心组件包括DataStream API、DataSet API、Table API 和 SQL。DataStream API 用于处理无界数据流,DataSet API 用于处理有界数据集,Table API 和 SQL 用于将关系型查询应用到流和批处理数据上。 4. Flink 的窗口是什么?窗口是对无界数据流的有限大小的切片。Flink 提供了时间窗口、计数窗口和会话窗口等类型的窗口。 5. Flink 如何保证 Exactly-Once 语义?Flink 使用检查点(checkpoint)机制来实现端到端的 Exactly-Once 语义。这个机制通过定期保存应用程序的状态,并在发生故障时恢复状态,从而保证数据的一致性。 6. Flink 的容错机制是什么?Flink 使用基于检查点的容错机制,通过保存应用程序的状态并周期性地生成检查点来实现容错。当发生故障时,Flink 可以使用最近的检查点恢复应用程序的状态。 7. Flink 支持哪些数据源和数据接收器?Flink 支持多种数据源和数据接收器,包括本地文件系统、Kafka、Hadoop、Amazon S3、Elasticsearch 等。 8. Flink 如何处理状态?Flink 通过状态后端将应用程序的状态保存在内存、文件系统或远程数据库中。状态可以是键控状态(Keyed State)或操作符状态(Operator State),用于跟踪和更新流处理的中间结果。 9. Flink 的时间语义是什么?Flink 支持事件时间、处理时间和摄取时间三种时间语义。事件时间是从数据中提取的时间戳,处理时间是处理数据的机器的本地时间,摄取时间是数据进入 Flink 的时间戳。 10. Flink 如何处理延迟数据?Flink 使用水位线(Watermark)来处理延迟数据。水位线是一种特殊的数据元素,用于告知 Flink 系统事件时间进展的进度,并触发窗口计算和数据输出。 这些问题涵盖了 Flink 的基本概念和核心组件,希望对你有所帮助!如果你有其他问题,可以继续提问。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值