Spark版本 1.3 Spark源码 Spark.createTaskScheduler TaskScheduler初始化过程 1.// SparkContext中 /** * Create a task scheduler based on a given master URL. * Return a 2-tuple of the scheduler backend and the task scheduler. */ private def createTaskScheduler( sc:…
一. 状态改变机制源码分析 在剖析Master核心的资源调度算法之前,让我们先来看看Master的状态改变机制. Driver状态改变  可以看出,一旦Driver状态发生改变,基本没有好事情,后果要么是删除Driver,要么是报异常!   removeDriver方法:   Executor状态改变  可以看出,如果Executor时非正常退出,会尝试重新调度(启动)该Executor,直到该Application达到了最大的重试次数10次.   removeApplication方法 二.…
SchedulerBackend, 两个任务, 申请资源和task执行和管理 对于SparkDeploySchedulerBackend, 基于actor模式, 主要就是启动和管理两个actor Deploy.Client Actor, 负责资源申请, 在SparkDeploySchedulerBackend初始化的时候就会被创建, 然后Client会去到Master上注册, 最终完成在Worker上的ExecutorBackend的创建(参考, Spark源码分析 – Deploy), 并且这…
在 spark 源码分析之二 -- SparkContext 的初始化过程 中,第 14 步 和 16 步分别描述了 TaskScheduler的 初始化 和 启动过程. 话分两头,先说 TaskScheduler的初始化过程 TaskScheduler的实例化 val (sched, ts) = SparkContext.createTaskScheduler(this, master, deployMode) 其调用了org.apache.spark.SparkContext#createT…
原创文章,转载请注明: 转载自http://www.cnblogs.com/tovin/p/3858065.html 为了更深入的了解spark,现开始对spark源码进行分析,本系列文章以spark 1.0.0版本源码作为分析对象.今天主要分析下standalone部署方式的启动过程 1.Spark Standalone组件 Standalone部署方式是一种典型master-slave模式,在这种模式下主要包含三个组件:Master(Cluster Manager).Worker(slave…
上篇文章<  Spark 源码解析 : DAGScheduler中的DAG划分与提交 >介绍了DAGScheduler的Stage划分算法. 本文继续分析Stage被封装成TaskSet,并将TaskSet提交到集群的Executor执行的过程 在DAGScheduler的submitStage方法中,将Stage划分完成,生成拓扑结构,当一个stage没有父stage时候,会调用DAGScheduler的submitMissingTasks方法来提交该stage包含tasks. 首先来分析一…
##SparkContext启动过程 基于spark 2.1.0  scala 2.11.8 spark源码的体系结构实在是很庞大,从使用spark-submit脚本提交任务,到向yarn申请容器,启动driver进程,启动executor进程,到任务调度,shuffle过程等等,模块众多,而且每个模块都很大,所以要全部看完啃透几乎不可能,一是经历不允许,而是有些边缘性的模块主要起到辅助的功能,没有什么高深的技术含量,花时间性价比不高.因此我决定略去前面提交任务,向yarn提交任务,申请资源,启…
前言 折腾了很久,终于开始学习Spark的源码了,第一篇我打算讲一下Spark作业的提交过程. 这个是Spark的App运行图,它通过一个Driver来和集群通信,集群负责作业的分配.今天我要讲的是如何创建这个Driver Program的过程. 作业提交方法以及参数 我们先看一下用Spark Submit提交的方法吧,下面是从官方上面摘抄的内容. # Run on a Spark standalone cluster ./bin/spark-submit \ --class org.apach…
欢迎转载,转载请注明出处,徽沪一郎. 概要 WEB UI和Metrics子系统为外部观察监测Spark内部运行情况提供了必要的窗口,本文将简略的过一下其内部代码实现. WEB UI 先上图感受一下spark webui 假设当前已经在本机运行standalone cluster模式,输入http://127.0.0.1:8080将会看到如下页面 driver application默认会打开4040端口进行http监听,可以看到application相关的详细信息 显示每个stage的详细信息…
原创文章,转载请注明: 转载自http://www.cnblogs.com/tovin/p/3879151.html 在SparkContext创建过程中会调用createTaskScheduler函数来启动TaskScheduler任务调度器,本文就详细分析TaskScheduler的工作原理: TaskScheduler会根据部署方式而选择不同的SchedulerBackend来处理 下图展示了TaskScheduler.TaskSchedulerImpl.SchedulerBackend等…