当前位置:首页>开发>正文

浅谈Spark和Hadoop作业之间的区别 Spark可以完全替代hadoop吗

2024-01-10 05:01:48 互联网 未知 开发

 浅谈Spark和Hadoop作业之间的区别 Spark可以完全替代hadoop吗

浅谈Spark和Hadoop作业之间的区别

我想你指的Hadoop作业是指Map/Reduce作业。主要的差别有如下3点:
1、MR作业的资源管控是通过yarn进行的,spark可以通过yarn进行资源管控,也可以不使用yarn,但是多个组件合设时(如集群中既有spark计划,又有HBase查询),建议还是使用yarn;
2、spark是基于内存计算的,计算的中间结果存放在内存,可以进行反复迭代计算;而MR计算的中间结果是要落磁盘的,所以一个job会涉及到反复读写磁盘,这也是性能比不上spark的主要原因;
3、MR的一个task就要对应一个container,container的每次启动都要耗费不少时间,有些hadoop版本(如华为OceanInsight Hadoop)实现了容器预热(重用)功能,这个消耗可能会小一些;而spark是基于线程池来实现的,资源的分配会更快一些。

Spark可以完全替代hadoop吗

spark最大优势在于是基于内存的分布式计算框架,在计算速度方面可甩hadoop好几条街。天生就适合于多迭代的业务场景,在机器学习算法上能够充分体现。另外,spark还支持准实时流式框架spark streaming,分布式查询spark SQL、图计算graph、机器学习ML、R语言等,能够满足整条业务线的需求,从获取、处理、分析等提供支持,而不需再加入其它框架,这应该就是spark最大的野心:大一统。
在我看来,虽然基于内存是spark最大的优势,但是也会造成有些业务场景无法满足,如超大数据量的ETL。相反在这方面hadoop的mapreduce能够很好地hold,所以spark可能不断掠夺hadoop的领地,但是不可能完成替代hadoop。