Hadoop的局限和不足
1、一个job只有Map和Reduce两个阶段,复杂的计算需要大量的job完成,job间的依赖关系由开发人员进行管理。
2、中间结果也放到HDFS文件中,对于迭代式数据处理性能较差。
3、Reduce Task需要等到所有的Map Task都完成后才开始计算。
4、时延高,只使用批量数据处理,对于交互式数据处理,实时数据处理的支持不够。
两者可合可分
1、Hadoop除了提供HDFS分布式数据存储功能之外,还提供了MapReduce的数据处理功能。所以可以完全抛开spark,完全使用Hadoop的MapReduce来完成数据处理。
Hadoop = HDFS + MapReduce
2、同样,spark也不是非要依附在Hadoop上才能生存,它没有提供文件管理系统,所以,它必须和其它分布式文件系统集成才能运作。可以选择Hadoop的HDFS,也可以选择其它基于云的数据系统平台。但Spark默认是用在Hadoop上的。所以他俩结合才是最好的选择。
Spark数据处理速度秒杀MapReduce
1、Spark因为处理数据的方式不一样,会比MapReduce快很多,MapReduce是分步对数据进行处理的:“从集群中读取数据,进行一次处理,再存到集群,再从集群中读取数据,进行一次处理,存到集群……”
2、Spark会在内存中以接近“实时”的时间完成所有的数据分析:“从集群中读取数据,完成所有必须的分析处理(依赖多个算子),将结果写会集群,完成”。Spark的批处理速度比MapReduce快近10倍,内存中的数据分析速度则快近100倍。
3、如果需要处理的数据和结果需求大部分情况下是静态的,且有充足的时间等待批处理完成,MapReduce的处理方式也是完全可以接受的。
4、如果需要对实时流数据进行分析,比如来自工厂的传感器收集回来的数据,又或者用户访问网站的日志信息,那么更应该使用Spark进行处理。
Spark优势
1、Spark优势不仅体现在性能提升上,Spark框架为批处理(Spark Core)、交互式(Spark SQL)、流式(Spark Streaming)、机器学习(MLlib)、图计算(GraphX)提供了一个统一的数据处理平台。
2、Spark通过在数据处理过程中成本更低的Shuffle方式,将MapReduce提升到一个更高的层次。利用内存数据存储和接近实时的处理能力,Spark比其他的大数据处理技术的性能要快很多倍。
3、Spark将中间结果保存在内存中而不是写入磁盘,当需要多次处理同一数据集时,这一点特别实用。
4、支持比Map和Reduce更多的函数。
5、Spark的RDD是分布式大数据处理的高层次抽象的数据集合,对这个集合的任何操作都可以像函数式编程中操作内存中的集合一样直观、简便,但集合操作的实现确是在后台分解成一系列Task发送到集群上完成。
