Spark 概念学习系列之Spark基本概念和模型(十八)
打好基础,别小瞧它!
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基本概念和模型(十八)的更多相关文章
- Spark 概念学习系列之Spark 多语言编程
不多说,直接上干货! Spark 同时支持Scala.Python.Java 三种应用程序API编程接口和编程方式, 考虑到大数据处理的特性,一般会优先使用Scala进行编程,其次是Python,最后 ...
- Spark 概念学习系列之Spark存储管理机制
Spark存储管理机制 概要 01 存储管理概述 02 RDD持久化 03 Shuffle数据存储 04 广播变量与累加器 01 存储管理概述 思考: RDD,我们可以直接使用而无须关心它的实现细节, ...
- Spark 概念学习系列之Spark Core(十五)
不多说,直接上干货! 最关键的是转换算子Transformations和缓存算子Actions. 主要是对RDD进行操作. RDD Objects -> Scheduler(DAGSched ...
- Spark RDD概念学习系列之Spark的算子的作用(十四)
Spark的算子的作用 首先,关于spark算子的分类,详细见 http://www.cnblogs.com/zlslch/p/5723857.html 1.Transformation 变换/转换算 ...
- Spark RDD概念学习系列之Spark Hash Shuffle内幕彻底解密(二十)
本博文的主要内容: 1.Hash Shuffle彻底解密 2.Shuffle Pluggable解密 3.Sorted Shuffle解密 4.Shuffle性能优化 一:到底什么是Shuffle? ...
- Spark Streaming概念学习系列之Spark Streaming容错
Spark Streaming容错 检查点机制-checkpoint 什么是检查点机制? Spark Streaming 周期性地把应用数据存储到诸如HDFS 或Amazon S3 这样的可靠存储系统 ...
- Spark SQL概念学习系列之Spark SQL概述
很多人一个误区,Spark SQL重点不是在SQL啊,而是在结构化数据处理! Spark SQL结构化数据处理 概要: 01 Spark SQL概述 02 Spark SQL基本原理 03 Spark ...
- Spark RDD概念学习系列之Spark的数据存储(十二)
Spark数据存储的核心是弹性分布式数据集(RDD). RDD可以被抽象地理解为一个大的数组(Array),但是这个数组是分布在集群上的. 逻辑上RDD的每个分区叫一个Partition. 在Spar ...
- Hadoop概念学习系列之Hadoop、Spark学习路线(很值得推荐)(十八)
不多说,直接上干货! 说在前面的话 此笔,对于仅对于Hadoop和Spark初中学者.高手请忽略! 1 Java基础: 视频方面: 推荐<毕向东JAVA基础视频教程>.学 ...
随机推荐
- saltstack(六) saltstack Job管理
一,简介 Jid: job id 格式为%Y%m%d%H%M%S%f master在下发指令消息时,会附带上产生的jid,minion在接收到指令开始执行时,会在本地的cachedir(默认是/var ...
- 【Codeforces 1034A】Enlarge GCD
[链接] 我是链接,点我呀:) [题意] 题意 [题解] 设原来n个数字的gcd为g 减少某些数字之后 新的gcd肯定是g的倍数 即gx 我们可以枚举这个x值(x>=2) 看看原来的数字里面有多 ...
- NYOJ35 表达式求值
表达式求值 时间限制:3000 ms | 内存限制:65535 KB 难度:4 描述 ACM队的mdd想做一个计算器,但是,他要做的不仅仅是一计算一个A+B的计算器,他想实现随便输入一个表达式 ...
- PHP rand()和mt_rand()的区别
rand()和mt_rand()作用都是产生一个随机整数,都有两种使用形式: 1.int rand(void) / int mt_rand(void) 2.int rand(int $min, int ...
- Maven项目pom.xml报错
1.org.apache.maven.archiver.MavenArchiver.getManifest报错 pom.xml第一行报错,如图: 解决办法: 第一步: help ->Instal ...
- 基于QQ服务器JavaMail邮箱SSL密码第三方发送邮件
网上javaMail邮箱推送代码太多,大都是有缺陷的,今天做项目刚好要用到,于是发了大半天的时间解决的这个问题. jar包:javax.mail.jar 代码: import java.io.IOEx ...
- 线程调度策略SCHED_RR(轮转法)和SCHED_FIFO(先进先出)之对照
我们在用pthread创建线程时,能够指定调度策略policy--SCHED_OTHER(默认).SCHED_RR和SCHED_FIFO.这里TALK一下两个实时策略--SCHED_RR和SCHED_ ...
- [miniApp] WeChat user login code
in client/app.js, we put user login logic inside here, so that other module can reuse those code by ...
- DB9针型:RS485输出信号及接线端子引脚分配
下图所看到的.DB9针型RS485输出信号及接线端子引脚分配. 此DB9针型与 标准 RS232 or RS485 DB9定义有所不同,下图中的DB9针型说明仅是针对USB转485DB9接口. wat ...
- ssh远程连接出现someone counld be eavesdropping on you right now 的错误
master主机通过ssh远程连接slaves机子时出现下述错误 解决的方法: 一.删除/root/.ssh/下的kown_hosts文件 二.在master机子上又一次运行scp id_dsa.pu ...