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就是在此处分配的。


Spark集群术语的更多相关文章

  1. Spark集群模式概述

    作者:foreyou出处:http://www.foreyou.net/2015/06/22/spark-cluster-mode-overview/声明:本文采用以下协议进行授权: 署名-非商用|C ...

  2. Spark集群-Standalone 模式

    Spark 集群相关 table td{ width: 15% } 来源于官方, 可以理解为是官方译文, 外加一点自己的理解. 版本是2.4.4 本篇文章涉及到: 集群概述 master, worke ...

  3. (四)Spark集群搭建-Java&Python版Spark

    Spark集群搭建 视频教程 1.优酷 2.YouTube 安装scala环境 下载地址http://www.scala-lang.org/download/ 上传scala-2.10.5.tgz到m ...

  4. [bigdata] spark集群安装及测试

    在spark安装之前,应该已经安装了hadoop原生版或者cdh,因为spark基本要基于hdfs来进行计算. 1. 下载 spark:  http://mirrors.cnnic.cn/apache ...

  5. Spark集群部署

    Spark是通用的基于内存计算的大数据框架,可以和hadoop生态系统很好的兼容,以下来部署Spark集群 集群环境:3节点 Master:bigdata1 Slaves:bigdata2,bigda ...

  6. Spark集群 + Akka + Kafka + Scala 开发(3) : 开发一个Akka + Spark的应用

    前言 在Spark集群 + Akka + Kafka + Scala 开发(1) : 配置开发环境中,我们已经部署好了一个Spark的开发环境. 在Spark集群 + Akka + Kafka + S ...

  7. Spark集群 + Akka + Kafka + Scala 开发(2) : 开发一个Spark应用

    前言 在Spark集群 + Akka + Kafka + Scala 开发(1) : 配置开发环境,我们已经部署好了一个Spark的开发环境. 本文的目标是写一个Spark应用,并可以在集群中测试. ...

  8. Spark集群 + Akka + Kafka + Scala 开发(1) : 配置开发环境

    目标 配置一个spark standalone集群 + akka + kafka + scala的开发环境. 创建一个基于spark的scala工程,并在spark standalone的集群环境中运 ...

  9. Hadoop+Spark:集群环境搭建

    环境准备: 在虚拟机下,大家三台Linux ubuntu 14.04 server x64 系统(下载地址:http://releases.ubuntu.com/14.04.2/ubuntu-14.0 ...

随机推荐

  1. hdu 5438(拓扑+bfs)

    题意:建图,删掉所有连接点小于2的点,直到不能删为止,问最后剩余的联通块中,点的数量是奇数的联通块中的点的权值和. 思路:拓扑删点,bfs计算 #include <iostream> #i ...

  2. [BZOJ]1071 组队(SCOI2007)

    一道比较NB的套路题. Description NBA每年都有球员选秀环节.通常用速度和身高两项数据来衡量一个篮球运动员的基本素质.假如一支球队里速度最慢的球员速度为minV,身高最矮的球员高度为mi ...

  3. bzoj1096[ZJOI2007]仓库建设 斜率优化dp

    1096: [ZJOI2007]仓库建设 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 5482  Solved: 2448[Submit][Stat ...

  4. python day3_liaoxuefeng

    1.Python的循环有两种,一种是for...in循环,依次把list或tuple中的每个元素迭代出来,看例子: names = ['Michael', 'Bob', 'Tracy'] for na ...

  5. glusterfs 4.0.1 rpc 分析笔记1

    Jimmy的文档:Glusterfs的rpc模块分析 第一节.rpc服务器端实现原理及代码分析 第二节.rpc客户端实现原理及代码分析 第三节.rpc通信过程分析 经过阅读源码对比之前提及的文档,我个 ...

  6. jvm(二):内存管理

    jvm内存区域总体分为5大块:方法区,java堆,虚拟机栈,本地方法栈,程序计数器,按照线程来分的话又分为线程共享区和线程独占区 程序计数器: a.程序计数器是一块较小的内存空间,可以看做是当前线程所 ...

  7. python学习之装饰器-

    python的装饰器 2018-02-26 在了解python的装饰器之前我们得了解python的高阶函数 python的高阶函数我们能返回一个函数名并且能将函数名作为参数传递 def outer() ...

  8. Lucene初体验——Hello Word实现

    1.创建索引 /** * 建立索引 */ public void index(){ IndexWriter writer=null; try { //1.创建Directory //Directory ...

  9. CSS相关

    ===CSS框架=== https://github.com/lucasgruwez/waffle-grid 一个易于使用的 flexbox 栅格布局系统 ===CSS初始化=== https://g ...

  10. 一个未排序整数数组,有正负数,重新排列使负数排在正数前面,并且要求不改变原来的正负数之间相对顺序,比如: input: 1,7,-5,9,-12,15 ans: -5,-12,1,7,9,15 要求时

    #include <iostream> using namespace std; void txsort(int* arr, int len) { if (!arr || len == 1 ...