美文网首页运维
spark架构与作业执行流程

spark架构与作业执行流程

作者: 一路向北__ | 来源:发表于2017-05-18 14:53 被阅读62次

    spark相关术语

    1. Application
      指的是用户编写的Spark应用程序,包含了一个Driver 功能的代码和分布在集群中多个节点上运行的Executor代码;

    2. Driver
      Spark中的Driver即运行上述Application的main()函数并且创建SparkContext,其中创建SparkContext的目的是为了准备Spark应用程序的运行环境。在Spark中由SparkContext负责和ClusterManager通信,进行资源的申请、任务的分配和监控等;当Executor部分运行完毕后,Driver负责将SparkContext关闭。通常用SparkContext代表Driver;

    3. Executor
      Application运行在Worker 节点上的一个进程,该进程负责运行Task,并且负责将数据存在内存或者磁盘上,每个Application都有各自独立的一批Executor。

    4. Cluster Manager
      指的是在集群上获取资源的外部服务,目前有3种方式

    5. Worker
      集群中任何可以运行Application代码的节点。

    6. Job
      包含多个Task组成的并行计算,往往由Spark Action催生,一个JOB包含多个RDD及作用于相应RDD上的各种Operation;

    7. stage
      每个Job会被拆分很多组Task,每组任务被称为Stage,也可称TaskSet,一个作业分为多个阶段;

    8. Task
      被送到某个Executor上的工作任务;


      111609254102564.gif

    Spark集群模式架构

    集群架构图
    上图中,Spark集群Cluster Manager目前支持如下三种模式:
    1.Standalone模式
    Standalone模式是Spark内部默认实现的一种集群管理模式,这种模式是通过集群中的Master来统一管理资源,而与Master进行资源请求协商的是Driver内部的StandaloneSchedulerBackend(实际上是其内部的StandaloneAppClient真正与Master通信),后面会详细说明。
    2.YARN模式
    YARN模式下,可以将资源的管理统一交给YARN集群的ResourceManager去管理,选择这种模式,可以更大限度的适应企业内部已有的技术栈,如果企业内部已经在使用Hadoop技术构建大数据处理平台。
    3.Mesos模式
    随着Apache Mesos的不断成熟,一些企业已经在尝试使用Mesos构建数据中心的操作系统(DCOS),Spark构建在Mesos之上,能够支持细粒度、粗粒度的资源调度策略(Mesos的优势),也可以更好地适应企业内部已有技术栈。

    1.基于standalone模式下的spark架构

    1.1 角色介绍
    • Client:客户端进程,负责提交作业到Master。
    • Master:Standalone模式中主控节点,负责接收Client提交的作业,管理Worker,并命令Worker启动Driver和Executor。
    • Worker:Standalone模式中slave节点上的守护进程,负责管理本节点的资源,定期向Master汇报心跳,接收Master的命令,启动Driver和Executor。
    • Driver: 一个Spark作业运行时包括一个Driver进程,也是作业的主进程,负责作业的解析、生成Stage并调度Task到Executor上。包括DAGScheduler,TaskScheduler。
    • Executor:即真正执行作业的地方,一个集群一般包含多个Executor,每个Executor接收Driver的命令Launch Task,一个Executor可以执行一到多个Task。
    1.2作业相关的名词
    • Stage:一个Spark作业一般包含一到多个Stage。
    • Task:一个Stage包含一到多个Task,通过多个Task实现并行运行的功能。
    • DAGScheduler: 实现将Spark作业分解成一到多个Stage,每个Stage根据RDD的Partition个数决定Task的个数,然后生成相应的Task set放到TaskScheduler中。
    • TaskScheduler:实现Task分配到Executor上执行。
    1.3 提交作业的方式

    提交作业有两种方式分别是:

    1. Driver运行在Worker上(作业的master,负责作业的解析、生成stage并调度task到,包含DAGScheduler)
    2. Driver运行在client上 。
    方式1:Driver运行在Worker上
    111334483727486.png
    方式2:Driver运行在Client上
    111334487788428.png

    相关文章

      网友评论

        本文标题:spark架构与作业执行流程

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