Mapreduce和Spark的区别是什么?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
hadoop的一个作业:job job分为map task和reduce task,每个task都是在自己的进程中运行的 当task结束时,进程也会结束
spark用户提交的任务:application 一个application对应一个sparkcontext,app中存在多个job 每触发一次action操作就会产生一个job 这些job可以并行或串行执行 每个job中有多个stage,stage是shuffle过程中DAGSchaduler通过RDD之间的依赖关系划分job而来的 每个stage里面有多个task,组成taskset有TaskSchaduler分发到各个executor中执行 executor的生命周期是和app一样的,即使没有job运行也是存在的,所以task可以快速启动读取内存进行计算。
hadoop的job只有map和reduce操作,表达能力比较欠缺 在mr过程中会重复的读写hdfs,造成大量的io操作,多个job需要自己管理关系。
spark的迭代计算都是在内存中进行的 API中提供了大量的RDD操作如join,groupby等 通过DAG图可以实现良好的容错