Spark系列——了解Spark
一、什么是Spark?
1.Spark是一个分布式的并行计算框架。
2.Spark是下一代的map-reduce,扩展了MR的数据处理流程。
3.MR存在的问题:
(1)调度慢,启动map、reduce太耗时
MR:map进程,reduce进程
spark:executor进程
10个线程:8 map task(线程) 2 reduce(线程)
进程慢,线程快,spark只用申请一次进程,而MR申请多次。
(2)计算慢,每一步都要保存中间结果落磁盘
MR: map->reduce的中间结果在磁盘
spark: map->reduce的中间结果在磁盘(默认)【除非cache一下指定到内存】
(3)API抽象简单,只有map和reduce两个原语
MR:需要通过脚本把map和reduce穿起来,如果项目中有较多的数据处理,写脚本比较费劲,需要画流程图再写脚本。
Spark:通过map和reduce等算子就能将数据串在一起。
(4)缺乏作业流描述,一项任务需要多轮MR
4.spark与MR的内存比较:
8 map 1G,2个reduce 1G
MR:如果执行map执行完,去看yarn这个任务运行的资源情况
这个任务会占用多少资源?2G
spark:1个executor 10G
8 map 1G ,2个reduce 1G
8个map执行完,资源占用情况?
10G
MR进程用完会释放,但是Spark只有1个executor,只要map或者reduce没有执行完成就会占用整个的资源。