每日一题说说Flink相比传统的Spark Streaming区别?

Posted 勾叔谈大数据

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了每日一题说说Flink相比传统的Spark Streaming区别?相关的知识,希望对你有一定的参考价值。

大家好,我是勾叔。今天的面试题为:说说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 则使用两阶段提交协议来解决这个问题。


大家如果想进行更深入的了解和学习,请关注勾叔谈大数据参与更多互动。



推荐阅读:





以上是关于每日一题说说Flink相比传统的Spark Streaming区别?的主要内容,如果未能解决你的问题,请参考以下文章

老男孩教育每日一题-第77天-说说如何给linux修改主机名

老男孩教育每日一题-2017年5月16日-说说{}与[]这两个符号有什么区别?

老男孩教育每日一题-2017年5月18日-说说|(管道)与|xargs(管道xargs)的区别

爱创课堂每日一题第八天说说你对作用域链的理解?

每日一题简要介绍一下 Spark 的内存管理?

老男孩教育每日一题-2017-05-15-说说你在vi/vim中常用的命令或快捷键