大数据IMF传奇行动绝密课程第21课:从Spark架构中透视Job

来源:互联网 发布:电脑怎么摆脱网络控制 编辑:程序博客网 时间:2024/05/16 01:31

从Spark架构中透视Job

1、通过案例观察Spark架构
2、手动绘制Spark内部架构
3、Spark Job的逻辑视图解析
4、Spark Job的物理视图解析

spark粗粒度

Spark主从分布:
Master
Worker

在配置文件spark-env.sh中有内存、core的配置
spark-shell默认情况下没有任何job
Executors个数有5个,其中4个在worker中,driver也是一个Executor进程。
当前的spark application分配一个ExecutorBackend进程

一个Worker上可以有多个Executor,如:cpu利用率不高,可配多个Executor
application关闭Executor才会关闭
spark中,一旦程序启动,无论程序内部有多少作业,都是复用程序注册时获得的资源,具体分配资源的时候默认分配的方式在每个Worker上为当前程序分配一个ExecutorBackend进程,且默认情况下会最大化的使用cores和memory

Worker中,CoarseGrainedExecutorBackend里面有Executor,并发线程池线程复用的方式不断运行Task
在一个Executor中一次性最多能运行多少并发的Task取决于当前Executor能够使用的cores的数量

应对OOM一个方法:多个Executor(如果有其他大数据平台)、增加分片数量(只有spark)

88个任务具体分配给谁主要取决于数据本地性

并行度也是被继承的

由于线程不关心具体Task中运行什么代码,所以Task和Thread是解耦和的,所以Thread是可以被复用的

当Spark集群启动的时候,首先启动Master进程负责整个集群资源的管理和分配,并接受作业的提交,且为作业分配计算资源。每个工作节点默认情况下都会启动一个Worker Process来管理当前结点的Memory、CPU等计算资源,并且向Master汇报Worker还能够正常工作(只是通过心跳),当用户提交作业给Master的时候,Master会为程序分配id,并分配计算资源,默认情况下,会为当前的应用程序在每个Worker Process下面分配一个CoarseGrainedExecutorBackend进程,该进程默认情况下会最大化的使用当前结点上的内存和cpu

整个集群分为Master和Worker结点,Master有Master守护进程,需要管理所有的Worker结点。Worker结点在Worker Node的守护进程会负责管理Executors。Worker Process根据Master的要求来管理资源。从CoarseGrainedExecutorBackend上看,是Worker Process在管理资源

Worker Process管理当前结点的内存和cpu等计算资源,实质上是通过Master来管理每台机器上的计算资源的

Worker节点上有Worker Process。 Worker Process会接受Master的指令为当前要运行的应用程序分配CoarseGrainedExecutorBackend进程

Worker Process 默认情况下和Executor一对一,可以一对多

Stage0是Stage1的Mapper,Stage1是Stage2的Mapper,Stage1是Stage0的Reducer,Stage2是Stage1的Reducer。
Spark是一个更加精致和高效的MapReduce思想的具体实现

最后一个Stage里面的Task是ResultTask类型,前面所有的Stage中Task的类型都是ShuffleMapTask类型

Stage里面的内容一定是在Executor中执行的,而且Stage必须从前往后执行。

Spark的一个应用程序中可以因为一个不同的Action产生众多的Job,每个Job至少有一个Stage

图21-1 Spark内部架构

0 0
原创粉丝点击