Spark

2.Spark与Hadoop的对比

2019-05-28  本文已影响0人  山间浓雾有路灯

上一篇文章---Spark概述:https://www.jianshu.com/p/8f48abff7a5b

这篇文章主要是与MapReduce和Hadoop的名词对比

先从一张图了解下Spark和MapReduce的比较 spark VS mr.jpg

再从一张图了解一下Spark的运行原理


5255ddb6-8b08-4524-b5a5-0e4bd53ff5aa-2500378.jpg

从这张图我们再进一步进行分析Spark和Hadoop的区别

Hadoop

1.一个MapReduce程序就是一个job,而一个job里面可以有一个或者多个task,task又可以区分为map task和reduce task
2.MapReduce中的每个task分别在自己的进程中运行,当该task运行完时,进程也就结束

Spark

Application

在SPark中,一个任务叫Application,也就是spark-submit提交的程序

Driver

完成任务的调度以及和executor和cluster manager进行协调
1.(驱动程序)是Spark的核心组件
2.构建SparkContext(Spark应用的入口,创建需要的变量,还包含集群的配置信息等)
3.将用户提交的job转换为DAG图
4.根据策略将DAG图划分为多个stage,根据分区从而生成一系列tasks
5.根据tasks要求要RM申请资源
6.提交任务并检测任务状态

Executor

1.每个Spark executor作为一个Yarn容器(container运行)
2.真正执行task的单元,一个节点上会包含多个container,一个container包含一个executor

Job

1.一个action算子就算一个job,例如count,first
2.每个action相当于一个阶段性的结束
3.由多个stage组成

Task

1.Spark中最小的执行单元,是一个线程
2.RDD一般是带有partitions的,每个partitions在一个executor上的执行可以认为是一个task

Stage

1.Stage是Spark独有的
2.一般而言一个Job会切换成一定数量的stage
3.各个stage之前按照顺序执行
4.对应一个taskset,一个stage是对task的包装,taskset对应一组关联的相互之间没有shuffle依赖关系的task组成


images

这里涉及到一个宽窄依赖的概念,窄依赖都是一对一的,比如stage1和stage2。宽依赖需要依赖前面其他节点的数据,比如stage3需要依赖stage1和stage2的数据。
其实stage表示一个阶段,内部有一些并发的数据处理,stage和stage之间有一定的数据依赖关系,stage可以理解成一个DAG有向无环图

下一章开始学习Spark Core相关的知识,敬请期待!

上一篇下一篇

猜你喜欢

热点阅读