Hadoop 与 Spark 对比

Hadoop进行海量数据分析,MR频繁落地,IO操作,计算时间就拉长。由于这种设计影响,计算过程中不能进行迭代计算。造成网络节点数据传输。

Spark从理念上就开始改变。应用scala特点解决上面的核心问题,提升处理速度。Spark基于内存来实现,内存访问效率比磁盘访问效率高非常多。Spark不能完全基于内存,(所有要加工的数据都放入内存),部分数据也需要落地。一部分数据放在内存中,进行计算,计算中间结果有些不落地,直接放在内存,以val静态常量实现,新的RDD方式来存在。可以实现迭代式计算。

Spark比Hadoop性能,如果基于内存高100倍,如果基于磁盘高10倍。

Spark成也内存,败也内存

Spark基于内存,所以性能自然提高,和Hadoop相比,提高100倍。Spark磁盘方式,比Hadoop快10倍。

Spark对内存要求过多,需要大量内存,内存相比磁盘贵,企业采购压力。硬件要比hadoop贵很多。

Spark基于内存,很容易内存溢出。要么增加硬件来解决。增加cache/persist,增加检查点。把内存中的内容部分放入到磁盘中。性能稍打折扣。

Spark设计非常优秀,基于内存,随着硬件、内存越来越快,越来越廉价。最终Spark会超越Hadoop。Hadoop3.0引入把部分中间结果数据不落地,直接放在内存中。Hive新版提升29倍。

在实际中使用情况:

Hadoop使用比较多,和Yarn整合比较多。

Spark很多公司已经开始采用,逐步替代掉Hadoop作业,MR/hive被替代掉

在企业中Yarn集群中既有老的Hadoop作业,也有新的Spark作业。

Hadoop海量数据的离线分析

Spark海量数据的实时分析

Hadoop的问题

1)  MR过程,Map过程做完要把中间结果数据落地,Reduce要继续加工数据,把中间结果数据读出,继续计算。这个过程中频繁IO操作。导致Hadoop处理速度严重受影响。

2)  分布式环境,网络传输,导致Hadoop处理速度严重受影响。

3)  MR过程非迭代运行,导致Hadoop处理速度严重受影响。

这个3条能否改善?

1)  Hadoop设计非常谨慎,因为当时历史条件(在486稳定运行+网络拨号512k)随着社会发展,硬件日新月异(电脑+网络)Spark设计基于内存。中间过程不落地,后续需要继续使用中间结果,直接拿。性能提升100倍

2)  网络自身硬件速度得到飞速提升,spark直接依赖这样稳定网络环境

3)  整个处理过程是迭代运行。利用内存中中间结果,使用高级函数方式(函数式编程)实现了内存中迭代计算。

Spark比Hadoop快的原因:

1)  基于内存,中间结果不落地,val

2)  迭代式运行

Hadoop生态圈(MR、hive、HDFS、hbase、yarn)

Spark生态圈(SparkSQL、HDFS、Tachyon内存列、yarn/mesos)

超越:SparkSQL替代掉MR和hive

依赖:HDFS和yarn

Spark是Hadoop升级,互相补充。部分替代。Hadoop主要应用于离线处理,Spark相对实时处理(秒级别),Storm真正实时(亚秒级别)

原文地址:https://www.cnblogs.com/tieandxiao/p/8870259.html