Apache Spark和Apache Flink有什么区别?

Apache SparkApache Flink有什么区别?

Apache Flink会replaceHadoop吗?

起初他们有什么共同点? Flink和Spark都是Apache Software Foundation(ASF)的通用数据处理平台和顶级项目。 他们有广泛的应用领域,可用于数十个大数据场景。 (Spark:Spark SQL,Flink:MRQL),graphics处理(Spark:GraphX,Flink:Spargel(base)和Gelly(library)),机器学习(Spark:MLlib,Flink:Flink ML)和stream处理(Spark Streaming,Flink Streaming)。 两者都可以在独立模式下运行,但是许多人在Hadoop(YARN,HDFS)之上使用它们。 由于记忆力的原因,他们有着很好的performance。

但是,他们实现这种多样性的方式以及他们专门研究的情况是不同的。

不同之处:起初我想提供两个链接,详细介绍Flink和Spark之间的区别,然后总结一下。 如果您有时间看看Apache Flink是BigData Analytics Framework的4G和Flink和Spark的异同

与Flink相比,Spark在版本1.5.x之前无法处理大于RAM的数据集

通过对集合进行迭代转换, Flink针对循环或迭代过程进行了优化。 这是通过优化连接algorithm,运算符链接和重用分区和sorting来实现的。 但是,Flink也是批量处理的强大工具。 Flinkstream将数据stream处理为真正的数据stream,即数据元素一旦到达就立即通过stream式节目“stream水线化”。 这允许在stream上执行灵活的窗口操作。 它甚至能够通过使用水印来处理stream中的晚期数据。 此外Flink提供了一个非常强大的兼容性模式,使您可以使用您现有的风暴,地图减less…代码在flink执行引擎

Spark另一方面是基于弹性分布式数据集(RDD)。 这个(大部分)内存数据结构赋予了function以激发function性编程范例。 通过固定内存可以进行大批量计算。 Sparkstream将数据stream转换为小批量,即收集在一定时间内到达的所有数据,并在收集的数据上运行常规批处理程序。 批处理程序正在运行时,将收集下一个小批量的数据。

Flink会replaceHadoop吗?

不,不会的 Hadoop包含不同的部分:

  • HDFS – Hadoop 分布式文件系统
  • YARN – 另一个资源谈判者 (或资源经理)
  • MapReduce – Hadoop的批处理框架

作为BigData集群的组成部分,HDFS和YARN仍然是必要的。 这两者正在构build分布式查询引擎或分布式数据库等其他分布式技术的基础。 MapReduce的主要用途是批量处理大于集群RAM的数据集,而Flink则用于stream和迭代处理。 所以一般来说,这两者可以共存,即使我强烈build议使用flinks更强大,更容易使用批处理function。

根据Apache Flink & Spark文档页面:

Apache Flink是分布式stream和批处理数据处理的开源平台

Apache Spark™是用于大规模数据处理的快速和通用引擎。

实时stream处理是Apache Flink的USP

Flink提供富有performance力的API,使程序员能够快速开发stream式数据应用程序。

Flink被认为是一个很好的YARN公民(Spark尚未完成),它可以直接在其执行引擎上运行现有的MapReduce作业。

看看这篇由Ian Pointer发布的infoworld沼泽的更多细节。

VON HANS-PETER ZORN UND JASIR EL-SOBHY发布的博客的主要区别

  1. stream处理 :虽然Spark是一个面向批处理的系统,可以在称为RDD的数据块上运行,但是Apache Flink是一个能够实时处理行的stream处理系统。
  2. 迭代:通过利用stream式架构, Flink允许您本地迭代数据, Spark也只支持批处理
  3. 内存pipe理Spark工作必须进行优化,并适应特定的数据集,因为如果您想要正确地进行分区和caching,您需要手动控制分区和caching
  4. 成熟度Flink仍处于起步阶段,只有less数几个生产部署
  5. 数据stream :与程序编程范例相比, Flink遵循分布式数据stream方法。 对于除了常规操作input之外还需要中间结果的数据集操作,使用广播variables将预先计算的结果分发给所有工作节点

关于你的第二个问题, FlinkSpark都不能代替Hadoop

Flink是Hadoop MapReduce的替代品 ; 在批处理和stream模式下均可工作,消除了映射并减less了作业,转而采用有向图的方式,利用内存中的存储来获得巨大的性能提升。

作为大型Hadoop生态系统一部分的HDFS(Hadoop分布式文件系统) 和YARN(另一种资源交易者) 不能被Flink

Capital One公司大数据工程总监Slim Baltagi介绍了这个闪存与火花的演示。

Flink的程序是由基于成本的优化器(例如:SQL引擎)优化的。 因此,只要集群特性发生变化,数据随时间发展,Flink应用就需要重新configuration和维护。

从开发人员的angular度来看:

目前:如果你想在大数据环境下尽快find一份工作,学习Spark,因为它主要是在市场上使用的。

但在我看来,Flink是更好的select,因为在开发过程中我不必面对这么多的“内存不足”问题。 Flink有它自己的内存pipe理器,所以一般来说你不需要关心它。

Flink的独特function之一就是使用水印处理乱序数据stream

由于采用微配料架构,Spark提供了接近实时的stream式传输,而Apache Flink提供了基于Kappa架构的纯Streamig架构的真实实时stream式传输。 这是由雅虎stream媒体基准testing应用程序,然后再扩展雅虎stream媒体应用程序validation..通过解释这些细节,并帮助我了解它的video。 https://www.youtube.com/watch?v=WTBsMTpR-mE