Spark架构与作业执行流程简介
来源:互联网 发布:phpcms 模板使用php 编辑:程序博客网 时间:2024/06/07 00:25
1. Local模式
转自:http://www.cnblogs.com/shenh062326/p/3658543.html?utm_source=tuicool&utm_medium=referral
运行Spark最简单的方法是通过Local模式。
运行命令为:./bin/run-example org.apache.spark.examples.SparkPi local
伪分布式模式是只使用一台机器。即master和worker都分布在一台机器上面。
1. 基于standalone的Spark架构与作业执行流程
Standalone模式下,集群启动时包括Master与Worker,其中Master负责接收客户端提交的作业,管理Worker。提供了Web展示集群与作业信息。
名词解释:
- Standalone模式下存在的角色。
Client:客户端进程,负责提交作业到Master。
Master:Standalone模式中主控节点,负责接收Client提交的作业,管理Worker,并命令Worker启动Driver和Executor。
Worker:Standalone模式中slave节点上的守护进程,负责管理本节点的资源,定期向Master汇报心跳,接收Master的命令,启动Driver和Executor。
Driver: 一个Spark作业运行时包括一个Driver进程,也是作业的主进程,负责作业的解析、生成Stage并调度Task到Executor上。包括DAGScheduler,TaskScheduler。
Executor:即真正执行作业的地方,一个集群一般包含多个Executor,每个Executor接收Driver的命令Launch Task,一个Executor可以执行一到多个Task。
2.作业相关的名词解释
Stage:一个Spark作业一般包含一到多个Stage。
Task:一个Stage包含一到多个Task,通过多个Task实现并行运行的功能。
DAGScheduler: 实现将Spark作业分解成一到多个Stage,每个Stage根据RDD的Partition个数决定Task的个数,然后生成相应的Task set放到TaskScheduler中。
TaskScheduler:实现Task分配到Executor上执行。
提交作业有两种方式,分别是Driver(作业的master,负责作业的解析、生成stage并调度task到,包含DAGScheduler)运行在Worker上,Driver运行在客户端。接下来分别介绍两种方式的作业运行原理。
Driver运行在Worker上
通过org.apache.spark.deploy.Client类执行作业,作业运行命令如下:
./bin/spark-class org.apache.spark.deploy.Client launch spark://host:port file:///jar_url org.apache.spark.examples.SparkPi spark://host:port作业执行流如图1所示。
作业执行流程描述:客户端提交作业给Master
1 Master让一个Worker启动Driver,即SchedulerBackend。Worker创建一个DriverRunner线程,DriverRunner启动SchedulerBackend进程。
2 另外Master还会让其余Worker启动Exeuctor,即ExecutorBackend。
3Worker创建一个ExecutorRunner线程,ExecutorRunner会启动ExecutorBackend进程。
4 ExecutorBackend启动后会向Driver的SchedulerBackend注册。SchedulerBackend进程中包含DAGScheduler,它会根据用户程序,生成执行计划,并调度执行。对于每个stage的task,都会被存放到TaskScheduler中,ExecutorBackend向SchedulerBackend汇报的时候把TaskScheduler中的task调度到ExecutorBackend执行。
5 所有stage都完成后作业结束。
Driver运行在客户端
直接执行Spark作业,作业运行命令如下(示例): ./bin/run-example org.apache.spark.examples.SparkPi spark://host:port作业执行流如图2所示。![这里写图片描述](http://img.blog.csdn.net/20170702143616251?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY3Nkbl9jaHV4dWV6aGU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)作业执行流程描述:客户端启动后直接运行用户程序,启动Driver相关的工作:DAGScheduler和BlockManagerMaster等。客户端的Driver向Master注册。Master还会让Worker启动Exeuctor。Worker创建一个ExecutorRunner线程,ExecutorRunner会启动ExecutorBackend进程。ExecutorBackend启动后会向Driver的SchedulerBackend注册。Driver的DAGScheduler解析作业并生成相应的Stage,每个Stage包含的Task通过TaskScheduler分配给Executor执行。所有stage都完成后作业结束
- Spark架构与作业执行流程简介
- Spark架构与作业执行流程简介
- Spark架构与作业执行流程简介
- Spark架构与作业执行流程简介
- Spark架构与作业执行流程简介
- Spark架构与作业执行流程简介
- Spark架构与作业执行流程
- Spark作业执行流程
- spark on yarn作业执行流程
- Spark作业提交执行流程源码图
- Spark基本概念与执行流程
- Spark job 的执行流程简介
- 简单Spark作业编写与提交执行
- Spark作业执行原理
- Spark作业执行原理
- Job作业执行流程
- Yarn作业执行流程
- MapReduce作业执行流程
- 详细比较三个 CSS 预处理器(框架):Sass、LESS 和 Stylus
- concurrentHashMap 原理
- 面向接口编程
- CSU-1507 超大型LED显示屏
- 颇具争议的12个数学问题
- Spark架构与作业执行流程简介
- new方法和init方法的区别
- 【Android】自定义ViewPage 禁用左右滑动事件
- 15~16day-Quartz2D(自定义控件、图片水印、裁剪以及屏幕截图)
- HTML5 Canvas元素绘制图形
- javaweb3
- 判断JS数据类型的四种方法
- Android中的PopupWindow基本使用
- Just a Hook HDU