Apache-Spark 和 Apache-Flink 项目都声称拥有非常相似的功能。
这些项目之间有什么区别。Spark 或 Flink 有什么优势吗?
谢谢
Apache-Spark 和 Apache-Flink 项目都声称拥有非常相似的功能。
这些项目之间有什么区别。Spark 或 Flink 有什么优势吗?
谢谢
Flink 是柏林几所大学对 Stratosphere 项目的 Apache 更名。它没有 Spark 项目那样的工业立足点和动力,但它看起来不错,而且比 Dryad 更成熟。我会说它值得研究,至少对于个人或学术用途而言,但对于工业部署,我仍然更喜欢 Spark,目前它已经过实战考验。有关更多技术讨论,请参阅两个项目的提交者在 Quora 上发表的这篇文章。
数据处理
Spark:Apache Spark 也是 Hadoop 生态系统的一部分。它本质上也是一个批处理系统,但它也支持流处理。
Flink:Apache Flink 为流式处理和批处理提供了单一的运行时。
流媒体引擎
Spark:Apache Spark Streaming 以微批处理的形式处理数据流。每个批次都包含在批次期间到达的事件集合。但对于我们需要处理大量实时数据流并实时提供结果的用例来说,这还不够。
Flink:Apache Flink 是真正的流媒体引擎。它使用流来处理工作负载:流式处理、SQL、微批处理和批处理。批处理是一组有限的流数据。
数据流
Spark:虽然机器学习算法是一个循环数据流,但 Spark 将其表示为(DAG)有向无环图。
Flink: Flink 采用了与其他方法不同的方法。它在运行时支持受控循环依赖图。这有助于以非常有效的方式表示机器学习算法。
计算模型
Spark: Spark 采用了微批处理。微批次本质上是一种“收集然后处理”的计算模型。
Flink: Flink 采用了连续流、基于算子的流模型。连续流算子在数据到达时对其进行处理,而不会延迟收集数据或处理数据。
表现
Spark:虽然 Apache Spark 有优秀的社区背景,现在被认为是最成熟的社区。但它的流处理效率并不比 Apache Flink 高,因为它使用的是微批处理。
Flink:与任何其他数据处理系统相比,Apache Flink 的性能非常出色。当我们比较 Hadoop、Spark 和 Flink 时,Apache Flink 使用原生闭环迭代运算符,这使得机器学习和图形处理更快。
内存管理
Spark:它提供可配置的内存管理。Spark 1.6 的最新版本已经朝着自动化内存管理的方向发展。
Flink:它提供了自动内存管理。它有自己的内存管理系统,独立于 Java 的垃圾收集器。
容错
Spark: Apache Spark Streaming 恢复丢失的工作,无需额外的代码或配置,它提供了开箱即用的一次性语义。阅读有关 Spark 容错的更多信息。
Flink: Apache Flink 遵循的容错机制是基于 Chandy-Lamport 分布式快照。该机制是轻量级的,这导致在保持高吞吐率的同时提供强大的一致性保证。
可扩展性
Spark:它具有高度可扩展性,我们可以在集群中不断添加 n 个节点。一个已知的大型 sSpark 集群有 8000 个节点。
Flink: Apache Flink 也是高度可扩展的,我们可以在集群中不断增加 n 个节点 一个已知的大型 Flink 集群有数千个节点。
迭代处理
Spark:它批量迭代其数据。在 Spark 中,每次迭代都必须单独安排和执行。
Flink:它通过使用其流式架构来迭代数据。可以指示 Flink 只处理实际发生变化的部分数据,从而显着提高作业的性能。
语言支持
Spark:它支持 Java、Scala、Python 和 R。Spark 是在 Scala 中实现的。它提供其他语言的 API,如 Java、Python 和 R。
Flink:它支持 Java、Scala、Python 和 R。Flink 是用 Java 实现的。它也提供了 Scala API。