锁屏面试题百日百刷,每个工作日保持更新面试题。请看到最初就能获取你想要的, 接下来的是今日的面试题:

1.Flink相比传统的Spark Streaming区别?**

这个问题是一个十分宏观的问题,因为两个框架的不同点十分之多。然而在面试时有十分重要的一点肯定要答复进去:Flink 是规范的实时处理引擎,基于事件驱动。而 Spark Streaming 是微批(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 依据 ExecutionGraph 对 Job 进行调度。

3. 工夫机制Spark Streaming 反对的工夫机制无限,只反对解决工夫。 Flink 反对了流处理程序在工夫上的三个定义:解决工夫、事件工夫、注入工夫。同时也反对 watermark 机制来解决滞后数据。

4. 容错机制对于 Spark Streaming 工作,咱们能够设置 checkpoint,而后如果产生故障并重启,咱们能够从上次 checkpoint 之处复原,然而这个行为只能使得数据不失落,可能会反复解决,不能做到恰好一次解决语义。Flink 则应用两阶段提交协定来解决这个问题。

2.Flink的组件栈有哪些?**

依据 Flink 官网形容,Flink 是一个分层架构的零碎,每一层所蕴含的组件都提供了特定的形象,用来服务于下层组件。

自下而上,每一层别离代表: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(图解决)。

全部内容在git上,理解更多请点我头像或到我的主页去取得,谢谢**