Spark和Hadoop作业之间的区别

2024-12-26 00:26:34
推荐回答(1个)
回答1:

我想你指的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是基于线程池来实现的,资源的分配会更快一些。