zoukankan      html  css  js  c++  java
  • Spark 架构原理介绍 以及 job、task、stag 概念

    Spark运行模式

    一:Spark 运行架构介绍

      相关术语概念详解:

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

        Driver:Spark中的Driver就是运行Applicationmain()函数并且创建SparkContextSparkContext为Spark准备运行环境,负责和ClusterManager通信,进行资源的申请、任务的分配和监控,当Executor部分运行完毕后,负责SparkContext关闭。

        Worker:集群中运行Application代码的节点。可以理解为服务器。

        Executor:Application运行在work节点上的一个进程,该进程负责运行task。(理解work节点上的一个进程,来执行Driver的任务task)

        ClusterManager:在集群上获取资源的外部服务。

        Job(作业):包含多个task组成的并行计算。rdd包括转换和运行Action,只要有一个Action就是一个Job。

        Stag(阶段):每个Job会被拆分成多组task。

        Task(任务):最终被推送的到Executor进程上的任务。

      Spark基本任务流程图

        

        1:构建Spark Application的运行环境 ,启动sparkContext,sc注册并申请Executor

        2:资源管理器分配Executor资源并启动 ****ExecutorBackend,Executor运行状态随着心跳发送到资源管理器

        3:SC开始构建DAG(有向无环图),DAG开始分解成stage,并且有TaskSet发送给Task Scheduler 。Executor想SC申请Task。

        DAGSchuduler

          DAGSchuduler把一个Spark作业换成StageDAG根据RDDStage之间的关系找出开销最小的调度方法,然后StageTaskSet的形式提交给TaskScheduler

        TaskScheduler

          TaskScheduler维护所有的TaskSet,当Executor向Driver发送心跳时,TaskScheduler会根据其资源剩余情况分配相应的Task

     

            上图是读取一个文件,spark解析为,一个Job,两个stage ,name下有33个文件,那么就有66个文件,这样就有66个task。

     

     

  • 相关阅读:
    pycharm安装,svn使用,远程开发调试,接口测试,连接服务器
    scrapy回调函数传递参数
    python发送邮件
    python开发部署时新增数据库中表的方法
    python更新数据库脚本三种方法
    python中json.loads,dumps,jsonify使用
    chmod 命令
    find
    find 命令
    locate 命令
  • 原文地址:https://www.cnblogs.com/Tonyzczc/p/10421521.html
Copyright © 2011-2022 走看看