重拾Spark 之day03--Spark的运行原理与角色

简单梳理下Spark的程序的运行原理与Spark各阶段的各个角色。

在这里插入图片描述

  1. 构建Spark Application运行环境;在Driver Program中新建SparkContext(包含SparkContext的程序称为Driver Program);Spark Application 运行的表现方式为:在集群上运行着一组独立的executor进程,这些进程由SparkContext来协调;简单来说,SparkContext 是程序的主入口。
  2. SparkContext向资源管理器申请运行Executor资源,并启动StandaloneExecutorBackend,executor向SparkContext申请task;集群通过SparkContex连接到不同的cluster manager(standalone、yarn、mesos),cluster manager为运行应用的Executor分配资源;一旦连接建立之后,Spark每个Application就会获得各个节点上的Executor进程;Executor才是真正运行在WorkNode上的工作进程,它们为应用来计算或者存储数据。
  3. SparkContext获取到executor之后,Application的应用代码将会被发送到各个executor。
  4. SparkContext构建RDD DAG图,将RDD DAG图分解成Stage DAG图,将Stage提交给TaskScheduler,最后由TaskScheduler将Task发送给Executor运行。
  5. Task在Executor上运行,运行结束后释放所有资源。
  • Driver Program :运⾏main 函数并且新建 SparkContext 的程序(初始化工作)。
  • Application:基于 Spark 的应用程序,包含了 driver 程序和集群上的executor(代码逻辑与运行资源)。
  • Cluster Manager:指的是在集群上获取资源的外部服务(提供外部运行资源,资源分配)。目前有三种类型
    (1)Standalone: spark 原生的资源管理,由 Master 负责资源的分配
    (2)Apache Mesos:与 hadoop MR 兼容性良好的一种资源调度框架
    (3)Hadoop Yarn: 主要是指 Yarn 中的 ResourceManager
  • Master:集群中老大,负责资源的分配和任务的调度
  • Worker Node: 集群中任何可以运行 Application 代码的节点(小弟),在Standalone 模式中指的是通过 slaves 文件配置的 Worker 节点,在 Spark on Yarn模式下就是 NodeManager 节点
  • Executor:是在一个 worker node 上为某应⽤启动的⼀个进程,该进程负责运⾏行任务,并且负责将数据存在内存或者磁盘上。每个应⽤都有各自独立的executor(运行当前任务所需要的资源)。
  • Task :被送到某个 executor 上的工作单元(线程),是Spark实际执行应用的最小单元。
  • Cache:Spark 中设置的数据缓存
  • Job:RDD中由Action算子所生成的一个或多个Stage。
  • Stage:每个Job会因为RDD之间的依赖关系拆分成多组任务集合,称为Stage。Stage的划分是由DAGScheduler来划分的,有Shuffle Map Stage 和 Result Stage两种。
  • DAGScheduler:DAGScheduler是面向Stage的任务调度器,负责接收Spark应用提交的Job,根据RDD的依赖关系划分Stage,并提交Stage给TaskScheduler。
  • TaskScheduler:TaskScheduler是面向Task的调度器,它接收DAGScheduler提交过来的Stage,然后把Task分发到Worker节点运行,由Worker节点的Executor来运行该任务。
    在这里插入图片描述
    详细步骤:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值