Hadoop Spark Flink 比较

1. Hadoop vs Spark vs Flink  - 数据处理

Hadoop:Apache Hadoop专为批处理而构建。它需要输入中的大数据集,同时处理它并产生结果。批处理在处理大量数据时非常有效。由于数据的大小和系统的计算能力,输出会产生延迟。

Spark:Apache Spark也是Hadoop Ecosystem的一部分。它也是一个批量处理系统,但它也支持流处理。

Flink:Apache Flink为流和批处理提供单个运行时。

 

2. Hadoop vs Spark vs Flink  -  Streaming Engine

Hadoop:Map-reduce是面向批处理的处理工具。它需要输入中的大数据集,同时处理它并产生结果。

Spark:Apache Spark Streaming以微批处理数据流。每批包含在批处理期间到达的事件的集合。但对于我们需要处理大量实时数据并实时提供结果的用例来说,这还不够。

Flink:Apache Flink是真正的流媒体引擎。它使用流来处理工作负载:流,SQL,微批和批处理。 Batch是一组有限的流数据。

 

3. Hadoop vs Spark vs Flink  - 数据流

Hadoop:MapReduce计算数据流没有任何循环。这是一个阶段链。在每个阶段,使用前一阶段的输出向前进展并为下一阶段生成输入。

Spark:虽然机器学习算法是循环数据流,但Spark将其表示为(DAG)直接非循环图。

Flink:Flink采用与其他方法不同的方法。它支持运行时的受控循环依赖图。这有助于以非常有效的方式表示机器学习算法。

 

4. Hadoop vs Spark vs Flink  - 计算模型

Hadoop:MapReduce采用了面向批处理的模型。批处理正在处理静态数据。它一次需要大量数据,处理它然后写出输出。

Spark:Spark采用微批量生产。微批是一种基本上“收集然后处理”的计算模型。

Flink:Flink采用了连续流,基于算子的流模型。连续流算子在数据到达时处理数据,没有任何延迟收集数据或处理数据。

 

5. Hadoop vs Spark vs Flink  - 性能

Hadoop:Apache Hadoop仅支持批处理。它不处理流数据,因此与Hadoop和Spark vs Flink相比,性能更慢。

Spark:虽然Apache Spark拥有出色的社区背景,但现在它被认为是最成熟的社区。但它的流处理效率不如Apache Flink,因为它使用微批处理。

Flink:与其他任何数据处理系统相比,Apache Flink的性能非常出色。 Apache Flink使用本机闭环迭代运算符,当我们比较Hadoop与Spark vs Flink时,它们使机器学习和图形处理更快。

 

6. Hadoop vs Spark vs Flink  - 内存管理

Hadoop:它提供可配置的内存管理。可以动态或静态地执行此操作。

Spark:它提供可配置的内存管理。 Spark 1.6的最新版本已经转向自动化内存管理。

Flink:它提供自动内存管理。它有自己的内存管理系统,与Java的垃圾收集器分开。

 

7. Hadoop vs Spark vs Flink  - 容错

Hadoop:MapReduce具有高度容错能力。如果Hadoop出现任何故障,则无需从头开始重新启动应用程序。

Spark:Apache Spark Streaming恢复丢失的工作,没有额外的代码或配置,它提供了一次性的语义。阅读有关Spark Fault Tolerance的更多信息。

Flink:Apache Flink遵循的容错机制基于Chandy-Lamport分布式快照。该机制重量轻,可以保持高吞吐率并同时提供强大的一致性保证。

 

8. Hadoop vs Spark vs Flink  - 可伸缩性

Hadoop:MapReduce具有令人难以置信的可扩展性潜力,并已在数万个节点的生产中使用。

Spark:它具有高度可扩展性,我们可以在群集中不断添加n个节点。一个大的已知sSpark集群有8000个节点。

Flink:Apache Flink也具有高度可扩展性,我们可以在群集中不断添加n个节点大型已知的Flink群集拥有数千个节点。

 

9. Hadoop vs Spark vs Flink  - 迭代处理

Hadoop:它不支持迭代处理。

Spark:它分批迭代其数据。在Spark中,每个迭代都必须单独调度和执行。

Flink:它使用流式架构迭代数据。可以指示Flink仅处理实际已更改的数据部分,从而显着提高作业的性能。

 

10. Hadoop vs Spark vs Flink  - 语言支持

Hadoop:它主要支持Java,支持的其他语言有c,c ++,ruby,groovy,Perl,Python。

Spark:它支持Java,Scala,Python和R. Spark在Scala中实现。它提供其他语言的API,如Java,Python和R.

Flink:它支持Java,Scala,Python和R.Flink是用Java、Scala实现的。

 

11. Hadoop vs Spark vs Flink  - 优化

Hadoop:在MapReduce中,必须手动优化作业。有几种方法可以优化MapReduce作业:正确配置集群,使用组合器,使用LZO压缩,适当调整MapReduce任务的数量,并为数据使用最合适和紧凑的可写类型。

Spark:在Apache Spark中,必须手动优化作业。有一个新的可扩展优化器Catalyst,它基于Scala中的函数编程构造。 Catalyst的可扩展设计有两个目的:第一,易于添加新的优化技术。其次,使外部开发人员能够扩展优化器催化剂。

Flink:Apache Flink附带一个独立于实际编程接口的优化器。 Flink优化器与关系数据库优化器的工作方式类似,但将这些优化应用于Flink程序,而不是SQL查询。

 

12. Hadoop vs Spark vs Flink  -  Latency

Hadoop:Hadoop的MapReduce框架相对较慢,因为它旨在支持不同的格式,结构和大量数据。这就是为什么Hadoop比Spark和Flink都具有更高的延迟。

Spark:Apache Spark是另一个批处理系统,但它比Hadoop MapReduce快,因为它通过RDD将大部分输入数据缓存在内存中,并将中间数据保存在内存中,最终在完成时或在需要时将数据写入磁盘。

Flink:Apache Flink的数据流运行时只需很少的配置,就可以实现低延迟和高吞吐量。

 

13. Hadoop vs Spark vs Flink  - 处理速度

Hadoop:MapReduce进程比Spark和Flink慢。这种缓慢的发生只是因为基于MapReduce的执行的性质,它产生了大量的中间数据,节点之间交换了大量数据,从而导致巨大的磁盘IO延迟。此外,它必须在磁盘中保留大量数据以便在阶段之间进行同步,以便它可以支持从故障中恢复作业。此外,MapReduce中没有办法将所有数据子集缓存在内存中。

Spark:Apache Spark比MapReduce处理得更快,因为它通过RDD将大部分输入数据缓存在内存中,并将中间数据保存在内存中,最终在完成时或在需要时将数据写入磁盘。 Spark比MapReduce快100倍,这表明Spark比Hadoop MapReduce更好。

Flink:由于其流式架构,它的处理速度比Spark快。 Flink通过指示仅处理实际已更改的部分数据来提高作业的性能。

 

14. Hadoop vs Spark vs Flink  - 可视化

Hadoop:在Hadoop中,数据可视化工具是zoomdata,可以直接连接到HDFS以及Impala,Hive,Spark SQL,Presto等SQL-on-Hadoop技术。

Spark:它提供了一个Web界面,用于提交和执行可以显示生成的执行计划的作业。 Flink和Spark都集成到Apache zeppelin它提供数据分析,摄取,以及发现,可视化和协作。

Flink:它还提供用于提交和执行作业的Web界面。生成的执行计划可以在此界面上显示。

 

15. Hadoop vs Spark vs Flink  - 恢复

Hadoop:MapReduce对系统故障或故障自然具有弹性。它是高度容错的系统。

Spark:Apache Spark RDD允许通过重新计算DAG来恢复故障节点上的分区,同时通过检查点支持与Hadoop更相似的恢复样式,以减少RDD的依赖性。

Flink:它支持将程序存储在数据源和数据接收器中的检查点机制,窗口状态,以及在故障后恢复流式传输作业的用户定义状态。

 

16. Hadoop vs Spark vs Flink  - 安全

Hadoop:它支持Kerberos身份验证,这有点难以管理。但是,第三方供应商已使组织能够利用Active Directory Kerberos和LDAP进行身份验证。

Spark:Apache Spark的安全性有点稀疏,目前只支持通过共享密钥进行身份验证(密码身份验证)。 Spark可以享受的安全奖励是,如果您在HDFS上运行Spark,它可以使用HDFS ACL和文件级权限。此外,Spark可以在YARN上运行以使用Kerberos身份验证。

Flink:Flink通过Hadoop / Kerberos基础架构提供用户身份验证支持。如果您在YARN上运行Flink,Flink将获取提交程序的用户的Kerberos令牌,并使用该证书在YARN,HDFS和HBase上进行身份验证.Flink即将推出的连接器,流程序可以通过SSL将自身身份验证为流代理。

 

17. Hadoop vs Spark vs Flink  - 成本

Hadoop:MapReduce通常可以在比一些替代品更便宜的硬件上运行,因为它不会尝试将所有内容存储在内存中。

Spark:由于spark需要大量RAM才能在内存中运行,因此在群集中增加它会逐渐增加其成本。

Flink:Apache Flink还需要大量的RAM才能在内存中运行,因此会逐渐增加成本。

 

18. Hadoop vs Spark vs Flink  - 兼容性

Hadoop:Apache Hadoop MapReduce和Apache Spark相互兼容,Spark通过JDBC和ODBC共享所有MapReduce对数据源,文件格式和商业智能工具的兼容性。

Spark:Apache Spark和Hadoop彼此兼容。 Spark与Hadoop数据兼容。它可以通过YARN或Spark的独立模式在Hadoop集群中运行,它可以处理HDFS,HBase,Cassandra,Hive和任何Hadoop InputFormat中的数据。

Flink:Apache Flink是一个可扩展的数据分析框架,与Hadoop完全兼容。它提供了一个Hadoop兼容包,用于包装针对Hadoop的MapReduce接口实现的功能,并将它们嵌入到Flink程序中。

 

19. Hadoop vs Spark vs Flink  - 抽象

Hadoop:在MapReduce中,我们没有任何类型的抽象。

Spark:在Spark中,对于批处理,我们有Spark RDD抽象和DStream用于流式传输,这是内部RDD本身。

Flink:在Flink中,我们为流应用程序提供批量和DataStream的数据集抽象。

 

20. Hadoop vs Spark vs Flink  - 易于使用

Hadoop:MapReduce开发人员需要手动编写每个操作的代码,这使得它很难工作。

Spark:它很容易编程,因为它有大量的高级操作员。

Flink:它还拥有高级运营商。

 

21. Hadoop vs Spark vs Flink  - 交互模式

Hadoop:MapReduce没有交互模式。

Spark:Apache Spark有一个交互式shell,可以学习如何充分利用Apache Spark。这是一个用Scala编写的Spark应用程序,它提供了一个具有自动完成功能的命令行环境,您可以在其中运行即席查询并熟悉Spark的功能。

Flink:它带有一个集成的交互式Scala Shell。它可以在本地设置和群集设置中使用。

 

22. Hadoop vs Spark vs Flink  - 实时分析

Hadoop:MapReduce在实时数据处理方面失败,因为它旨在对大量数据执行批处理。

Spark:它可以处理实时数据,即来自实时事件流的数据,速率为每秒数百万个事件。

Flink:它主要用于实时数据分析虽然它还提供快速批量数据处理。

 

23. Hadoop vs Spark vs Flink  -  Scheduler

Hadoop:Hadoop中的Scheduler成为可插拔组件。有两个用于多用户工作负载的调度程序:Fair Scheduler和Capacity Scheduler。为了安排复杂的流程,MapReduce需要像Oozie这样的外部作业调度程序。

Spark:由于内存计算,spark会运行自己的流调度程序。

Flink:Flink可以使用YARN Scheduler,但Flink也有自己的Scheduler。

 

24. Hadoop vs Spark vs Flink  -  SQL支持

Hadoop:它使用户能够使用Apache Hive运行SQL查询。

Spark:它使用户能够使用Spark-SQL运行SQL查询。 Spark提供了像查询语言这样的Hives和像DSL这样的Dataframe来查询结构化数据。

Flink:在Flink中,Table API是一种类似于SQL的表达式语言,它支持DSL之类的数据帧,并且它仍处于测试阶段。有计划添加SQL接口但不确定何时它将落在框架中。

 

25. Hadoop vs Spark vs Flink  - 缓存

Hadoop:MapReduce无法将数据缓存在内存中以满足未来的需求

Spark:它可以将数据缓存在内存中以进行进一步的迭代,从而提高其性能。

Flink:它可以将数据缓存在内存中以进行进一步的迭代,以提高其性能。

 

26. Hadoop vs Spark vs Flink  - 硬件要求

Hadoop:MapReduce在Commodity Hardware上运行良好。

Spark:Apache Spark需要中高级硬件。由于Spark缓存数据在内存中进行进一步的迭代,从而提高了性能。

Flink:Apache Flink还需要中高级硬件。 Flink还可以将数据缓存在内存中,以进行进一步的迭代,从而提高其性能。

 

27. Hadoop vs Spark vs Flink  - 机器学习

Hadoop:它需要像Apache Mahout这样的机器学习工具。

Spark:它有自己的一套机器学习MLlib。在内存缓存和其他实现细节中,它是实现ML算法的强大平台。

Flink:它有FlinkML,它是Flink的机器学习库。它支持运行时的受控循环依赖图。这使得它们与DAG表示相比以非常有效的方式表示ML算法。

 

28. Hadoop vs Spark vs Flink  - 代码行

Hadoop:Hadoop 2.0有1,20,000行代码。更多的行不会产生更多的错误,执行程序将花费很多时间。

Spark:Apache Spark仅用20000行代码开发。代码行的数量小于Hadoop。因此执行程序所需的时间更少。

Flink:Flink是用scala和java开发的,所以没有。代码行的数量小于Hadoop。因此,执行程序所需的时间也会减少。

 

29. Hadoop vs Spark vs Flink  - 高可用性

高可用性是指长时间运行的系统或组件。

Hadoop:可在高可用性模式下配置。

Spark:可在高可用性模式下配置。

Flink:可在高可用性模式下配置。

 

30. Hadoop vs Spark vs Flink  -  Amazon S3连接器

Amazon Simple Storage Service(Amazon S3)是一个对象存储,具有简单的Web服务接口,可以从Web上的任何位置存储和检索任意数量的数据。

Hadoop:为Amazon S3 Connector提供支持。

Spark:为Amazon S3 Connector提供支持。

Flink:为Amazon S3连接器提供支持。

 

31. Hadoop vs Spark vs Flink  - 部署

Hadoop:在独立模式下,Hadoop配置为以单节点非分布式模式运行。在伪分布式模式下,Hadoop以伪分布式模式运行。因此,不同之处在于每个Hadoop守护程序都以伪分布式模式在单独的Java进程中运行。而在本地模式下,每个Hadoop守护程序都作为单个Java进程运行。在完全分布式模式下,所有守护进程在单独的节点中执行,形成多节点集群。

Spark:它还提供了一个简单的独立部署模式,可以在Mesos或YARN集群管理器上运行。它可以手动启动,通过手动启动主人和工作人员或使用我们提供的启动脚本。也可以在一台机器上运行这些守护进程进行测试。

Flink:它还提供独立部署模式,以便在YARN集群管理器上运行。

 

32. Hadoop vs Spark vs Flink  -  Back pressure Handing

BackPressure是指缓冲区已满且无法接收更多数据时I / O开关上的数据累积。在数据瓶颈消除或缓冲区为空之前,不再传输数据包。

Hadoop:它通过手动配置处理背压。

Spark:它还通过手动配置处理背压。

Flink:它通过系统架构隐式处理背压。

 

33. Hadoop vs Spark vs Flink  - 删除重复

Hadoop:Hadoop中没有重复消除。

Spark:Spark还可以精确处理每个记录一次,从而消除重复。

Flink:Apache Flink完全处理每个记录一次,因此消除了重复。流应用程序可以在计算期间维护自定义状态。 Flink的检查点机制确保在出现故障时状态的语义完全一次。

 

34. Hadoop vs Spark vs Flink  -  窗口标准

需要将数据流分组为许多逻辑流,每个逻辑流可以应用窗口运算符。

Hadoop:它不支持流式传输,因此不需要窗口标准。

Spark:它具有基于时间的窗口标准。

Flink:它具有基于记录或任何自定义用户定义的Flink窗口标准。

 

35. Hadoop vs Spark vs Flink  -  Apache许可证

Apache许可证2.0版(ALv2)是由Apache Software Foundation(ASF)编写的许可免费软件许可证。 Apache许可证要求保护版权声明和免责声明。

Hadoop:Apache许可证2。

Spark:Apache许可证2。

Flink:Apache许可证2。

因此,这就是Hadoop与Spark vs Flink的前3大数据技术之间的比较。

你可能感兴趣的:(Flink,Spark,Hadoop)