目前来说,大数据领域最为活跃的三个计算框架,当属Hadoop、Spark以及Flink这三者。三个框架在不同的大数据处理场景当中,
表现各有优势,因此也常常被拿来做比较。今天我们也来做个Hadoop对比,看看Hadoop、Spark、Flink三大框架,各自的优势劣势如何。
1、数据处理对比
Hadoop专为批处理而生,一次将大量数据集输入到输入中,进行处理并产生结果。
Spark:定义是一个批处理系统,但也支持流处理。
Flink:为流和批处理提供了一个运行时。
2、流引擎对比
Hadoop:Hadoop默认的MapReduce,仅面向于批处理。
Spark:Spark Streaming以微批处理数据流,实现准实时的批处理和流处理。
Flink:Flink是真正的流引擎,使用流来处理工作负载,包括流,SQL,微批处理和批处理。
3、数据流对比
Hadoop:MapReduce计算数据流没有任何循环,每个阶段使用上一阶段的输出,并为下一阶段产生输入。
Spark:尽管机器学习算法是循环数据流,但Spark将其表示为(DAG)直接非循环图或有向无环图。
Flink:Flink在运行时支持受控循环依赖图,支持机器学习算法非常有效。
4、计算模型对比
Hadoop:MapReduce采用了面向批处理的模型,批处理静态数据。
Spark:Spark采用了微批处理。微批处理本质上是一种“先收集再处理”的计算模型。
Flink:Flink采用连续流式流传输模型,实时对数据进行处理,而不会在收集数据或处理数据时出现任何延迟。
5、性能对比
Hadoop:Hadoop仅支持批处理,不支持处理流数据,与Spark和Flink相比,性能会降低。
Spark:支持微批处理,但流处理效率不如Apache Flink。
Flink: Flink使用本机闭环迭代运算符,尤其在支持机器学习和图形处理方面,表现优异。
6、内存管理对比
Hadoop:提供可配置的内存管理,可以动态或静态地执行此操作。
Spark:提供可配置的内存管理,从Spark 1.6开始已朝着自动进行内存管理的方向发展。
Flink:有自己的内存管理系统,提供自动内存管理