Flink总述 -- 常见面试总结

Flink的可能面试题

Flink中的核心概念和基础篇,包含了Flink的整体介绍、核心概念、算子;
Flink进阶篇,包含了Flink中数据传输、容错机制、序列化、数据热点、反压;
Flink源码篇,包含了Flink核心代码实现、Job提交流程、数据交换、分布式快照机制、Flink Sql原理。

Flink中的核心概念和基础篇

Flink简介

Flink提供了诸多高抽象层的API方便与用户编写分布式任务:
DataSet API,对静态数据进行批处理操作,将静态数据抽象成分布式的数据集,用户可以方便的使用Flink提供的格种操作符对分布式数据集进行处理,支持Java、Scala和Python。
DataStream API,对数据流进行流处理操作,将流式的数据抽象成分布式的数据流,用户可以方便的对分布式数据流进行各种操作,支持Java和Scala。
Table API,对结构化数据进行查询操作,将结构化数据抽象成关系表,并通过类SQL的DSL对关系表进行各种查询操作,支持Java和Scala。
Flink还针对特定的应用领域提供了领域库,Flink ML,Flink机器学习库。Gelly,Flink的图计算库。

Flink的特性:
支持高吞吐、低延迟、高性能的流处理
支持带有事件的窗口操作
支持有状态计算的Exactly-once语义
支持高度灵活的窗口操作,支持基于time、count、session以及data-driven的窗口操作
支持具有backpressure功能的持续流模型
支持基于轻量级分布式快照(Snapshot)实现的容错
同时支持Batch on Streaming处理和Streaming处理
Flink在JVM内部实现了自己的内存管理
支持迭代计算
支持程序自动优化,避免特定情况下Shuffle、排序等操作,中间结果有必要机型缓存

Flink和SparkStreaming

Flink是标准的实时处理引擎,基于事件驱动,SparkStreaming是微批(Micro-Batch)的模型

1.架构模型

Spark Streaming运行时的主要角色包括:Master、Worker、Driver、Executor

Flink在运行的时候主要包括:Jobmanager、Taskmanager和slot。

2.任务调度

Spark Streaming连续不断的生成微下的数据批次,构建有向无环图DAG,Spark Streaming会依次创建DStreamGraph、JobGenerator、JobScheduler。

Flink根据用户提交的代码生成StreamGraph,经过优化生成JobGraph,然后交给JobManager进行处理,JobManager会根据JobGraph生成ExecutionGraph,ExecutionGraph是Flink调度最核心的数据结构,JobManager根据ExecutionGrapg对Job进行调度。

3.时间机制

Spark Streaming 支持的时间机制有限,只支持处理时间。Flink支持了流处理程序在时间上的三个定义:处理时间、事件时间、注入时间。同时也支持watermark机制来处理滞后数据。

4.容错机制

Spark Streaming,设置checkpoint,发生故障并且重启,我们可以从上次checkpoint之处恢复,但是这个行为只能使得数据不丢失,可能会重复处理,不能做到恰好一次语义。

Flink通过使用两阶段提交协议来解决这个问题

Flink的组件栈

Flink总述 -- 常见面试总结_第1张图片
自上而下,每一层分别代表:Deploy 层:该层主要涉及了Flink的部署模式,在上图中我们可以看出,Flink 支持包括local、Standalone、Cluster、Cloud等多种部署模式。Runtime 层:Runtime层提供了支持 Flink 计算的核心实现,比如:支持分布式 Stream 处理、JobGraph到ExecutionGraph的映射、调度等等,为上层API层提供基础服务。API层:API 层主要实现了面向流(Stream)处理和批(Batch)处理API,其中面向流处理对应DataStream API,面向批处理对应DataSet API,后续版本,Flink有计划将DataStream和DataSet API进行统一。Libraries层:该层称为Flink应用框架层,根据API层的划分,在API层之上构建的满足特定应用的实现计算框架,也分别对应于面向流处理和面向批处理两类。面向流处理支持:CEP(复杂事件处理)、基于SQL-like的操作(基于Table的关系操作);面向批处理支持:FlinkML(机器学习库)、Gelly(图处理)。

你可能感兴趣的:(大数据)