zoukankan      html  css  js  c++  java
  • Spark集群术语

    Spark集群术语解析

    1. Application

            Application是用户在Spark上构建(编写)的程序,包含driver program 和executors(分布在集群中多个节点上运行的Executor代码)。

    2. SparkContext

            Spark的上下文对象,是程序的起点,通往集群的入口(与cluster进行连接),通过其可以创建RDD(获取数据),在其中配置的参数拥有最高优先级。在Spark中由SparkContext负责和ClusterManager通行,进行资源的申请,任务的分配和监控等。


    3. Driver program

            包含应用程序的main函数,并且运行时会创建SparkContext。当Executor部分运行完后,Driver负责将SparkContext关闭。

    4. Cluster Manager

            集群资源管理的外部服务,在Spark上现有Standalone(Spark自带的管理器),YARN(hadoop 2.x的管理器),Mesos等三种集群资源管理器,Standalone能满足绝大部分对集群资源管理的需求,基本上只有在集群中运行多套计算框架(例如同时运行MapReduce和Spark)的时候才建议使用YARN和Mesos。

    5. Deploy mode

            表明driver程序运行的位置。在”cluster”模式时,框架会在集群中启动driver。在”client”模式时,driver在集群外被提交者启动。

    6. Worker Node

            集群中运行应用Application代码的节点,在Standalone模式中指的是通过slaves文件配置的Worker节点,在Spark on Yarn模式中指的就是NodeManager节点。


    7. Executor

            一个Application运行在Worker节点上的一个进程,负责运行某些Task,并且负责将数据存放在内存或磁盘上。每个Application都有各自独立的一批Executor,一个Executor只能为一个Application服务,一个Worker上可能会有多个Executor,在Executor内部通过多线程的方式并发处理应用的任务(Task)。在Spark on Yarn模式下,其进程名称为CoarseGrainedExecutorBackend。一个CoarseGrainedExecutorBackend进程有且仅有一个Executor对象,负责将Task包装成taskRunner,并从线程池中抽取一个空闲线程运行Task。每个CoarseGrainedExecutorBackend能并行运行Task的数量取决于分配给它的CPU个数。




    8. Task

            被Driver发送到executor的工作单元(最终在worker节点运行的任务),和MapReduce中的MapTask和ReduceTask概念一样,是运行Application的基本单位。多个Task组成一个Stage,而Task的调度及管理等由TaskScheduler负责,通常情况下一个task会处理一个split的数据,每个split一般就是一个Block块的大小。


    9. Job

            一道作业,即应用完成某项需求所需要的一系列工作(由一系列task组成的并行计算)。与Spark的action相对应,每个action操作(例如count,saveAsTextFile,collect等)都会对应一个job实例,可在driver的日志中看到相关信息。一个Application可能产生多个Job。

    10. Stage

            一个Job会分成很多组Task,每一组任务被分为Stage,类似于MapReduce的map和reduce,划分Stage的依据:一个Stage开始一般是由于读取外部数据或者Shuffle数据,一个Stage的结束一般是由于发生了Shuffle(例如reduceByKey)或者整个Job结束时把数据放到hdfs等存储系统上(例如saveAsTextFile)。


    11. DAG

            有向无环图,将job分解成若干个Stage,每个Stage都由若干个Task组成,这些Stage都是有先后顺序的,故将这些Stage组织成DAG,表示其先后顺序。

    12. Taskset

            每个Stage由若干个Task组成,这些task统一称为taskset。


    12. RDD

            Spark的基本计算单元,可以进行一系列算子进行操作(主要为Transformation和Action操作)。同时,RDD是Spark最核心的东西,它表示已被分区,被序列化,不可变的,有容错基质的,并且能被并行操作的数据集合。可以存在内存,也可以存在磁盘,可以通过persist()方法中的org.apache.spark.storage.StorageLevel属性进行配置。

    13. 共享变量

           在Application运行时,可能需要共享一些变量,供Task或Driver等使用。Spark提供了两种共享变量,一种是可以缓存到各个节点的广播变量(broadcast),一种是只支持加法操作,可以实现求和的累加变量(accumulators)。

    14. 宽依赖

           或称为ShuffleDependency,跟MapReduce中的Shuffle的数据依赖相同,宽依赖需要计算好所有父RDD对应分区的数据,然后在节点之间进行Shuffle。


    15. 窄依赖

           或称为NarrowDependency,指的是摸个具体的RDD,其分区partition A最多被子RDD中的一个分区partition B依赖。此种情况只有Map任务,是不需要发生Shuffle过程的。窄依赖又分为1:1和N:1两种。


    16. DAGScheduler

           根据job构建基于Stage的DAG,并提交Stage给TaskScheduler。其划分Stage的依据是根据RDD之间的依赖关系。


    17. TaskScheduler

           将Task提交给Worker(集群)运行,每个Executor运行什么Task就是在此处分配的。


  • 相关阅读:
    Ubuntu 16 安装redis客户端
    crontab 参数详解
    PHP模拟登录发送闪存
    Nginx配置端口访问的网站
    Linux 增加对外开放的端口
    Linux 实用指令之查看端口开启情况
    无敌的极路由
    不同的域名可以指向同一个项目
    MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk. Commands that may modify the data set are disabled. Please check Redis logs for details about the error
    Redis 创建多个端口
  • 原文地址:https://www.cnblogs.com/zhangyunlin/p/6168205.html
Copyright © 2011-2022 走看看