Spark 使用主从架构,有一个中心协调器和许多分布式worker。

中心协调器被称为driver。Driver 和被称为executor 的大量分布式worker 通信

Driver 运行在它自己的Java 进程,而每个executor 是单独的Java 进程。Driver

和它的所有executor 一起被称为Spark 应用。

Spark 应用运行在一组使用被称为集群管理器的外部服务的机器上。注意,Spark

打包了一个内置的集群管理器,叫做Standalong 集群管理器。Spark 也可以工作
于Hadoop YARN 和Apache Mesos 这两个开源的集群管理器。

  • Driver

Driver 是你的程序的main() 方法所在的进程。该进程运行用户代码创建

SparkContext,创建RDD,执行变换和动作。当运行一个Spark Shell,你就创
建了一个driver 程序 。一旦driver 终止,整个应用就结束了。
当driver 运行时,它有两个职责:

  • 转换用户程序到任务

Spark 的driver 有责任转换用户程序到被称为任务的物理执行单元。从上层看,

所有的Spark 程序都遵循同样的结构:它们从输入创建RDD,通便变换从这些RDD

得到新的RDD,然后执行动作来采集数据或保存数据。Spark

程序隐含创建了操作的逻辑合理的有向无环图(DAG)。当driver 运行时,它

转换该图到物理执行计划。

Spark 执行多种优化,比如“流水线”映射转换合并,并转换执行图到一组

stage。每个stage 又由一组task 组成。Task 则被捆绑在一起准备被发送到集

群。Task 是Spark 处理中的最小单元。典型的用户程序要执行成百上千个单

独的任务。

  • 调度task 到executor

有了物理执行计划,driver 必须协调各独立任务到executor 中。当excutor 启

动后,它们会将自己注册到driver,所以driver 随时都能看到完整的executor

视图。每个executor 表现为能执行任务和保存RDD 数据的进程。
Spark Driver 会寻找当前的executor 组,然后基于数据分布尝试调度每个task
到合适的位置。当任务执行时,可能会对正缓存的数据有副作用。Driver 也
要记录缓存数据的位置并用来调度将来访问这些数据的任务。
Driver 从web 接口暴露出了这些Spark 应用的运行信息,默认端口是4040。
例如,在本地模式,可用的UI 是http://localhost:4040。

  • Executors

Spark Executor 是worker 进程,其职责是运行给定的Spark 作业中的单个任务。

Executor 在Spark 应用开始的时候被启动一次,一般会在应用的整个生命周期都

运行。虽然executor 出错了Spark 也可以继续。Executor 有两个任务。一个是运
行构成应用的任务并返回结果到driver。第二个是通过每个executor 中都存在的
被称为块管理器(Block Manager)的服务为用户程序中缓存的RDD 提供内存存
储。因为RDD 被直接缓存在execturo 中,任务可以和数据在一起运行。

  •       Spark 应用在集群运行时的准确步骤

1. 用户用spark-submit 提交了一个应用。
2. spark-submit 启动driver 程序,并调用用户指定的main()方法。
3. driver 程序联系集群管理器请求资源来启动各executor。
4. 集群管理器代表driver 程序启动各executor。
5. Driver 进程运行整个用户应用。程序中基于RDD 的变换和动作,driver 程序
以task 的形式发送到各executor。
6. Task 在executor 进程运行来计算和保存结果。
7. 如果driver 的main()方法退出或者调用了SparkContext.stop(),就会终止
executor 的运行并释放从集群管理器分配的资源。

Spark 宏观架构&执行步骤的更多相关文章

  1. Spark入门实战系列--4.Spark运行架构

    [注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 1. Spark运行架构 1.1 术语定义 lApplication:Spark Appli ...

  2. Spark SQL概念学习系列之Spark SQL 架构分析(四)

    Spark SQL 与传统 DBMS 的查询优化器 + 执行器的架构较为类似,只不过其执行器是在分布式环境中实现,并采用的 Spark 作为执行引擎. Spark SQL 的查询优化是Catalyst ...

  3. 【转载】Spark运行架构

    1. Spark运行架构 1.1 术语定义 lApplication:Spark Application的概念和Hadoop MapReduce中的类似,指的是用户编写的Spark应用程序,包含了一个 ...

  4. spark 运行架构

    spark 运行架构基本由三部分组成,包括SparkContext(驱动程序),ClusterManager(集群资源管理器)和Executor(任务执行过程)组成. 其中SparkContext负责 ...

  5. Spark运行架构详解

    原文引自:http://www.cnblogs.com/shishanyuan/p/4721326.html 1. Spark运行架构 1.1 术语定义 lApplication:Spark Appl ...

  6. Spark SQL底层执行流程详解

    本文目录 一.Apache Spark 二.Spark SQL发展历程 三.Spark SQL底层执行原理 四.Catalyst 的两大优化 一.Apache Spark Apache Spark是用 ...

  7. Spark Streaming 架构

    图 1   Spark Streaming 架构图 组件介绍:‰ Network Input Tracker : 通 过 接 收 器 接 收 流 数 据, 并 将 流 数 据 映 射 为 输 入DSt ...

  8. Spark运行架构

    http://blog.csdn.net/pipisorry/article/details/52366288 1. Spark运行架构 1.1 术语定义 lApplication:Spark App ...

  9. Spark基本架构

    Spark基本架构图如下: Client:客户端进程,负责提交作业. Driver:一个Spark作业有一个spark context,一个Spark  Context对应一个Driver进程,作业的 ...

随机推荐

  1. java获得汉语首字母

    package org.scbit.lsbi.scp.utils; import net.sourceforge.pinyin4j.PinyinHelper; import net.sourcefor ...

  2. 给Android系统安装busybox

    转自:http://blog.csdn.net/lxgwm2008/article/details/38925051 busybox号称Linux平台的瑞士军刀,它集成了100多个最常用的Linux命 ...

  3. Linux的tmpfs文件系统

    转载:http://blog.csdn.net/wxwsixis/article/details/5752186 前几天发现服务器的内存(ram)和swap使用率非常低,于是就想这么多的资源,不用岂不 ...

  4. iOS NSOperation 封装 通知实现界面更新

    #import <Foundation/Foundation.h> #import <UIKit/UIKit.h> @interface MYOperation : NSOpe ...

  5. 【MongoDB】4.MongoDB 原子修改器的 极速修改

    文档转自:http://blog.csdn.net/mcpang/article/details/7752736 对于文档的更新除替换外,针对某个或多个文档只需要部分更新可使用原子的更新修改器,能够高 ...

  6. 前端SEO技巧

    前几天在慕课网上学习了“SEO在网页制作中的应用”,觉得挺好.挺有用的,今天,特此做了一个小小的笔记,也算是对学习过后的一个总结. 一.搜索引擎工作原理 当我们在输入框中输入关键词,点击搜索或查询时, ...

  7. BestCoder Round #85(ZOJ1569尚未验证)

    A题 子序列和啊,就要想到前缀和的差.这个转换一定要!记着!那么i到j的一段子序列和Sij%m ==  0就等价于(Sj-Si-1)%m == 0 了,那么什么意思呢?就是如果有两段前缀和%m的模是一 ...

  8. WinServer 2008 远程桌面连接设置

    WinServer 2008 远程桌面连接设置   1.在服务器端启用远程桌面>>计算机--右键--管理 看远程桌面是否已经启用,若未启用则启用它.配置远程桌面,勾选允许任意版本远程桌面的 ...

  9. 如何在Ubuntu 14.04服务器上自动化部署Spring Boot的应用

    https://segmentfault.com/a/1190000003944843

  10. java中采用dom4j解析xml文件

    一.前言 在最近的开发中用到了dom4j来解析xml文件,以前听说过来解析xml文件的几种标准方式:但是从来的没有应用过来,所以可以在google中搜索dmo4j解析xml文件的方式,学习一下dom4 ...