#1First of all
面试重点有几下几项:
1.flink提交
2.flink状态编程
3.spark与flink对比
4.flink的checkpoint
5.窗口与水位线
6.flink join
7.flink的反压
一. Flink 提交系列
Flink怎么提交?
Local模式
JobManager 和 TaskManager 共用一个 JVM,只需要jdk支持,单节点运行,主要用来调试。
Standlone模式
Standlone 是Flink自带的一个分布式集群,它不依赖其他的资源调度框架、不依赖yarn等。充当Master角色的是JobManager。充当Slave/Worker角色是TaskManager
Yarn 模式
Flink集群规模?在Flink项目做了什么?
Flink群集大小时要考虑的一些方面:
- 记录数和每条记录的大小 每秒到达流式传输框架的预期记录数以及每条记录的大小。不同的记录类型将具有不同的大小,这将最终影响Flink应用程序平稳运行所需的资源。
- 不同key的数量和每个键的状态大小。
- 状态更新的数量和状态后端的访问模式 Java的堆状态后端上的各种访问模式可能会显着影响群集的大小以及Flink作业所需的资源。
- 网络容量 网络容量不仅会受到Flink应用程序本身的影响,还会受到可能正在与之交互的外部服务(如Kafka或HDFS)的影响。此类外部服务可能会导致网络出现额外流量。例如,启用replication 可能会在网络的消息brokers之间创建额外的流量。
- 磁盘带宽。
- 机器数量及其可用CPU和内存。
Flink项目做了什么?
实时监控:
1 用户行为预警,服务器攻击预警 .....
实时报表:
1 活动直播大屏: 双11、双12
2 对外数据产品时效性
3 数据化运营
流数据分析:
1 实时计算相关指标反馈及时调整决策
2 内容投放、无线智能推送、实时个性化推荐等
实时仓库:
1 数据实时清洗、归并、结构化
2 数仓的补充和优化
Flink提交作业的流程,以及与Yarn怎么交互?
- 提交App之前,先上传Flink的Jar包和配置到HDFS,以便JobManager和TaskManager共享HDFS的数据。
- 客户端向ResourceManager提交Job,ResouceManager接到请求后,先分配container资源,然后通知NodeManager启动ApplicationMaster。
- ApplicationMaster会加载HDFS的配置,启动对应的JobManager,然后 JobManager会分析当前的作业图,将它转化成执行图(包含了所有可以并发执行的任务),从而知道当前需要的具体资源。
- 接着,JobManager会向ResourceManager申请资源,ResouceManager接到请求后,继续分配container资源,然后通知ApplictaionMaster启动更多的TaskManager(先分配好container资源,再启动TaskManager)。container在启动TaskManager时也会从 HDFS加载数据。
- TaskManager启动后,会向JobManager发送心跳包。JobManager向TaskManager分配任务。