spark与hadoop

浏览: 1624

在网上摘取的一些关于两者的对比,待增加。。

spark

Spark是小数据集上处理复杂迭代的交互系统,并不擅长大数据集,也没有稳定性。

但是最近的风评已经变化,尤其是14年10月他们完成了Peta sort的实验,这标志着Spark越来越接近替代Hadoop MapReduce了。

Hadoop

Hadoop包括Yarn和HDFS以及MapReduce,说Spark代替Hadoop应该说是代替MapReduce。

hadoop mr 的算法是要做data shuffle,同时需要把需要计算的数据从hdfs 多次读出写入。

原生语言:hadoop-JAVA,Spark-scala

评注:虽然可以实现接口,但原生的语言就是好用,如果某人痛恨java,Spark给你一条生路。

计算模型:hadoop-MapReduce,Spark-DAG(有向无环图)

评注:经常有人说Spark就是内存版的MapReduce,实际上不是的。Spark使用的DAG计算模型可以有效的减少Map和Reduce人物之间传递的数据,尤其适合反复迭代的机器学习场景。而Hadoop则更擅长批处理。不过Tez也是使用的DAG计算模型,他也是Hadoop,明眼人都知道DAG计算模型比MR更好。

存储:hadoop-HDFS, Spark-RDD,HDFS

评注:spark既可以仅用内存存储,也可以在HDFS上存储,即使Spark在HDFS上存储,DAG计算模型在迭代计算上还是比MR的更有效率。

我并不觉得这两个及系统又大多的矛盾,只不过Spark一直宣称比hadoop快而已。实际上从应用场景上区分,Hadoop更适合做批处理,而Spark更适合做需要反复迭代的机器学习。

Spark的提出很大程度上是为了解决MapReduce在处理迭代算法上的缺陷。

Spark解决这一问题的方法是提供了一个更强大的primitive数据抽象模型--RDD(Resilient Distributed Datasets),

并定义了一系列转化(map,filter,sample,...)和分布式操作(reduce,collect,count...)。


hadoop的不足和局限:

1、抽象层次低,需要手工编写代码来完成,使用难以上手;

2、一个Job只有哦Map和Reduce两个阶段,复杂的计算需要大量的Job来完成,Job之间的依赖关系是由开发者自己管理的;

3、处理逻辑隐藏在代码细节中,没有整体逻辑;

4、中间结果也放在HDFS文件中;

5、时延高,只试用Batch数据处理,对于交互式数据处理、试试数据处理的支持不够;

6、对于迭代式数据处理性能比较差

推荐 3
本文由 liliwu 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

0 个评论

要回复文章请先登录注册