开发者社区> 问答> 正文

Flink相比Spark Streaming有什么区别?

Flink相比Spark Streaming有什么区别?

展开
收起
茶什i 2019-11-20 16:18:51 8052 0
3 条回答
写回答
取消 提交回答
  • 专注在大数据分布式计算、数据库及存储领域,拥有13+年大数据引擎、数据仓库、宽表引擎、平台研发经验,6年云智能大数据产品技术一号位经验,10年技术团队管理经验;云智能技术架构/云布道师; 研发阿里历代的大数据技术产品包括ODPS、DLA、ADB,最近五年主导宽表引擎研发、DLA、ADB湖仓研发;

    简单讲:flink是实时流,Spark Streaming是用批模拟流。

    2020-03-22 11:48:02
    赞同 展开评论 打赏
  • 生态圈对比: 大数据领域一个项目的火热离不开相关的技术栈,Spark和Flink基于对底层数据和计算调度的高度抽象的内核(Core)开发出了批处理,流处理,结构化数据,图数据,机器学习等不同套件,完成对绝大多数数据分析领域的场景的支持,意欲一统大数据分析领域。统计作为计算引擎,也很好的支持了与周边大数据分析项目的兼容,

    Spark和Flink均有Scala/Java混合编程实现,Spark的核心逻辑由Scala完成,Flink的主要核心逻辑由Java完成

    支持应用语言 Flink主要支持Scala,和Java编程,部分API支持python应用 Spark主要支持Scala,Java,Python,R语言编程,部分API暂不支持Python和R

    2020-03-19 19:36:52
    赞同 展开评论 打赏
  • 这个问题问的很大,分几个方面回答:

    架构模型上:Spark Streaming 的task运行依赖driver 和 executor和worker,当然driver和excutor还依赖于集群管理器Standalone或者yarn等。而Flink运行时主要是JobManager、TaskManage和TaskSlot。另外一个最核心的区别是:Spark Streaming 是微批处理,运行的时候需要指定批处理的时间,每次运行 job 时处理一个批次的数据;Flink 是基于事件驱动的,事件可以理解为消息。事件驱动的应用程序是一种状态应用程序,它会从一个或者多个流中注入事件,通过触发计算更新状态,或外部动作对注入的事件作出反应。

    任务调度上:Spark Streaming的调度分为构建 DGA 图,划分 stage,生成 taskset,调度 task等步骤而Flink首先会生成 StreamGraph,接着生成 JobGraph,然后将 jobGraph 提交给 Jobmanager 由它完成 jobGraph 到 ExecutionGraph 的转变,最后由 jobManager 调度执行。

    时间机制上:flink 支持三种时间机制事件时间,注入时间,处理时间,同时支持 watermark 机制处理滞后数据。Spark Streaming 只支持处理时间,Structured streaming则支持了事件时间和watermark机制。

    容错机制上:二者保证exactly-once的方式不同。spark streaming 通过保存offset和事务的方式;Flink 则使用两阶段提交协议来解决这个问题。

    2019-11-20 16:22:29
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Hybrid Cloud and Apache Spark 立即下载
Scalable Deep Learning on Spark 立即下载
Comparison of Spark SQL with Hive 立即下载