Spark代码执行流程、术语以及宽窄依赖

1.Spark算子的分类

1.Transformation类算子——懒执行

2.Action类算子——触发懒执行算子执行

3.持久化算子

2.Spark代码的流程

1.创建SparkConf()

val conf = new SparkConf().setMaster().setAppName()........

2.创建SparkContext()

val sc = new SparkContext(conf)

3.创建RDD

val rdd =new sc.textFile("hello.txt")

4.对RDD使用Transformation类算子进行数据转换

例如:map/flatmap/reducebykey

5.对RDD使用Action类算子进行触发执行

例如:foreach/take

6.sc.stop()

3. 术语解释

1.概念解释

1.Master(standalone):资源管理的主节点(进程)
2.Cluster Manager:在集群上获取资源的外部服务
3.Worker Node(standalone):资源管理的从节点(进程)或者说管理本机资源的进程
4.Application:基于Spark的用户程序,包含了Driver程序和运行在集群的Executor程序
5.Driver program:用来连接工作进程(Worker)程序
6.Executor:是在一个Worker进程管理的节点上为Application启动一个进程,该进程负责运行任务,并且负责将数据在内存或磁盘上。每个应用程序都有各自独立的executors
7.Task:被送到某个executor上的工作单元
8.Job:包含很多任务(Task )的并行计算,可以看作和action对应
9.Stage:一个job会被拆分很多组任务,每组任务被称为Stage(就像Mapreduce分为map task 和reduce task一样)

2. 他们之间的关系

1.资源层面

资源管理的主节点Master,从节点Worker,可以启动Executor(里面有线程池)
Master——》worker——》Executor——》ThreadPool

2. 任务层面

一个spark应用程序叫Application,由job组成,job由stage组成,stage由task组成
Application——》job——》Stage——》task(task任务发动到线程池里面)

4.宽依赖和窄依赖

1.宽依赖

父RDD与子RDD partition之间的关系是一对多的关系,会产生shuffle

2.窄依赖

父RDD与子RDD partition之间的关系是一对一的关系,不会产生shuffle

猜你喜欢

转载自blog.csdn.net/weixin_48929324/article/details/112853481