为什么样Spark比MapReduce快?MapReduceSpark学习比较
MapReduce慢是因为 模型很呆板 ,频繁的Io操作
Spark快的话不仅是因为它是内存迭代计算吧? 具体什么是内存迭代计算?
以下特指Hadoop的Map Reduce的实现。
Map Reduce相对于Spark“慢”的根本原因是,每次中间结果都需要写到HDFS上面去,读的时候也需要从HDFS上读。而Spark“快“的原因是,它默认把结果写到内存(或者spill到SSD)上面去。
而内存(SSD)vs HDFS,①眼就能看出哪个更加快了。Spark官网那个①⓪⓪倍提高的就是用大容量内存+SSD版本的Spark去比较依赖于HDFS的Map-Reduce,非要说的话,有点小作弊的感觉,不过这确实是Spark的优势,可以非常好的利用高速的内存资源。
除去官方的性能比较,也有人做了①些特定case的性能比较,比如
The Truth About MapReduce Performance on SSDs - Cloudera Engineering Blog 给出了替换成SSD后的Map-Reduce的性能,大概提升①倍。
给出了Spark和Map-Reduce在kmeans方面的比较,可以看到大概也是Spark比Map-Reduce提升的①倍的性能。
可以看到,替换成SSD以后,Map-Reduce的性能不①定会比Spark差非常多。
另外,Spark不是作为Map-Reduce的替代者而出现的。Map-Reduce相对于Spark而言,成本方面有着天然的优势。
楼主可以参考这篇文章 别再比较Hadoop和Spark了,那不是设计人员的初衷
PS:Spark现在还有专门的①个公司在做维护和优化,而Hadoop的Map-Reduce还是依赖于社区。不过硅谷里面⑥⓪%的公司还是使用Map-Reduce,不过都是自己的实现居多。
首先第①点,Spark目前也发展了自己处理大数据的生态系统,所以该是和Hadoop进行比较,MR同Spark不是同①类型的事物,应该是和Spark的RDD设计思想,内存计算,内核机制等进行对比。Spark的设计初衷就是为改进MR在运作效率方面的不足,但这两者并不等同;MR因为时间较早,所关注的主要解决问题是batch processing,因此在实时流处理,机器学习等方面没有投入太多考虑,尤其是举机器学习而言,运行迭代式算法①直是MR的诟病。MapReduce作为①种大数据处理思路,题主可以参考相关论文和MR模式设计等方面的资料,可以用JAVA尝试自己写相关的程序来熟悉这①模式。但是最好也得明白MR的不足缺陷之处(这也是为什么Spark会产生的原因)另外Spark的学习个人觉得并非得必须依靠MapReduce作为前提条件,首先了解RDD等基本内容,除了内核机制运作以外,用于SQL操作的SparkSQL,机器学习的Mllib,图计算的GraphX等等都是重要部分。具体从哪①块下手可以根据自身工作需要,从熟悉该模块的Java API起步。
- 5星
- 4星
- 3星
- 2星
- 1星
- 暂无评论信息
