Spark集群术语
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
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集群术语的更多相关文章
- Spark集群模式概述
作者:foreyou出处:http://www.foreyou.net/2015/06/22/spark-cluster-mode-overview/声明:本文采用以下协议进行授权: 署名-非商用|C ...
- Spark集群-Standalone 模式
Spark 集群相关 table td{ width: 15% } 来源于官方, 可以理解为是官方译文, 外加一点自己的理解. 版本是2.4.4 本篇文章涉及到: 集群概述 master, worke ...
- (四)Spark集群搭建-Java&Python版Spark
Spark集群搭建 视频教程 1.优酷 2.YouTube 安装scala环境 下载地址http://www.scala-lang.org/download/ 上传scala-2.10.5.tgz到m ...
- [bigdata] spark集群安装及测试
在spark安装之前,应该已经安装了hadoop原生版或者cdh,因为spark基本要基于hdfs来进行计算. 1. 下载 spark: http://mirrors.cnnic.cn/apache ...
- Spark集群部署
Spark是通用的基于内存计算的大数据框架,可以和hadoop生态系统很好的兼容,以下来部署Spark集群 集群环境:3节点 Master:bigdata1 Slaves:bigdata2,bigda ...
- Spark集群 + Akka + Kafka + Scala 开发(3) : 开发一个Akka + Spark的应用
前言 在Spark集群 + Akka + Kafka + Scala 开发(1) : 配置开发环境中,我们已经部署好了一个Spark的开发环境. 在Spark集群 + Akka + Kafka + S ...
- Spark集群 + Akka + Kafka + Scala 开发(2) : 开发一个Spark应用
前言 在Spark集群 + Akka + Kafka + Scala 开发(1) : 配置开发环境,我们已经部署好了一个Spark的开发环境. 本文的目标是写一个Spark应用,并可以在集群中测试. ...
- Spark集群 + Akka + Kafka + Scala 开发(1) : 配置开发环境
目标 配置一个spark standalone集群 + akka + kafka + scala的开发环境. 创建一个基于spark的scala工程,并在spark standalone的集群环境中运 ...
- Hadoop+Spark:集群环境搭建
环境准备: 在虚拟机下,大家三台Linux ubuntu 14.04 server x64 系统(下载地址:http://releases.ubuntu.com/14.04.2/ubuntu-14.0 ...
随机推荐
- HWM、PCTFREE、PCTUSED
什么是水线(High Water Mark)? HWM通常增长的幅度为一次5个数据块,原则上HWM只会增大,不会缩小,即使将表中的数据全部删除,HWM还是为原值,由于这个特点,使HWM很象一个水库的历 ...
- if(/专线$/.test(name))讲解
如图: 这条语句的意思是:匹配以"专线"结尾的name字符串,满足条件的返回true,否则返回false
- Java连接FTP成功,但是上传是失败,报错:Connected time out
Java代码在本机上传文件到FTP服务器的时候成功,但是部署到测试服务器的时候出现,连接FTP成功但是上传失败,并且报Connected time out错误: 测试服务器和FTP服务都在阿里云上:( ...
- Yii2 获取URL的一些方法
1. 获取url中的host信息: 例如:http://www.nongxiange.com/product/2.html Yii::$app->request->getHostInfo( ...
- jquery easyui datagrid 设置设置在选中的所有行中只选择第一行
var row = $('#dg').datagrid('getSelected'); if ($('#dg').datagrid('getChecked').length > 1) { //将 ...
- Struts+Hibernate+jsp页面,实现分页
dao层代码 package com.hanqi.dao; import java.util.ArrayList; import java.util.List; import org.hibernat ...
- 70. Climbing Stairs(easy, 号称 Dynamic Programming 天下第一题)
You are climbing a stair case. It takes n steps to reach to the top. Each time you can either climb ...
- swiper display:none 后 在显示 滑动问题
一般这种问题 必须在本身元素 或者父元素 显示出来 然后调用swiper实例 或者只需加两行 observer:true, // 修改swiper自己或子元素时,自动初始化swiper obs ...
- nodeppt的使用教程
为什么选择nodeppt 这可能是迄今为止最好的网页版演示库 基于GFM的markdown语法编写 支持html混排,再复杂的demo也可以做! 支持多个皮肤:colors-moon-blue-dar ...
- 分享一个二维码图片识别控制台程序Demo
怎么用NuGet和配置log4net就不介绍了,直接上代码(QRDecodeDemo.zip). (Visual Studio 2015 下的项目,用的.NET Framework 4.5.2) 吐槽 ...