Spark运行原理解析
2016-05-26 08:55
357 查看
前言:
Spark Application的运行架构由两部分组成:driver program(SparkContext)和executor。Spark Application一般都是在集群中运行,比如Spark Standalone,YARN,mesos,这些集群给spark Application提供了计算资源和这些资源管理,这些资源既可以给executor运行,也可以给driver program运行。根据Spark Application的driver program是否在资源集群中运行,Spark
Application的运行方式又可以分为Cluster模式和client模式。spark1.0.0提供了一个Spark Application的部署工具bin/spark-submit。
1.1基本术语
关于Application中的几个概念如下图所示:
Application:基于Spark的用户程序,包含了一个driver program和集群中多个的
executor
Driver progaram:运行Application的main()函数并且创建SparkContext,通常用SparkContext代表Driver Program。
Cluster Manager:在集群上获取资源的外部服务(例如:Standalone,Mesos,Yarn)
Worker Node:集群中任何可以运行Application代码的节点
Executor:是为某Application运行在worker node上的一个进程,该进程负责运行
Task,并且负责将数据存在内存或者磁盘上。每个Application都有个字独立的executors。
Task: 被送到某个executor上的工作单元
Job: 包含多个Task组成的并行计算,往往由Spark action催生,该术语可以经常在日志中看到。
Stage:
每个Job会被拆分很多组task,每组任务被称为Stage,也可称TaskSet,该术语可以经常在日志中看到。
RDD:Spark的基本计算单元,可以通过一系列算子进行操作(主要有Transformation和Action操作),详情见RDD
细解、Spark1.0.0编程模型。
DAG Scheduler:根据Job构建基于Stage的DAG,并提交Stage给TaskScheduler,详见DAG
Scheduler 细解。
TaskScheduler:将Taskset提交给worker(集群)运行并回报结果,详见TaskScheduler
细解。
1.2Spark运行模式概述
Spark运行模式多种多样,在单机上可以以本地模式运行,也可以以伪分布式模式运行。
而当以分布式的方式在cluster集群中运行时,底层的资源管理器可以使用Spark自带的standalone模式,也可以使用Yarn或者Mesos模式。
Spark的运行模式主要取决于传递给SparkContext的deploy-mode和Master变量的值,个别模式还需要辅助的程序接口来配合使用。目前Master有local,yarn-client,yarn-client,spark(standalone),mesos模式,而deploy-mode必须是client(默认方式)或cluster中的一种。
1.3Spark的基本工作流程
Spark的Application在运行时,首先在Driver程序中创建SparkContext,将其作为调度的总入口,在其初始化的过程中会分别创建DAGSchedule(进行Stage调度)和TaskSchedule(进行Task调度)两个模块。DAGSchedule模块是基于Stage的调度模块,它为每个Spark job计算具有依赖关系的多个Stage任务阶段然后将每个Stage划分为一组具体的任务以TaskSet的
形式提交给底层的TaskSchedule模块来具体执行。TaskSchedule负责具体启动任务,监控和汇报任务的运行情况。而任务运行所需的资源需要向Cluster Manager申请。
Spark Application的运行架构由两部分组成:driver program(SparkContext)和executor。Spark Application一般都是在集群中运行,比如Spark Standalone,YARN,mesos,这些集群给spark Application提供了计算资源和这些资源管理,这些资源既可以给executor运行,也可以给driver program运行。根据Spark Application的driver program是否在资源集群中运行,Spark
Application的运行方式又可以分为Cluster模式和client模式。spark1.0.0提供了一个Spark Application的部署工具bin/spark-submit。
1.1基本术语
关于Application中的几个概念如下图所示:
Application:基于Spark的用户程序,包含了一个driver program和集群中多个的
executor
Driver progaram:运行Application的main()函数并且创建SparkContext,通常用SparkContext代表Driver Program。
Cluster Manager:在集群上获取资源的外部服务(例如:Standalone,Mesos,Yarn)
Worker Node:集群中任何可以运行Application代码的节点
Executor:是为某Application运行在worker node上的一个进程,该进程负责运行
Task,并且负责将数据存在内存或者磁盘上。每个Application都有个字独立的executors。
Task: 被送到某个executor上的工作单元
Job: 包含多个Task组成的并行计算,往往由Spark action催生,该术语可以经常在日志中看到。
Stage:
每个Job会被拆分很多组task,每组任务被称为Stage,也可称TaskSet,该术语可以经常在日志中看到。
RDD:Spark的基本计算单元,可以通过一系列算子进行操作(主要有Transformation和Action操作),详情见RDD
细解、Spark1.0.0编程模型。
DAG Scheduler:根据Job构建基于Stage的DAG,并提交Stage给TaskScheduler,详见DAG
Scheduler 细解。
TaskScheduler:将Taskset提交给worker(集群)运行并回报结果,详见TaskScheduler
细解。
1.2Spark运行模式概述
Spark运行模式多种多样,在单机上可以以本地模式运行,也可以以伪分布式模式运行。
而当以分布式的方式在cluster集群中运行时,底层的资源管理器可以使用Spark自带的standalone模式,也可以使用Yarn或者Mesos模式。
Spark的运行模式主要取决于传递给SparkContext的deploy-mode和Master变量的值,个别模式还需要辅助的程序接口来配合使用。目前Master有local,yarn-client,yarn-client,spark(standalone),mesos模式,而deploy-mode必须是client(默认方式)或cluster中的一种。
1.3Spark的基本工作流程
Spark的Application在运行时,首先在Driver程序中创建SparkContext,将其作为调度的总入口,在其初始化的过程中会分别创建DAGSchedule(进行Stage调度)和TaskSchedule(进行Task调度)两个模块。DAGSchedule模块是基于Stage的调度模块,它为每个Spark job计算具有依赖关系的多个Stage任务阶段然后将每个Stage划分为一组具体的任务以TaskSet的
形式提交给底层的TaskSchedule模块来具体执行。TaskSchedule负责具体启动任务,监控和汇报任务的运行情况。而任务运行所需的资源需要向Cluster Manager申请。
相关文章推荐
- (4.1.5.4)App内广播LocalBroadcastManager局部通知管理器
- Java开发常用的在线工具
- 10.Spark Streaming源码分析:Receiver数据接收全过程详解
- PHP新的垃圾回收机制:Zend GC详解
- 《上古天真论》第五讲文字版
- Python Dict用法
- s5pv210 datasheet_system_audio_etc
- 服务器磁盘raid0,raid1,raid10,raid5,raid50,raid6,raid60 分析与案例
- Python 目录操作
- LeetCode 337. House Robber III
- 软件工程用图
- linuxcon-europe 2015 linux大会
- c#遍历并判断实体或类的成员属性
- tomcat7+jdk的keytool生成证书 配置https
- 第11周项目1-点-圆-圆柱类族的设计 (3)
- 解析配置文件ConfigParser模块
- 第十三周项目2.1—动物这样叫
- zzuli 1877: 蛤玮打扫教室
- 移动端canvas.arc与css的filter
- Unity热门插件推荐