1. 目标
在本教程中,我们将讨论Apache Spark和Apache Flink之间的比较。Apache spark和Apache Flink都是用于大规模批处理和流处理的开源平台,为分布式计算提供容错和数据分布。本指南提供了Apache Flink和Apache Spark这两种蓬勃发展的大数据技术在特性方面的明智比较。
2. Apache Flink vs Apache Spark
特性 | Apache Flink | Apache Spark |
计算 模型 |
Flink基于基于操作器的计算模型。 | Spark是基于微批处理模式的。 |
流处 理引擎 |
Apache Flink为所有工作负载使用流:流、SQL、微批处理和批处理。批处理是流数据的有限集。 | Apache Spark对所有工作负载使用微批。但对于需要处理大量实时数据流并实时提供结果的用例来说,这是不够的。 |
迭代 处理 |
Flink API提供了两个专用的迭代操作Iterate和Delta Iterate。 | Spark基于非本地迭代,在系统外部实现为规则的for - loop。 |
优化 | Apache Flink附带了一个独立于实际编程接口的优化器。 | 在Apache中,Spark作业必须手动优化。 |
延迟 | 通过最小的配置努力,Apache Flink的数据流运行时实现了低延迟和高吞吐量。 | 与Apache Flink相比,Apache Spark具有较高的延迟。 |
性能 | 与其他数据处理系统相比,Apache Flink的总体性能非常出色。Apache Flink使用本地闭环迭代操作符,这使得机器学习和图形处理更快。 | 尽管Apache Spark拥有优秀的社区背景,现在它被认为是最成熟的社区。但是它的流处理效率并不比Apache Flink高,因为它使用微批处理。 |
容错 | Apache Flink遵循的容错机制是基于Chandy-Lamport分布式快照的。该机制是轻量级的,从而在保持高吞吐率的同时提供了强大的一致性保证。 | Spark 流恢复丢失的工作,并提供精确的一次性语义开箱即用,没有额外的代码或配置。(请参阅火花容错特征指南) |
去重 | Apache Flink一次处理每条记录,因此消除了重复。 | Spark还精确地处理每条记录一次,因此消除了重复。 |
窗口 条件 |
Flink具有基于记录或任何自定义用户定义的窗口条件。 | Spark有一个基于时间的窗口条件 |
内存 管理 |
Flink提供自动内存管理。 | Spark提供可配置的内存管理。Spark 1.6, Spark也已经转向自动化内存管理。 |
速度 | Flink以闪电般的速度处理数据 | Spark的处理模型比Flink慢 |
3.结论
Apache Spark和Flink都是吸引业界关注的下一代大数据工具。两者都提供与Hadoop和NoSQL数据库的本地连接,并且可以处理HDFS数据。两者都是几个大数据问题的好解决方案。但由于其底层架构,Flink比Spark更快。Apache Spark是Apache存储库中最活跃的组件。Spark拥有非常强大的社区支持和大量的贡献者。Spark已经部署在生产环境中。但就流功能而言,Flink要比Spark好得多(因为Spark以微批的形式处理流),并且对流有本地支持。Spark被认为是大数据的3G,而Flink被认为是大数据的4G。