zoukankan      html  css  js  c++  java
  • Spark集群的任务提交执行流程

    本文转自:https://www.linuxidc.com/Linux/2018-02/150886.htm

    一、Spark on Standalone

    1.spark集群启动后,Worker向Master注册信息

    2.spark-submit命令提交程序后,driver和application也会向Master注册信息

    3.创建SparkContext对象:主要的对象包含DAGScheduler和TaskScheduler

    4.Driver把Application信息注册给Master后,Master会根据App信息去Worker节点启动Executor

    5.Executor内部会创建运行task的线程池,然后把启动的Executor反向注册给Dirver

    6.DAGScheduler:负责把Spark作业转换成Stage的DAG(Directed Acyclic Graph有向无环图),根据宽窄依赖切分Stage,

            然后把Stage封装成TaskSet的形式发送个TaskScheduler;

              同时DAGScheduler还会处理由于Shuffle数据丢失导致的失败;

    7.TaskScheduler:维护所有TaskSet,分发Task给各个节点的Executor(根据数据本地化策略分发Task),监控task的运行状态,负责重试失败的task;

    8.所有task运行完成后,SparkContext向Master注销,释放资源;

    注:job的失败不会重试

    二、Spark on Yarn

    yarn是一种统一的资源管理机制,可以通过队列的方式,管理运行多套计算框架。Spark on Yarn模式根据Dirver在集群中的位置分为两种模式

    一种是Yarn-Client模式,另一种是Yarn-Cluster模式

    yarn框架的基本运行流程图

    ResourceManager:负责将集群的资源分配给各个应用使用,而资源分配和调度的基本单位是Container,

                   其中封装了集群资源(CPU、内存、磁盘等),每个任务只能在Container中运行,并且只使用Container中的资源;

    NodeManager:是一个个计算节点,负责启动Application所需的Container,并监控资源的使用情况汇报给ResourceManager

    ApplicationMaster:主要负责向ResourceManager申请Application的资源,获取Container并跟踪这些Container的运行状态和执行进度,

             执行完后通知ResourceManager注销ApplicationMaster,ApplicationMaster也是运行在Container中;

    (1)client

     yarn-client模式,Dirver运行在本地的客户端上。

    1.client向ResouceManager申请启动ApplicationMaster,同时在SparkContext初始化中创建DAGScheduler和TaskScheduler

    2.ResouceManager收到请求后,在一台NodeManager中启动第一个Container运行ApplicationMaster

    3.Dirver中的SparkContext初始化完成后与ApplicationMaster建立通讯,ApplicationMaster向ResourceManager申请Application的资源

    4.一旦ApplicationMaster申请到资源,便与之对应的NodeManager通讯,启动Executor,并把Executor信息反向注册给Dirver

    5.Dirver分发task,并监控Executor的运行状态,负责重试失败的task

    6.运行完成后,Client的SparkContext向ResourceManager申请注销并关闭自己

    (2)cluster

    yarn-cluster模式中,当用户向yarn提交应用程序后,yarn将分为两阶段运行该应用程序:

    第一个阶段是把Spark的Dirver作为一个ApplicationMaster在yarn中启动;

    第二个阶段是ApplicationMaster向ResourceManager申请资源,并启动Executor来运行task,同时监控task整个运行流程并重试失败的task;

     

    Yarn-client和Yarn-cluster的区别:

    yarn-cluster模式下,Dirver运行在ApplicationMaster中,负责申请资源并监控task运行状态和重试失败的task,

    当用户提交了作业之后就可以关掉client,作业会继续在yarn中运行;

    yarn-client模式下,Dirver运行在本地客户端,client不能离开。

  • 相关阅读:
    【jQuery基础学习】03 jQuery中的事件与动画
    【jQuery基础学习】02 jQuery的DOM操作
    【jQuery基础学习】01 jQuery选择器
    【jQuery基础学习】00 序
    【JS复习笔记】07 复习感想
    【JS复习笔记】06 方法
    洛谷P1067 多项式输出 NOIP 2009 普及组 第一题
    嵊州D6T2 城市 city
    博弈论小结
    嵊州D2T4 十七个中毒的英国人 poisoning
  • 原文地址:https://www.cnblogs.com/beiyi888/p/9777529.html
Copyright © 2011-2022 走看看