Spark和Flink区别详解(6大对比区别)

Spark和Flink区别详解(6大对比区别)-mikechen

谈到大数据流计算,就离不开该领域最强大的引擎:Spark 和 Flink,接下来详细对比Spark和Flink的6个方面。

Spark和Flink设计理念区别

1.Spark的技术理念,是使用微批( Micro- batch processing)来模拟流的计算,数据流以时间为单位被切分为一个个批次,通过分布式数据集进行批量处理。

2.Flink是基于事件驱动的,是面向流的处理框架,Flink基于每个事件一行一行地流式处理,是真正的流式计算。

 

Spark和Flink实时计算区别

1.Spark流处理的实时性还不够,所以无法用在一些对实时性要求很高的流处理场景中。

这是因为 Spark的流处理是基于微批处理,每次接收到一个时间间隔的数据才会去处理,所以天生很难在实时性上有所提升。

2.Flink采用了基于操作符(Operator)的连续流模型,可以做到微秒级别的延迟。

所以,Flink更适合用于实时处理的场景,详细的可以查看:Flink应用场景详解(4大Fink使用场景)

而Spark最大的特点就是将计算数据、中间结果都存储在内存中,大大减少了IO开销,因而Spark更适合于迭代运算比较多的数据挖掘与机器学习运算。

 

Spark和Flink编程语言区别

1.Spark采用Scala开发实现,但Spark提供其他语言的 API,比如: Java,Python等等。

2.Flink采用Java开发实现,但Flink也提供了其它语法的API,比如也提供了Scala的API。

 

Spark和Flink架构方面区别

Spark架构采用了分布式计算中的Master-Slave模型,Master是对应集群中的含有Master进程的节点,Slave是集群中含有Worker进程的节点。

Spark运行架构,如下图所示:

Spark和Flink区别详解(6大对比区别)-mikechen

Spark运行架构包括:

  1. 集群资源管理器(Cluster Manager);
  2. 运行作业任务的工作节点(Worker Node);
  3. 每个应用的任务控制节点(Driver);
  4. 每个工作节点上负责具体任务的执行进程(Executor);

 

2.Flink 在运行架构时主要包含:Jobmanager、Taskmanager和Slot,如下图所示:

Spark和Flink区别详解(6大对比区别)-mikechen

Flink 的运行时架构中,最重要的就是两大组件:作业管理器(JobManger)和任务管理器(TaskManager)。

1.作业管理器(JobManger)

JobManager 是真正意义上的“管理者”(Master),负责管理调度。

 

2.任务管理器(TaskManager)

TaskManager 是“工作者”(Worker、Slave),负责执行任务处理数据。

 

Spark和Flink时间机制区别

1.Spark 支持的时间机制有限,只支持处理时间,如果产生数据堆积的话,误差则更明显。

2.Flink支持三种时间机制:事件时间,注入时间,处理时间,说明Flink在处理乱序大实时数据的时候更有优势。

 

 

Spark和Flink应用场景区别

1.Spark 适合于吞吐量比较大的场景,数据量非常大而且逻辑复杂的批数据处理,并且对计算效率有较高要求,比如:用大数据分析来构建推荐系统进行个性化推等。

2.Flink 主要用来处理要求低延时的任务,实时监控,实时报表,比如:阿里双11实时交易额,实时仓库的场景。

以上就是Spark和Flink的详细对比,希望对你选择Spark和Flink有所帮助!

作者简介

陈睿|mikechen,10年+大厂架构经验,BAT资深面试官,就职于阿里巴巴、淘宝、百度等一线互联网大厂。

👇阅读更多mikechen架构文章👇

阿里架构 |双11秒杀 |分布式架构 |负载均衡 |单点登录 |微服务 |云原生 |高并发 |架构师

以上

关注作者「mikechen」公众号,获取更多技术干货!

后台回复架构,即可获取《阿里架构师进阶专题全部合集》,后台回复面试即可获取《史上最全阿里Java面试题总结

评论交流
    说说你的看法