数学建模社区-数学中国

标题: SparkCore:Spark原理初探(执行流程图) [打印本页]

作者: 杨利霞    时间: 2020-4-24 18:08
标题: SparkCore:Spark原理初探(执行流程图)

3 C% `: F. k+ I  J* j  J7 BSparkCore:Spark原理初探(执行流程图)4 B+ z/ t. y4 L
基本概念
( c/ e7 {/ h: Z% }/ E* N% N; }' m5 T: V( y5 R$ ^# M
$ H" ^8 D  d" Z
2.png " t* P; N, l/ d
6 C4 e3 O( ]2 D5 n9 G# S, `
3.png % E0 y; v4 ~1 T) J1 s

$ Z) C8 ~+ B/ f2 y+ m6 T( H名词解释
7 \; A' R* \" d' o- \Application:指的是用户编写的Spark应用程序/代码,包含了Driver功能代码和分布在集群中多个节点上运行的Executor代码。
2 j- u$ {* u9 jDriver:Spark中的Driver即运行上述Application的Main()函数并且创建SparkContext,SparkContext负责和ClusterManager通信,进行资源的申请、任务的分配和监控等
2 S, `7 I. n: ]4 sCluster Manager:指的是在集群上获取资源的外部服务,Standalone模式下由Master负责,Yarn模式下ResourceManager负责;0 `7 ~9 B1 R  g5 {* _& c" W. ~
Executor:是运行在工作节点Worker上的进程,负责运行任务,并为应用程序存储数据,是执行分区计算任务的进程;$ i- j; j7 d+ w. {3 y7 ~
RDD:Resilient Distributed Dataset弹性分布式数据集,是分布式内存的一个抽象概念;
0 g' [( F- j5 `4 X, k; _DAG:Directed Acyclic Graph有向无环图,反映RDD之间的依赖关系和执行流程;+ X$ j8 m; b  U  ~4 S
Job:作业,按照DAG执行就是一个作业;Job==DAG* a) W" t" ?1 u( }' |9 y! l
Stage:阶段,是作业的基本调度单位,同一个Stage中的Task可以并行执行,多个Task组成TaskSet任务集
) M/ c% t+ o; o3 @) B/ _Task:任务,运行在Executor上的工作单元,一个Task计算一个分区,包括pipline上的一系列操作: e' h# E7 M: \1 [  u
基本流程
  u  z2 B$ X  |* Z4 R: j- \
  i6 E$ M+ p4 A; ^$ l" iSpark运行基本流程
* @# I/ z6 Y' J7 |. ~; L! q当一个Spark应用被提交时,首先需要为这个Spark Application构建基本的运行环境,即由任务控制节点(Driver)创建一个SparkContext,
* l3 a7 U% e0 L1 N6 W& OSparkContext向资源管理器注册并申请运行Executor资源;
2 M. j1 N  d' V5 ^资源管理器为Executor分配资源并启动Executor进程,Executor运行情况将随着心跳发送到资源管理器上;
; j" U2 {% Q0 S2 D  g3 MSparkContext根据RDD的依赖关系构建成DAG图,并提交给DAGScheduler进行解析划分成Stage,并把该Stage中的Task组成Taskset发送给TaskScheduler。
. W- C7 d6 \$ S5 b) ETaskScheduler将Task发放给Executor运行,同时SparkContext将应用程序代码发放给Executor。
3 k% A, Y  x6 ]6 U' w- @Executor将Task丢入到线程池中执行,把执行结果反馈给任务调度器,然后反馈给DAG调度器,运行完毕后写入数据并释放所有资源。
& F7 `( S. a  _+ c流程图解
% b0 T. E2 o( Z2 z6 @% j/ j% y$ T, K/ I3 e+ V; ?
4.png 5 d3 P4 c& @" \& x+ p, E7 p

9 F. B7 z/ u6 o 5.png
% o& }* r; |1 a) u( S" C+ A  @8 a0 g
6.png * _0 N2 k# \* b# W
8 t7 b( c3 @" w* I' K% T" U$ @" E$ Q
7.png 5 J0 n( `: j! ^) @  j# G5 @( G

9 m. r9 x& Q; x/ ]7 G; N 8.png
8 I' l% Z) M( z/ {0 H* [1 B1 K/ z" @2 c9 [
& q! x  f4 P7 s( B- A3 I( k
1 i8 F' s# p8 j3 K4 J
总结4 v1 s4 B$ l$ r8 d9 V% J& w
: c& b4 S6 c8 X( \5 e! a9 n( n
Spark应用被提交–>SparkContext向资源管理器注册并申请资源–>启动Executor- C' k8 S% [) W. J& K2 [1 h* Z
RDD–>构建DAG–>DAGScheduler划分Stage形成TaskSet–>TaskScheduler提交Task–>Worker上的Executor执行Task
% O1 K1 H/ l! j1 \4 l4 C7 k) o7 B  @9 {4 [' ]
————————————————7 x' X# }: r6 J/ t
版权声明:本文为CSDN博主「真情流露哦呦」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。* E( {" N% x- ]
原文链接:https://blog.csdn.net/weixin_43563705/article/details/105699268
( T& u3 T$ Q% O9 |2 d' A, M) S/ s; ^4 Z; Y( L/ B! k

; @7 T4 J& w7 m' j0 \- s1 X




欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5