目录
4.说一下flink 提交流程、组件通信、调度机制、任务执行、内存模型、JobManager的作用
6.flink的keyby怎么实现的分区?分区、分组的区别是什么?
7.Flink的key By和Spark 的 group by有什么区别?
10.watermark是数据吗?怎么生成的?怎么传递的?怎么触发计算的?
15.Flink是如何管理kafka的offset,使用什么类型的状态保存offset?
18.Flink Checkpoint和Savepoint的区别及其配置使用
23.作业挂掉了,恢复上一个Checkpoint,用什么命令?
27.Flink CEP编程中当状态没有到达的时候会将数据保存在哪里?
35.Flink调优(资源配置、反压处理、数据倾斜、flink sql调优)
36.Flink的监控怎么做?监控的是什么?如何有效处理数据积压
1.介绍一下Flink
flink是以数据流为核心基础,构建出的高性能、高吞吐、低延迟、高可用的流批一体的分布式大数据计算引擎。Flink能在所有常见集群环境中运行,并能以内存速度和任意规模进行计算。
2.flink于spark streaming对比
1.设计理念不同,flink的设计思想是以流为核心,批是流的特例,是以事件驱动的。Spark Streaming是将源源不断的流式数据当成一组微批集合,以批为核心
2.架构不同Spark Streaming在运行时的主要角色包括:Master
3.flink并行度了解吗?flink的并行度是怎样的?
4.说一下flink 提交流程、组件通信、调度机制、任务执行、内存模型、JobManager的作用
5.flink的编程模型是什么?
6.flink的keyby怎么实现的分区?分区、分组的区别是什么?
7.Flink的key By和Spark 的 group by有什么区别?
7.flink的join实现原理?join不上的怎么办?
8.flink双流join的解决方案和优化方案
9.flink怎么处理乱序数据的?
10.watermark是数据吗?怎么生成的?怎么传递的?怎么触发计算的?
11.watermark生成方式
12.说说Flink中的窗口(分类、生命周期、触发、划分)
13.一个窗口,现在只取第一帧和最后一帧,怎么做?
14.说一下Flink的状态编程
1.首先先说一下无状态计算和有状态计算。
对于流计算而言,事件持续不断地产生,如果每次计算都是相互独立的就是五状态计算。
如果计算需要依赖之前或者后续的事件,则是有状态计算。
2.在计算层面
就是Flink Job的Task在运行过程中,产生的一些状态数据,这些状态数据辅助Task执行某些有状态计算。所以保存和管理每个Task的状态是非常重要的一种机制
3,如果要做到比较好的State管理,需要考虑的问题有:
- 状态数据的存储和访问
- 状态数据的备份和恢复
- 状态数据的划分和动态扩容
- 状态数据的清理
4. State是实现有状态计算下的Exactly-Once的基础
15.Flink是如何管理kafka的offset,使用什么类型的状态保存offset?
16.如何使用托管的Keyed State
17.Flink状态后端有哪些?如何选择状态后端存储?
State按照是否有Key划分为KeyedState和OperatorState两种
KeyedState
- ValueState
- ListState
- MapState
- ReducingState
- AggregationState
- FoldingState
OperatorState
- ListState
Keyed State是和具体的Key相绑定的,只能在KeyedStream上的函数和算子中使用,KeyedStream流上每个Key对应一个State对象。
Operator State跟特定算子的一个实例绑定,整个算子只对应一个State,例如Kafka Connector中,每一个并行的Kafka Consumer都在Operator State中维护当前Consumer订阅的partition和offset。
按照由Flink管理还是用户自行管理,状态可以分为原始状态(Raw State)和托管状态(Managed State),一般情况下,在实现自定义算子时才会使用到原始状态
运行时,在RichFunction和ProcessFunction中,通过RuntimeContext上下文对象,使用StateDescriptor从状态后端(StatebBackend)中获取实际的State实例。
18.Flink Checkpoint和Savepoint的区别及其配置使用
19.flink分布式快照原理
20.Exactly-once的保证
21.checkpoint参数怎么设置
22.Flink checkpoint的超时问题如何解决?
23.作业挂掉了,恢复上一个Checkpoint,用什么命令?
24.什么是Flink的非barrier对齐,如何实现?
25.介绍一下Flink的CEP机制
26.Flink CEP适用场景
27.Flink CEP编程中当状态没有到达的时候会将数据保存在哪里?
28.Flink 计算资源的调度是如何实现的?
29.Flink Slot和Parallelism
30.Operator Chain了解吗?
31.Flink的运行必须依赖Hadoop吗?
32.Flink SQL的工作机制?
33.Flink开窗函数有哪些?
34.Flink SQL 怎么对SQL语句进行优化?
35.Flink调优(资源配置、反压处理、数据倾斜、flink sql调优)
36.Flink的监控怎么做?监控的是什么?如何有效处理数据积压
37.Flink里异步IO的代码具体是怎么写的?
38.Flink task故障失败恢复
39.Flink yarn-session和per-job的区别
40.Flink TaskManager
41.Flink Task
Task是Flink作业的子任务,由TaskManager直接负责管理调度,为StreamTask执行业务逻辑的提供基础的组件,如内存管理器(MemoryManager)、IO管理器(IOManager)、输入网关、文件缓存等。
StreamTask的构建: 在最开始一个job提交到Flink 集群运行的时候,在client构建StreamGraph(顶点是StreamNode,边是StreamEdge)的时候,会根据用户调用的算子生成的Trasnformation为StreamGraph生成StreamNode,在生成StreamNode的时候,会通过OperatorFactory执行判断,如果该StreamOperator是StreamSource的话,就会指定该StreamTask的invokableClass为SourceStreamTask,否则为OneInputStreamTask,TwoInputStreamTask等。
StreamTask的类型与算子的类型一一对应