Spark源码系列之Standalone模式下Spark应用的整个启动过程

一,Standalone模式下的spark角色

大家都知道在Standalone模式下,spark一共有以下五种角色:

sparksubmit,master,Worker,Driver,Executor。具体这五种角色在我们提交应用的时候起到哪些作用呢,我们下面就来详细讲解

1,SparkSubmit

加载一个Spark应用程序的入口。这个类处理设置spark相关依赖的Classpath(足见其重要性),同时屏蔽了不同集群管理器和不同部署模式的细节,为用户提供统一接口。

2,Master

主要功能:

A),接受worker的注册并管理Worker

B),接受SparkSubmit提交的Application,并调度启动Driver(发送LaunchDriver给Worker)。

C),接受Driver端AppClient发送的RegisterApplication(appDescription,self),然后调度,发送LaunchExecutor消息给Worker。

3,Worker

A),向Master注册,并维持心跳。

B),接受Master的LaunchDriver消息,并启动Driver。

C),接受Master的LaunchExecutor消息,并启动Executor

4,Driver

A),通过AppClient向Master注册App,此时携带者CoraseGrainedExecutorBackend信息。

B),接受Executor注册,维护Executor信息。

C),划分Stage,封装task,并调度task。

5,Executor

A),向Driver注册自己并维护心跳

B),接受Driver的LaunchTask信息,并执行task。

C),将task执行结果返回给Driver。

二,Standalone提交一个应用源码过程

1,启动Driver的过程

Org.apache.spark.launcher.Main

org.apache.spark.deploy.SparkSubmit

org.apache.spark.deploy.rest.RestSubmissionClient

Org.apache.spark.deploy.rest.StandaloneRestServer

org.apache.spark.deploy.master.Master

Org.apache.spark.deploy.worker.Worker

Org.apache.spark.deploy.worker.DriverRunner

org.apache.spark.deploy.worker.DriverWrapper

用户自定义程序 ~~~

2,启动Executor的过程

org.apache.spark.SparkContext

Org.apache.spark.scheduler.cluster.SparkDeploySchedulerBackend

Org.apache.spark.deploy.client.AppClient

org.apache.spark.deploy.master.Master

Org.apache.spark.deploy.worker.Worker

Org.apache.spark.deploy.worker.ExecutorRunner

org.apache.spark.executor.CoarseGrainedExecutorBackend

org.apache.spark.executor.Executor

3,执行task的过程

org.apache.spark.scheduler.cluster.CoarseGrainedSchedulerBackend

org.apache.spark.executor.CoarseGrainedExecutorBackend

org.apache.spark.executor.Executor

org.apache.spark.executor.TaskRunner

三,结合具体流程图讲解

四,视频解说

第一次录制,图文解说视频,不足之处望大家谅解。也欢迎大家评论区里指出,浪尖加以修正,更好的服务于大家。

原文发布于微信公众号 - Spark学习技巧(bigdatatip)

原文发表时间:2017-08-01

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏ThoughtWorks

10Hours 网页应用

以前段开发为特长,不放过技术大赛这样机会的刘旸,和几个同事打造的10Hours 受到了大家的好评。想知道何谓10Hours?那就~ ? 最近公司举办技术大赛,...

3289

使用CoreOs,Docker和Nirmata来部署微服务风格的应用程序

随着应用程序容器(application container)的技术越来越被大众接受,设计用于运行容器的“最轻量级”操作系统正在变得非常流行。CoreOS便是这...

3967
来自专栏Golang语言社区

go-nsq使用简述

一 环境依赖:   golang 开发环境(version >= 1.2) 下源码,配置环境变量,执行安装脚本   gpm 依赖包管理...

50910
来自专栏开源项目

Git 项目推荐 | 基于go+protobuff 实现的分布式

eQ ? 基于go+protobuff实现的多种持久化方案的mq框架 Client For KiteQ Go: https://github.com/b...

49514
来自专栏zhisheng

RocketMQ 安装及快速入门

如果你对 RocketMQ 还没了解,建议先看下上一篇文章:RocketMQ 初探 安装条件 64位操作系统,建议使用 Linux / Unix / Mac; ...

42411
来自专栏PHP在线

PHP异步高并发扩展Swoole

php的优势不在说了。swole可能有些人还是是太熟悉,这也是php的一大革新。 下面来介绍一下。 GitHub地址:https://github.com/ma...

6296
来自专栏Debian社区

分布式版本控制系统 Git v2.12.2 发布

Git v2.12.2 发布了,Git 是一个开源的分布式版本控制系统,用以有效、高速的处理从很小到非常大的项目版本管理。是 Linus Torvalds 为了...

1514
来自专栏琯琯博客

优化 Laravel 网站打开速度

1.关闭debug 打开.env文件,把debug设置为false. APP_ENV=local APP_DEBUG=false APP_KEY=base64...

42011
来自专栏听Allen瞎扯淡

解决mac升级10.11后,出现的 xcrun: error: invalid active developer path, missing xcrun 错误

前天把小mac升级到了10.11,结果今天在终端里使用git的时候,弹出一行莫名其妙的错误:xcrun: error: invalid active devel...

810
来自专栏大魏分享(微信公众号:david-share)

Ansible Tower实战大全:第一篇

1.前言     Ansible是一个开源的配置管理和业务流程工具。它可以自动化和标准化的配置远程主机和虚拟机。它的编排功能允许Ansible并列的启动和正常关...

7876

扫码关注云+社区

领取腾讯云代金券