为了账号安全,请及时绑定邮箱和手机立即绑定

Spark 名词解释

标签:
Spark

程序外名词

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上的工作单元;



作者:他与理想国
链接:https://www.jianshu.com/p/e14a09089444


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消