从Spark Runtime的角度来讲由五大核心对象:Master、Worker、Executor、Driver、CoarseGrainedExecutorBacked;

Spark在做分布式集群系统设计的时候,最大化功能独立、模块化封装具体独立的对象、强内聚、松耦合。

Spark集群的启动及任务提交大致步骤:

1. 首先启动Master进程,负责整个集群资源的管理和分配,并接收作业的提交,且为作业分配计算资源。

2. 每个工作结点默认情况下都会启动一个Worker Process来管理当前结点的Memory,CPU等计算资源(实际上是通过Master来管理每台机器上的计算资源),并且向Master汇报当前结点还可以正常工作。

3. 当用户提交作业给Master的时候,Master会为作业分配ID并分配 计算资源, 默认情况下,会为当前的应用程序在每个Worker Process下面分配一个CoarseGrainedExecutorBackend进程, 该进程默认情况下会最大化的使用当前结点上的内存和CPU

当Driver中的SparkContext初始化的时候会提交程序给Master,Master如果接受该程序在Spark中运行的话,就会为当前的程序 分配AppID,同时会分配具体的计算资源,需要特别注意的是,Master是根据当前提交程序的配置信息来给集群中的Worker发指令分配具体的计算资源。但是,Master发出指令后并不关心具体的资源是否已经分配 ,也就是说master是发指令后就记录了分配 的资源,以后客户端再次提交其它的程序的话就不能使用该资源了。其弊端是可能会导致其它要提交的程序无法分配 到本来应该可以分配到的计算资源。最重要的优势在于Spark分布式系统功能弱耦合的基础上最快的运行系统(否则,如果Master要等到资源最终分配成功后才通知Driver的话,就会造成Driver阻塞,不能够最大化并行计算资源的使用率)。Spark默认情况下由于集群中一般都只有一个Application在运行,所有Master分配 资源策略的弊端就没有那么明显了。

Job提交过程:

1. 一个技巧是通过在Spark-shell中运行一个Job来了解Job提交的过程。然后用源码来验证

2. 在Spark中所有的Action都会触发至少一个Job

3. SparkContext在实例化的时候会构造SparkDeploySchedulerBackend、DAGScheduler、TaskSchedulerImpl等对象,其中

3.1  SparkDeploySchedulerBackend 负责集群计算资源的管理和调度,

3.2  DAGScheduler 负责高层调度(例如Job中Stage的划分,数据本地性内容);

3.2  TaskSchedulerImpl 负责具体Stage内部的底层调度(例如每个Task的调度、Task容错);

3.4  MapOutputTrackerMaster 负责Shuffle中数据输出和读取的管理。

Task运行解密:

1. Task是运行在 Executor 中的,而 Executor 又是位于 CoarseGrainExecutorBackend 中的,且 CoarseGrainExecutorBackend 和 Executor 是一 一对应 的。

2. 当CoarseGrainExecutorBackend接收到TaskManager发过来的LaunchTask(这是一个case class)消息后会反序列化TaskDescription,然后使用executor去执行任务

Spark Job具体的物理执行:

Spark Application里面可以产生一个或者多个Job,例如Spark-shell默认启动的时候内部就没有Job,只是作为资源的分配程序,可以在里面写代码产生若干个Job。普通程序中一般而言可以有不同的Action,每个Action一般也会触发一个Job.

Spark是MapReduce思想的一种更加精致和高效的实现。

Spark算法构造和物理执行时最最基本的核心是:最大化Pipeline.

基于Pipeline的思想,数据被使用的时候才开始计算,从数据流的视角来说,是数据流动到计算的位置。实质上,从逻辑的角度来看,是算子在数据上流动。

Spark Runtime概述的更多相关文章

  1. 大数据技术之_19_Spark学习_03_Spark SQL 应用解析 + Spark SQL 概述、解析 、数据源、实战 + 执行 Spark SQL 查询 + JDBC/ODBC 服务器

    第1章 Spark SQL 概述1.1 什么是 Spark SQL1.2 RDD vs DataFrames vs DataSet1.2.1 RDD1.2.2 DataFrame1.2.3 DataS ...

  2. 大数据技术之_19_Spark学习_04_Spark Streaming 应用解析 + Spark Streaming 概述、运行、解析 + DStream 的输入、转换、输出 + 优化

    第1章 Spark Streaming 概述1.1 什么是 Spark Streaming1.2 为什么要学习 Spark Streaming1.3 Spark 与 Storm 的对比第2章 运行 S ...

  3. 大数据技术之_19_Spark学习_05_Spark GraphX 应用解析 + Spark GraphX 概述、解析 + 计算模式 + Pregel API + 图算法参考代码 + PageRank 实例

    第1章 Spark GraphX 概述1.1 什么是 Spark GraphX1.2 弹性分布式属性图1.3 运行图计算程序第2章 Spark GraphX 解析2.1 存储模式2.1.1 图存储模式 ...

  4. Spark SQL概念学习系列之Spark SQL概述

    很多人一个误区,Spark SQL重点不是在SQL啊,而是在结构化数据处理! Spark SQL结构化数据处理 概要: 01 Spark SQL概述 02 Spark SQL基本原理 03 Spark ...

  5. 第1章 Spark SQL概述

    第1章 Spark SQL概述 1.1 什么是Spark SQL Spark SQL是Spark用来处理结构化数据的一个模块,它提供了一个编程抽象叫做DataFrame并且作为分布式SQL查询引擎的作 ...

  6. Spark环境搭建(五)-----------Spark生态圈概述与Hadoop对比

    Spark:快速的通用的分布式计算框架 概述和特点: 1) Speed,(开发和执行)速度快.基于内存的计算:DAG(有向无环图)的计算引擎:基于线程模型: 2)Easy of use,易用 . 多语 ...

  7. Spark内核概述

    提交Spark程序的机器一般一定和Spark集群在同样的网络环境中(Driver频繁和Executors通信),且其配置和普通的Worker一致 1. Driver: 具有main方法的,初始化 Sp ...

  8. 【Spark】概述

    大数据数据处理模型: 1.Google的MapReduce是一个简单通用和自动容错的批处理计算模型.但,不适合交互式和流式计算! 2.Storm 3.Impala 4.GraphLab 5.Spark ...

  9. [Spark Streaming_1] Spark Streaming 概述

    0. 说明 Spark Streaming 介绍 && 在 IDEA 中编写 Spark Streaming 程序 1. Spark Streaming 介绍 Spark Stream ...

随机推荐

  1. spring boot: EL和资源 (一般注入说明(二) @Service注解 @Component注解)

    @Service用于标注业务层组件 : 将当前类注册为spring的Bean @Controller用于标注控制层组件(如struts中的action) @Repository用于标注数据访问组件,即 ...

  2. php: +1天, +3个月, strtotime(): +1 day, +3 month

    php: +1天, +3个月, strtotime():  +1 day, +3 month 比如,我现在当前时间基础上+1天: strtotime("+1 day"); 比如我现 ...

  3. python MLP 神经网络使用 MinMaxScaler 没有 StandardScaler效果好

    MLP 64,2  preprocessing.MinMaxScaler().fit(X)                               test confusion_matrix:[[ ...

  4. 使用kill命令终止进程shell脚本

    因有的程序使用kill才能结束掉进程,没有关闭脚本,以我司的服务为例,服务名叫asset-server服务,只有启动脚本,自编写关闭脚本,及重启动脚本. 关闭服务脚本. vim asset-shutd ...

  5. Selenium-免登录的实现

    场景: 经常会遇到登录需要验证码这样类似的情况 解决方案: 1.万能验证码 2.利用cookies来实现,问开发哪个cookies值是登录后需要的,把这个值带上即可 3.利用火狐浏览器的profile ...

  6. html实现摇一摇并震动

    今天收到了领导的通知,要APP和触屏完成摇一摇的功能,本来通过IOS调用原生还是蛮方便的,但想如果采用web前端的方式应该是实现不了的,马上就开始推脱了.可惜领导告知微信京东购物,不仅仅有摇一摇还有震 ...

  7. popupTheme和theme

    popupTheme是指toolBar中弹出的menu的Theme. 那么,如果想让ToolBar的文字是白色,如果你设置Toolbar的Theme是 "ThemeOverlay.AppCo ...

  8. freeMarker(九)——程序开发指南补充知识

    学习笔记,选自freeMarker中文文档,译自 Email: ddekany at users.sourceforge.net 1.变量.范围 本章介绍当模板在访问变量时发生了什么事情,还有变量是如 ...

  9. 洛谷3384&bzoj1036树链剖分

    值得注意的是: 一个点的子树是存在一起的...也就是说我们修改子树的时候只用... /********************************************************* ...

  10. 汇编题目:在窗口上显示Welcome to masm!

    题目:在屏幕中间分别显示绿色.绿底红色.白底蓝色的字符串'welcome to masm!'. 该程序题目来自<王爽 汇编语言_第2版>的188页的说明.相关资料也在上面都有详细说明. 题 ...