打好基础,别小瞧它!

  spark的运行模式多种多样,在单机上既可以本地模式运行,也可以伪分布模式运行。而当以分布式的方式在集群中运行时。底层的资源调度可以使用Mesos或者Yarn,也可使用spark自带的Standalone模式。

  1、Application : Application的概念和Hadoop MapReduce中的类似,都是用户编写的Spark应用程序,其中包含了一个Driver功能的代码和分布在集群中多个节点上运行的Executor代码。

  

  2、Driver : 使用Driver这一概念的分布式框架很多,比如Hive等。 Spark中的Driver即运行Application的main()函数并创建SparkContext,创建SparkContext的目的是为了准备Spark应用程序的运行环境。在Spark中由SparkContext负责与ClusterManager通信,进行资源的申请、任务的分配和监控等。当Executor部分运行完毕后,Driver同时负责将SparkContext关闭。通常用SparkContext代表Driver。

  3、Executor : 某个Application运行在Worker节点上的一个进程,该进程负责运行某些Task,并且负责将数据存在内存或者磁盘上,每个Application都有各自独立的一批Executor。 在Spark on Yarn模式下其进程名称为CoarseGrainedExecutor Backend,类似于Hadoop MapReduce中的YarnChild。一个CoarseGrainedExecutor  Backend进程有且仅有一个executor对象,它负责将Task包装成taskRunner,并从线程池抽取出一个空闲线程运行Task。这样,每个CoarseGrainedExecutor  Backend能并行运行Task的数量就取决于分配给它的CPU的个数了。

  

  4、Cluster Manager : 指的是在集群上获取资源的外部服务,目前有三种类型:

    Standalone : Spark原生的资源管理,由Master负责资源的分配,可以在亚马逊的EC2上运行。

    Apache Mesos : 与Hadoop MapReduce兼容性良好的一种资源调度框架。

      Hadoop Yarn  : 主要是指的Yarn中的ResourceManager。

  5、Worker  : 集群中任何可以运行Application代码的节点,类似于Yarn中的NodeManager节点。在Standalone模式中指的就是通过slave文件配置的Worker节点,在Spark on Yarn模式中指的就是NodeManager节点。

  6、Task  :  被送到某个Executor上的工作单元,和Hadoop MapReduce中的MapTask和ReduceTask概念一样,是运行Application的基本单元多个Task组成一个Stage,而Task的调度和管理等由下面的TaskScheduler负责。

  7、Job  : 包含多个Task组成的并行计算,往往由Spark Action触发产生。一个Application中可能会产生多个Job

  8、Stage : 每个Job会拆分很多组Task,作为一个TaskSet,其名称为Stage。Stage的划分或调度由下面的DAGScheduler负责。Stage有非最终的Stage(即 Shuffle Map Stage)和最终的Stage(即Result Stage)两种。Stage的边界就是发生Shuffle的地方。

  9、RDD :Spark的基本计算单元,可以通过一系列算子进行操作(主要有Transformation 和Action操作)。同时,RDD是Spark最核心的东西,它表示已被分区、被序列化的、不可变的、有容错机制的,并且能够被并行操作的数据集合。其存储级别可以是内存,也可以是磁盘,可通过spark.storage.StorageLevel属性配置。

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

  11、宽依赖 : 与Hadoop MapReduce中Shuffle的数据依赖相同,宽依赖需要计算好所有父RDD对应分区的数据,然后在节点之间进行Shuffle。

  12、窄依赖: 指某个具体的RDD,其分区partitoin a最多被子RDDD中的一个分区partitoin b依赖。此种情况只有Map任务,是不需要发生Shuffle过程的。

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

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

Spark 概念学习系列之Spark基本概念和模型(十八)的更多相关文章

  1. Spark 概念学习系列之Spark 多语言编程

    不多说,直接上干货! Spark 同时支持Scala.Python.Java 三种应用程序API编程接口和编程方式, 考虑到大数据处理的特性,一般会优先使用Scala进行编程,其次是Python,最后 ...

  2. Spark 概念学习系列之Spark存储管理机制

    Spark存储管理机制 概要 01 存储管理概述 02 RDD持久化 03 Shuffle数据存储 04 广播变量与累加器 01 存储管理概述 思考: RDD,我们可以直接使用而无须关心它的实现细节, ...

  3. Spark 概念学习系列之Spark Core(十五)

    不多说,直接上干货! 最关键的是转换算子Transformations和缓存算子Actions. 主要是对RDD进行操作. RDD Objects  ->  Scheduler(DAGSched ...

  4. Spark RDD概念学习系列之Spark的算子的作用(十四)

    Spark的算子的作用 首先,关于spark算子的分类,详细见 http://www.cnblogs.com/zlslch/p/5723857.html 1.Transformation 变换/转换算 ...

  5. Spark RDD概念学习系列之Spark Hash Shuffle内幕彻底解密(二十)

    本博文的主要内容: 1.Hash Shuffle彻底解密 2.Shuffle Pluggable解密 3.Sorted Shuffle解密 4.Shuffle性能优化 一:到底什么是Shuffle? ...

  6. Spark Streaming概念学习系列之Spark Streaming容错

    Spark Streaming容错 检查点机制-checkpoint 什么是检查点机制? Spark Streaming 周期性地把应用数据存储到诸如HDFS 或Amazon S3 这样的可靠存储系统 ...

  7. Spark SQL概念学习系列之Spark SQL概述

    很多人一个误区,Spark SQL重点不是在SQL啊,而是在结构化数据处理! Spark SQL结构化数据处理 概要: 01 Spark SQL概述 02 Spark SQL基本原理 03 Spark ...

  8. Spark RDD概念学习系列之Spark的数据存储(十二)

    Spark数据存储的核心是弹性分布式数据集(RDD). RDD可以被抽象地理解为一个大的数组(Array),但是这个数组是分布在集群上的. 逻辑上RDD的每个分区叫一个Partition. 在Spar ...

  9. Hadoop概念学习系列之Hadoop、Spark学习路线(很值得推荐)(十八)

    不多说,直接上干货! 说在前面的话 此笔,对于仅对于Hadoop和Spark初中学者.高手请忽略! 1 Java基础: 视频方面:          推荐<毕向东JAVA基础视频教程>.学 ...

随机推荐

  1. pace.js – 网页自动加载进度条插件

    网站顶部的页面加载进度条是怎么实现的,页面的加载进度百分比,有时候获取是比较麻烦的,当然也可以利用一些优秀的JavaScript插件来实现,今天就为大家介绍这样子的一款插件:pace.js. [官方网 ...

  2. UVALive 6511 Term Project

    Term Project Time Limit: 3000ms Memory Limit: 131072KB This problem will be judged on UVALive. Origi ...

  3. Codeforces Round #544 (Div. 3) Editorial C. Balanced Team

    http://codeforces.com/contest/1133/problem/Ctime limit per test 2 secondsmemory limit per test 256 m ...

  4. zoj 3768 Continuous Login

    Pierre is recently obsessed with an online game. To encourage users to log in, this game will give u ...

  5. [bzoj1821][JSOI2010]部落划分(贪心)

    题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=1821 分析:题目看起来很吊,但只要贪心就行了,每次取相邻最近的两个点所在的集合合并知道 ...

  6. 简单的事件处理类Event

    class Event{ constructor(){ this.handlers=[] } on(type,fn){ //订阅事件 if(!this.handlers[type]){ this.ha ...

  7. MySQL: 打开binlog选项后无法重启MySQL

    binlog目录权限不足导致,用chown mysql:mysql <log folder>即可解决此问题.

  8. *** + Polipo 配置全局代理(Linux 版本)

    转,原文:http://blog.csdn.net/jon_me/article/details/53525059 我本来是想查这个问题: How to start server and local ...

  9. sql 分组取每组的前n条或每组的n%(百分之n)的数据

    sql 分组取每组的前n条或每组的n%(百分之n)的数据 sql keyword: SELECT * ,ROW_NUMBER() OVER(partition by b.UserID order by ...

  10. CocoaAsyncSocket网络通信使用之数据编码和解码(二)

    CocoaAsyncSocket网络通信使用之数据编码和解码(二) 在上一篇CocoaAsyncSocket网络通信使用之tcp连接(一)中,我们已经利用CocoaAsyncSocket封装了自己的s ...