Spark 名词解释

作者: 他与理想国 | 来源:发表于2018-08-25 22:13 被阅读0次

    程序外名词

    Application:应用程序

    • 应用程序就是用户编写的代码打包之后的jar包和相关的依赖
    • Application = Driver + Executor(分布在集群中多个节点)
      • Driver部分的代码:SparkConf+SparkContext
      • Executor部分的代码:textFile, flatMap, map 具体的业务逻辑

    Driver:驱动程序

    • Driver是应用程序运行时候的核心,因为它附着了整个作业的调度,并且会向master申请资源来完成具体作业的功能
    • Driver是驱动Executor工作的,Executor是具体并发的处理数据分片
      • driver频繁和executor通信,所以要在同一个网段中
      • 不要用IDE作为Driver,因为可能会出现个中各样的问题
    • 运行Application的main函数并创建SparkContext的环境对象
    • 创建SparkContext的目的是为了准备Spark应用程序的运行环境,在Spark中有SparkContext负责与ClusterManager通信,进行资源申请、任务的分配和监控等,当Executor部分运行完毕后,Driver同时负责将SparkContext关闭,通常用SparkContext代表Driver
    • 除此之外,还向master注册当前应用程序,master会给它分配资源,下一步根据Action触发的job,job里面有一些列的RDD,然后从后往前推,发现如果是宽依赖的话,就划分成不同的stage,将Stage提交给底层调度器TaskScheduler,TaskScheduler拿到这个任务的集合(一个stage的内部都是完全计算逻辑一样的任务,只不过是算的数据不一样),最后根据任务情况把任务给Executor去执行,Executor如果出问题会向Driver进行汇报,运行完毕后SparkContext关闭

    Deploy mode:应用程序部署模式

    • 区分 driver 进程在何处运行.
    • 在 “cluster” 模式下, 框架在集群内部运行 driver.
    • 在 “client” 模式下, 提交者在集群外部运行 driver.
      • 举荐使用

    Cluster Manager:集群管理器

    • 获取资源的外部程序
    • 为每个spark application,在集群中调度和分配资源的组件,比如Spark Standalone、YARN、Mesos等
      • 在standalone模式中即为Master主节点,控制整个集群,监控worker。
    • Spark Application的运行不依赖于Cluster Manager
    • 分配资源由以下内容决定:
      • 1.spark-env.sh和spark-default.sh
      • 2.spark-submit提交的参数
      • 3.程序中SparkConf配置的参数

    Worker:工作节点

    • 集群中任何可以运行Application代码的节点
    • 在Standalone模式中指的是通过slave文件配置的Worker节点,在Spark on Yarn模式下就是NoteManager节点
    • 1个worker只为当前应用程序开启一个Exetuor,但是可以给不同的应用程序开启多个不同的Exetuor
    • Worker上不运行程序代码,Worker管理当前Node资源使用情况,会接收Master分配资源(计算内存)的指令,并通过ExecutorRunner来启动新的进程来开启Executor
    • Worker不会发机器资源信息给Master,在Master分配资源给Driver之时已经知道了,因为所有的资源都是master分配的,master肯定知道了,只要在worker发生故障的时候才会发送当前资源情况

    Executor:执行者

    • 在 worker node 上 application 启动的一个进程, 该进程运行 task 并在内存或磁盘上保存数据.
      每个 application 都有其独有的 executor.
    • executor是运行在work所在的节点上为当前应用程序而开启的,进程里面的对象,这个对象负责了具体task的运行
      • 如何负责:通过线程池并发执行、和线程复用的方式,每个线程可以运行一个任务,任务完成之后这个线程被回收到线程池当中进行线程复用
      • hadoop mapreduce不能复用jvm,spark在一个节点上默认情况下为我们当前程序开启1个jvm进程,这个jvm进程里面是线程池的方式,通过线程来处理task任务,task从磁盘或者内存来读写数据

    程序内名词

    Spark Context

    • 是我们通往集群唯一通道,是开发者使用集群各种功能唯一通道,是整个程序运行、调度的核心(不是指资源调度),里面存在高层调度器、底层调度器、SchedulerBackEnd
      • 高等调度器(DAGScheduler):把整个作业划分成了几个小的阶段
      • 底层调度器(TaskScheduler):每个阶段里的任务具体怎么处理

    job:作业

    • 包含一系列Task的并行计算,在spark中一般有Action触发就会触发一个job,Action不会产生RDD
    • 一个Application里面可以有多个jobs(不同的action),一般一个action对应一个job,checkpoint也会导致job

    Stage:阶段

    • 每个job被分解为多个stage,每个stage其实就是一些task的集合, 这些stage 之间相互依赖
      • 与 MapReduce 中的 map 与 reduce stage 类似
    • Stage内部计算逻辑完全一样,只是计算的数据不同罢了,这就是分布式并行计算

    Task:任务

    • 被TaskScheduler序列化之后送到某个executor上的工作单元;

    相关文章

      网友评论

        本文标题:Spark 名词解释

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