共计 1461 个字符,预计需要花费 4 分钟才能阅读完成。
锁屏面试题百日百刷,每个工作日保持更新面试题。 请看到最初就能获取你想要的, 接下来的是今日的面试题:
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 上, 理解更多请点我头像或到我的主页去取得,谢谢 **