美文网首页大数据
Spark架构及计算流程分析

Spark架构及计算流程分析

作者: 漂泊的胡萝卜 | 来源:发表于2018-09-07 17:56 被阅读17次

    Spark架构

    先看一些组织架构图,再解释图中的名词:


    spark架构.png Spark Node内部.png Spark流程图.png

    名次解释:

    1. Application: Appliction都是指用户编写的Spark应用程序,其中包括一个Driver功能的代码和分布在集群中多个节点上运行的Executor代码
    2. Driver: Spark中的Driver即运行上述Application的main函数并创建SparkContext
    3. SparkContext:创建SparkContext的目的是为了准备Spark应用程序的运行环境,在Spark中有SparkContext负责与ClusterManager通信,进行资源申请、任务的分配和监控等,当Executor部分运行完毕后,Driver同时负责将SparkContext关闭,通常用SparkContext代表Driver
    4. Executor: 某个Application运行在worker节点上的一个进程, 该进程负责运行某些Task, 并且负责将数据存到内存或磁盘上,每个Application都有各自独立的一批Executor, 在Spark on Yarn模式下,其进程名称为CoarseGrainedExecutor Backend。一个CoarseGrainedExecutor Backend有且仅有一个Executor对象, 负责将Task包装成taskRunner,并从线程池中抽取一个空闲线程运行Task, 这个每一个CoarseGrainedExecutor Backend能并行运行Task的数量取决与分配给它的cpu个数
    5. Cluter Manager:指的是在集群上获取资源的外部服务。目前有三种类型
      Standalon : spark原生的资源管理,由Master负责资源的分配
      Apache Mesos:与hadoop MR兼容性良好的一种资源调度框架
      Hadoop Yarn: 主要是指Yarn中的ResourceManager
    6. Worker: 集群中任何可以运行Application代码的节点,在Standalone模式中指的是通过slave文件配置的Worker节点,在Spark on Yarn模式下就是NoteManager节点
    7. Task: 被送到某个Executor上的工作单元,但hadoopMR中的MapTask和ReduceTask概念一样,是运行Application的基本单位,多个Task组成一个Stage,而Task的调度和管理等是由TaskScheduler负责
    8. Job: 包含多个Task组成的并行计算,往往由Spark Action触发生成, 一个Application中往往会产生多个Job
    9. Stage: 每个Job会被拆分成多组Task, 作为一个TaskSet, 其名称为Stage,Stage的划分和调度是有DAGScheduler来负责的,Stage有非最终的Stage(Shuffle Map Stage)和最终的Stage(Result Stage)两种,Stage的边界就是发生shuffle的地方
    10. DAGScheduler: 根据Job构建基于Stage的DAG(Directed Acyclic Graph有向无环图),并提交Stage给TASkScheduler。 其划分Stage的依据是RDD之间的依赖的关系找出开销最小的调度方法,如下图
    DAG.png

    Spark on Yarn

    YARN总体上仍然是master/slave结构,在整个资源管理框架中,resourcemanager为master,nodemanager是slave。Resourcemanager负责对各个nademanger上资源进行统一管理和调度。另外,使用Yarn,我们需要实现Yarn的规范。

    spark使用driver进程负责应用的解析,切分Stage并且调度task到Executor执行,包含DAGscheduler等重要对象。Driver进程的运行地点有如下两种:

    1. driver进程运行在client端,对应用进行管理监控。
    2. Master节点指定某个Worker节点启动Driver进程,负责监控整个应用的执行。
      具体对应到Spark on Yarn也对应2种模式:

    Client模式

    Driver运行在Client端,好处是可以看到日志输出,坏处是,不能中断该程序。一般用于调试。
    spark-submit --master yarn --deploy-mode client app.py

    Cluster模式

    Driver运行在远处Worker处,客户端提交后
    spark-submit --master yarn --deploy-mode cluster app.py

    参考文献:
    https://blog.csdn.net/swing2008/article/details/60869183(Spark基本架构及原理,Spark流程讲的比较好)

    相关文章

      网友评论

        本文标题:Spark架构及计算流程分析

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