QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 846|回复: 0
打印 上一主题 下一主题

SparkCore:Spark原理初探(执行流程图)

[复制链接]
字体大小: 正常 放大
杨利霞        

5250

主题

81

听众

16万

积分

  • TA的每日心情
    开心
    2021-8-11 17:59
  • 签到天数: 17 天

    [LV.4]偶尔看看III

    网络挑战赛参赛者

    网络挑战赛参赛者

    自我介绍
    本人女,毕业于内蒙古科技大学,担任文职专业,毕业专业英语。

    群组2018美赛大象算法课程

    群组2018美赛护航培训课程

    群组2019年 数学中国站长建

    群组2019年数据分析师课程

    群组2018年大象老师国赛优

    跳转到指定楼层
    1#
    发表于 2020-4-24 18:08 |只看该作者 |倒序浏览
    |招呼Ta 关注Ta

    6 I9 E* W2 y" |  NSparkCore:Spark原理初探(执行流程图)
    3 i  I9 D( b) V+ j$ B基本概念
    ( ~2 S" Q9 N  W+ z" Q# y0 X6 P
    1 E. M4 Q0 G( [2 U" V; |+ Y! N" {5 N& B6 C/ j( y
    2.png
    7 l( s0 U5 N3 L" _, m; L- C) P& a( u: H2 y" c. J7 C  X
    3.png 7 k! O4 U* a) p% P( ?
    * h' x; e1 m+ C! o
    名词解释# o) u. b% I4 Q4 @  Z! U
    Application:指的是用户编写的Spark应用程序/代码,包含了Driver功能代码和分布在集群中多个节点上运行的Executor代码。
    + p( X9 z* A1 `2 zDriver:Spark中的Driver即运行上述Application的Main()函数并且创建SparkContext,SparkContext负责和ClusterManager通信,进行资源的申请、任务的分配和监控等+ \0 L( u7 v/ G* `6 ^: y
    Cluster Manager:指的是在集群上获取资源的外部服务,Standalone模式下由Master负责,Yarn模式下ResourceManager负责;% R  M$ j# J& U6 \2 ?& x* a+ ^
    Executor:是运行在工作节点Worker上的进程,负责运行任务,并为应用程序存储数据,是执行分区计算任务的进程;
    " h4 i; c8 |# `8 v: mRDD:Resilient Distributed Dataset弹性分布式数据集,是分布式内存的一个抽象概念;' n+ ~/ T" V. ~5 s
    DAG:Directed Acyclic Graph有向无环图,反映RDD之间的依赖关系和执行流程;
    / |6 S$ [6 t1 g0 I9 N' rJob:作业,按照DAG执行就是一个作业;Job==DAG
    " s" T8 p, z( o' M8 [+ L0 [  zStage:阶段,是作业的基本调度单位,同一个Stage中的Task可以并行执行,多个Task组成TaskSet任务集
    4 Z4 N0 ]( G/ _! G% ^4 ?; [Task:任务,运行在Executor上的工作单元,一个Task计算一个分区,包括pipline上的一系列操作1 H$ {# u4 h! Z4 N$ o
    基本流程' f; [/ B3 B7 r: e1 Q8 \& N
    0 a& s9 J5 I" E/ L4 d. ~( z
    Spark运行基本流程
    - [9 _; c+ X( k7 g& x+ a当一个Spark应用被提交时,首先需要为这个Spark Application构建基本的运行环境,即由任务控制节点(Driver)创建一个SparkContext,
    # w3 g! v6 R" u; u' \) tSparkContext向资源管理器注册并申请运行Executor资源;
    " I- I- L* U1 i+ f资源管理器为Executor分配资源并启动Executor进程,Executor运行情况将随着心跳发送到资源管理器上;
    $ H( T1 o# e1 O+ ], ZSparkContext根据RDD的依赖关系构建成DAG图,并提交给DAGScheduler进行解析划分成Stage,并把该Stage中的Task组成Taskset发送给TaskScheduler。2 _9 N& i8 B8 x5 Y9 E
    TaskScheduler将Task发放给Executor运行,同时SparkContext将应用程序代码发放给Executor。3 P3 \  ?3 q' N+ M% P' e
    Executor将Task丢入到线程池中执行,把执行结果反馈给任务调度器,然后反馈给DAG调度器,运行完毕后写入数据并释放所有资源。
    3 m( @8 l; g9 t8 W  Q: i8 [0 ^0 u) ~流程图解
    - A& X7 _$ [4 ?+ v: a% Z0 W) t9 p- V; z$ ^4 W
    4.png
    / h  B0 m1 Q4 K- h( B8 @
    - J' E( |( g; Z  \ 5.png
    ( S( s/ ?6 I: Z& U0 h/ c9 x
    . j, b( T+ j6 _9 U2 D 6.png
    ! C, K4 m, j! t( N2 [0 d6 \* ~0 L* e6 w
    7.png
    & H9 F$ {. q9 ?3 U3 R7 r) ?
    " c+ W/ c! \7 Z, L0 {4 l 8.png
    : h0 R( g0 E4 R( V9 U4 f3 g0 m$ H' F) A/ D1 o0 C4 K6 o

    # Y1 G' s, @$ M; [7 f9 a& S& }3 \( N6 A7 j% y
    总结: t, B) s' P" S$ M2 A

    ) n8 R# ?* f3 f- wSpark应用被提交–>SparkContext向资源管理器注册并申请资源–>启动Executor
    # c- _" J1 j6 ^7 }/ _0 R& U* hRDD–>构建DAG–>DAGScheduler划分Stage形成TaskSet–>TaskScheduler提交Task–>Worker上的Executor执行Task
    ( e. L3 e% z% l& B
    7 F6 ~& ?" j7 B( Y( p5 v7 g- y" i————————————————
    $ d0 l% F' r7 _( a版权声明:本文为CSDN博主「真情流露哦呦」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    0 p1 `# W8 x2 I原文链接:https://blog.csdn.net/weixin_43563705/article/details/105699268
    9 a9 h2 v& }% A2 x( D! _4 \4 F& f$ f

    3 S2 t9 i' p1 c% e+ i6 k
    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
    您需要登录后才可以回帖 登录 | 注册地址

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

    关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

    手机版|Archiver| |繁體中文 手机客户端  

    蒙公网安备 15010502000194号

    Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

    GMT+8, 2024-4-25 16:55 , Processed in 0.327233 second(s), 53 queries .

    回顶部