Hadoop和Spark的异同

解决问题的层面不一样

HadoopSpark两者都是大数据框架,但是各自存在的目的不尽相同。
Hadoop实质上是解决大数据大到无法在一台计算机上进行存储、无法在要求的时间内进行处理的问题,是一个分布式数据基础设施。
HDFS,它将巨大的数据集分派到一个由普通计算机组成的集群中的多个节点进行存储,通过将块保存到多个副本上,提供高可靠的文件存储。
MapReduce,通过简单的MapperReducer的抽象提供一个编程模型,可以在一个由几十台上百台的机器上并发地分布式处理大量数据集,而把并发、分布式和故障恢复等细节隐藏。
Hadoop复杂的数据处理需要分解为多个Job(包含一个Mapper和一个Reducer)组成的有向无环图。
Spark则允许程序开发者使用有向无环图(DAG)开发复杂的多步数据管道。而且还支持跨有向无环图的内存数据共享,以便不同的作业可以共同处理同一个数据。是一个专门用来对那些分布式存储的大数据进行处理的工具,它并不会进行分布式数据的存储。
可将Spark看作是Hadoop MapReduce的一个替代品而不是Hadoop的替代品。

Hadoop的局限和不足

一个Job只有MapReduce两个阶段,复杂的计算需要大量的Job完成,Job间的依赖关系由开发人员进行管理。
中间结果也放到HDFS文件系统中。对于迭代式数据处理性能比较差。
Reduce Task需要等待所有的Map Task都完成后才开始计算。
时延高,只适用批量数据处理,对于交互式数据处理,实时数据处理的支持不够。

Spark优势

Spark的优势不仅体现在性能提升上,Spark框架为批处理(Spark Core),交互式(Spark SQL),流式(Spark Streaming),机器学习(MLlib),图计算(GraphX)提供了一个统一的数据处理平台。
Spark通过在数据处理过程中成本更低的Shuffle方式,将MapReduce提升到一个更高的层次。利用内存数据存储和接近实时的处理能力,Spark比其他的大数据处理技术的性能要快很多倍。
Spark将中间结果保存在内存中而不是写入磁盘,当需要多次处理同一数据集时,这一点特别实用。
支持比MapReduce更多的函数。

SparkRDD是分布式大数据处理的高层次抽象的数据集合,对这个集合的任何操作都可以像函数式编程中操作内存中的集合一样直观、简便,但集合操作的实现确是在后台分解成一系列Task发送到集群上完成。

原文地址:https://www.cnblogs.com/zeussbook/p/8683238.html