Spark集群术语&Pipeline计算模式

1.Master(standalone):资源管理的主节点(进程)管理Worker
2.Cluster Manager:在集群上获取资源的外部服务(例如:standalone Mesos Yarn)
3.Worker Node(standalone):1.管理本地的core和memory资源2.启动Executor
4.Application:基于Spark的用户程序,说白了就是写的每一段代码。
5.Job:包含很多任务(Task)的并行计算,可以看作和action算子对应。
6.Stage:一个job会被拆 分成很多组任务,每一组任务被称为Stage,拆分的标准就是RDD的依赖关系。
7.Task:thread处理任务的单元。就是被拆分出的每一个任务,他是被送到某个Executor上的工作单元。
8.Driver:驱动进程.分发task2.回收task处理结果

在资源层面(从上往下)
Master:主节点

worker:由master管理

Executor:(进程)在worker上启动

Threadpool:(线程池)每一个Executor中都有,在里面可以运行Task

从任务层面(从上往下)
Application:基于Spark的用户程序,说白了就是写的每一段代码

Job:每一个Application里由很多Job,Job的个数由Application决定

Stage:根据RDD的依赖关系切割成每一个Stage

Task:(线程)Stage切割成一组Task。一组Task组成Stage

每一个Task发动到Threadpool中执行,这样任务层面和资源层面就结合起来了。


Spark集群术语&Pipeline计算模式_第1张图片
image.png

Pipeline计算模式

Spark集群术语&Pipeline计算模式_第2张图片
pipeline计算模式

这个Stage的并行度是3。Stage的并行度是由最后一个RDD的Partition个数决定的。Partition个数是由数据量的大小决定的。

RDD1到RDD3都是窄依赖,没有发生shuffle因此是一个Stage。

每一个RDD的Partititon执行算子

每一个task的计算逻辑是所有的Partition的计算逻辑以递归函数的展开式的形式整和起来的

task0:fun3(fun2(textfile(block1)))
task1:fun3(fun2(textfile(block2)))
task2:fun3(fun2(textfile(block3)))

RDD是不存储数据的,它只是一个抽象的概念,RDD只是存储了计算逻辑

因此
task0最好发送到对应b1所在的节点
task1最好发送到对应b2所在的节点
task2最好发送到对应b3所在的节点

你可能感兴趣的:(Spark集群术语&Pipeline计算模式)