美文网首页
Spark任务调度

Spark任务调度

作者: 平凡的小Y | 来源:发表于2017-02-09 09:46 被阅读679次

名词解释

Cluster Manager:在Standalone 模式中即为Master(主节点),控制整个集群,监控Worker。在YARN 模式中为资源管理器。在集群上获取资源的外部服务。
Application:用户编写的应用应用程序。
Driver:运行Application 的main() 函数并创建SparkContext,创建SparkContext的目的是和集群的ClusterManager通讯,进行资源的申请、任务的分配和监控等。
Worker:集群中任何可以运行Application代码的节点,类似于YARN中的NodeManager节点。在Standalone模式中指的就是通过Slave文件配置的Worker节点,在Spark on Yarn模式中指的就是NodeManager节点。
Job:一个Spark job由一个或者多个stage组成,一个Application可以产生多个Job。
Stage:每个Job的Task被拆分成很多组Task(DAGScheduler将job拆分为不同的stage), 作为一个TaskSet,命名为Stage。
Task:被送到Executor执行的工作单元,是运行Application的基本单位。多个Task组成一个Stage,而Task的调度和管理由TaskScheduler负责。
Executor:执行器,在 workernode 上执行任务(Task)的组件、用于启动线程池运行任务。每个Application拥有独立的一组Executors。
DAGScheduler:根据Job构建基于Stage的DAG(有向无环任务图),并提交Stage给TaskScheduler
TaskScheduler:将Stage提交给Worker(集群)运行,每个Executor运行什么在此分配。

DAGScheduler

DAGScheduler把一个Spark作业转换成Stage的DAG(Directed Acyclic Graph有向无环图),根据RDD和Stage之间的关系找出开销最小的调度方法,然后把Stage以TaskSet的形式提交给TaskScheduler。

TaskScheduler

TaskScheduler维护所有TaskSet,当Executor向Driver发送心跳时,TaskScheduler会根据其资源剩余情况分配相应的Task。另外TaskScheduler还维护着所有Task的运行状态,重试失败的Task。

YARN-cluster的工作流程

YarnCluster.jpg

1、Spark Yarn Client向YARN中提交应用程序,包括ApplicationMaster程序、启动ApplicationMaster的命令、需要在Executor中运行的程序等;
2、ResourceManager收到请求后,在集群中选择一个NodeManager,为该应用程序分配第一个Container,要求它在这个Container中启动应用程序的ApplicationMaster,其中ApplicationMaster进行SparkContext等的初始化
3、ApplicationMaster向ResourceManager注册,这样用户可以直接通过ResourceManage查看应用程序的运行状态,然后它将采用轮询的方式通过RPC协议为各个任务申请资源,并监控它们的运行状态直到运行结束;
4、一旦ApplicationMaster申请到资源(也就是Container)后,便与对应的NodeManager通信,要求它在获得的Container中启动启动CoarseGrainedExecutorBackend,CoarseGrainedExecutorBackend启动后会向ApplicationMaster中的SparkContext注册并申请Task。这一点和Standalone模式一样,只不过SparkContext在Spark Application中初始化时,使用CoarseGrainedSchedulerBackend配合YarnClusterScheduler进行任务的调度,其中YarnClusterScheduler只是对TaskSchedulerImpl的一个简单包装,增加了对Executor的等待逻辑等;
5、ApplicationMaster中的SparkContext分配Task给CoarseGrainedExecutorBackend执行,CoarseGrainedExecutorBackend运行Task并向ApplicationMaster汇报运行的状态和进度,以让ApplicationMaster随时掌握各个任务的运行状态,从而可以在任务失败时重新启动任务;
6、应用程序运行完成后,ApplicationMaster向ResourceManager申请注销并关闭自己。
(这边是参考别人博客,4、5并不是很懂有待了解)

参考:
http://blog.csdn.net/yirenboy/article/details/47441465

相关文章

  • spark任务调度详解

    一、spark scheduler(spark任务调度) 在使用spark-summit或者spark-shell...

  • Spark任务调度

    名词解释 Cluster Manager:在Standalone 模式中即为Master(主节点),控制整个集群,...

  • Spark任务提交过程

    1. 前言 本文主要讲述一下我对spark任务调度过程的理解,必要的地方会配合源码。 2 . Spark任务调度 ...

  • Spark 内核概述

    Spark内核泛指Spark的核心运行机制,包括Spark核心组件的运行机制、Spark任务调度机制、Spark内...

  • 1.Spark入门之Spark概述

    1.什么是Spark 2.Spark内置模块 Spark Core:实现了Spark的基本功能,包含任务调度、内存...

  • Azkaban调度Spark任务

    调度Spark任务Demo 创建一个新的project 编写代码写一段简单的Spark代码,将程序打包 编写调度命...

  • 三、Azkaban功能总体介绍

    一、概述 Azkaban是一套任务调度系统,可以调度command、hadoopMR、hive、spark、pig...

  • Spark 任务调度概述

    Spark执行的大致过程,如下 Driver程序(即用户编写的Spark程序)初始化SparkContext对象。...

  • Spark任务调度流程

    1.启动Spark集群 2.执行jar包 3.启动了Driver进程(通过执行代码启动了Driver) 然后生成了...

  • spark任务调度模块

    spark应用程序中用户代码是基于RDD的一系列操作。这些操作是延迟执行的。在sparkContext内部作业的提...

网友评论

      本文标题:Spark任务调度

      本文链接:https://www.haomeiwen.com/subject/cxebittx.html