Hadoop是一个基于Apache的开源框架,用Java编写。它是著名的大数据工具之一,使用其文件系统HDFS(Hadoop分布式文件系统)提供分布式存储功能,并使用Map-Reduce编程模型进行分布式处理。Hadoop使用一个商品硬件集群来存储和运行应用程序。由于Hadoop使用分布式计算模型来处理大数据。它还提供了很多功能,以提高其功率。Hadoop提供低成本、容错性、可扩展性、速度、数据定位、高可用性等。Hadoop生态系统也非常大,它提供了许多其他工具,在Hadoop的基础上工作,使其具有很高的功能。

Spark是一个开源的处理引擎,是为了方便分析操作而设计的。它是一个集群计算平台,被设计为快速并为一般用途而制造。Spark的设计涵盖了各种批处理应用、机器学习、流式数据处理和互动查询。Apache Spark提供了内存处理等功能,一个强大的处理引擎附带了一个紧密集成的组件,这使得它很高效。Spark Streaming有一个用于流处理的高级库。

Flink也是一个开源的流处理框架,在Apache许可下。Apache Flink用于分布式和高性能的数据流应用。它还支持其他处理方式,如图形处理、批处理和机器学习的迭代处理等。但它主要以流处理而闻名。现在,我们可能会有这样的疑问:所有这些处理也可以用Spark来完成,那么为什么我们需要Flink。答案是,Flink被认为是下一代流处理引擎,从速度上来说,比Spark和Hadoop都快。如果Hadoop是2G,Spark是3G,那么Flink将是大数据处理的4G。Flink还为我们提供了低延迟和高吞吐量的应用。

下面是Hadoop、Spark和Flink之间的区别对比表 –

比较项 Apache Hadoop Apache Spark Apache Flink
数据处理 Hadoop主要是为批处理而设计的,在处理大型数据集时非常有效。 它支持批处理,也支持流处理。 它同时支持批处理和流处理。Flink还为批处理和流处理提供了单一的运行时间。
流引擎 它一次将完整的数据集作为输入并产生输出。 在微批中处理数据流。 真正的流引擎使用流的工作负载:流、微批、SQL、批。
数据流 数据流不包含任何循环。支持线性数据流。 Spark支持循环数据流,并将其表示为(DAG)直接非循环图。 Flink在运行时使用受控的循环依赖图,它有效地体现了ML算法。
计算模型 Hadoop Map-Reduce支持面向批次的模型。 它支持微批处理的计算模型。 Flink支持基于操作者的连续流模型。
性能 比Spark和Flink慢。 比Hadoop多,比Flink少。 性能是这三者中最高的。
内存管理 可配置的内存管理支持动态或静态的管理。 Spark的最新版本有自动内存管理。 支持自动内存管理
容错性 使用复制机制具有高度的容错性。 Spark RDD通过血统提供容错。 容错是基于Chandy-Lamport分布式快照的结果,具有高吞吐量。
可扩展性 高度可扩展,可以扩展到数万个节点。 高度的可扩展性。 它也是高度可扩展的。
迭代处理 不支持迭代处理。 支持迭代处理 在其流式结构的帮助下迭代数据。
支持的语言 Java、C、C++、Python、Perl、groovy、Ruby等。 Java、Python、R、Scala。 Java, Python, R, Scala.
成本 使用商品硬件,价格较低,需要大量的RAM,所以成本相对较高。 Apache Flink也需要大量的RAM,所以成本相对较高。
抽象性 在Map-Reduce中没有抽象性。 Spark RDD抽象 Flink支持批处理和DataStreams的数据集抽象。
SQL支持 用户可以使用Apache Hive运行SQL查询。 用户可以使用Spark-SQL运行SQL查询。它还支持Hive for SQL。 Flink支持类似于SQL表达式的Table-API。Apache基金会正在计划在其未来的版本中加入SQL接口。
缓存 Map-Reduce不能缓存数据。 它可以在内存中缓存数据 Flink也可以在内存中缓存数据。
硬件要求 在不太昂贵的商品硬件上运行良好。 它也需要高水平的硬件。 Apache Flink也需要高级别的硬件
机器学习 Apache Mahout被用于ML。 Spark在实现ML算法方面非常强大,它有自己的ML库。 Flink的FlinkML库被用于ML的实现。
代码行数 Hadoop 2.0有1,20000行的代码。 20000行的代码中开发。 它是用Scala和Java开发的,所以代码行数比Hadoop少。
高可用性 在高可用性模式下可配置。 可在高可用性模式下配置。 可在高可用性模式下配置。
Amazon S3连接器 提供对Amazon S3连接器的支持。 提供对Amazon S3连接器的支持。 提供对Amazon S3连接器的支持。
Backpressure Handing Hadoop通过手动配置处理背压。 Spark也通过手动配置处理背压。 Apache Flink通过系统架构隐式处理背压。
窗口标准 Hadoop没有任何窗口标准,因为它不支持流。 Spark有基于时间的窗口标准。 Flink有基于记录的Flink窗口标准。
Apache许可证 Apache License 2 Apache License 2 Apache License 2.