从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. PHP获取一年中每个星期的开始和结束日期的方法

    这篇文章主要介绍了PHP获取一年中每个星期的开始和结束日期的方法,涉及php对日期操作的技巧,具有一定参考借鉴价值,需要的朋友可以参考下 本文实例讲述了PHP获取一年中每个星期的开始和结束日期的方法. ...

  2. Javascript-- jQuery样式篇(二)

    jQuery的属性与样式 .attr()与.removeAttr() 每个元素都有一个或者多个特性,这些特性的用途就是给出相应元素或者其内容的附加信息.如:在img元素中,src就是元素的特性,用来标 ...

  3. PyQt5布局管理(1)

    Qt布局管理按简单分可分为绝对位置布局和布局管理器布局 一.绝对位置布局: 组件不放在布局管理器中,通过函数setGeometry(x,y,width,height)来设定组件相对其父窗口的位置.其中 ...

  4. 动态规划 两个字符串之间的编辑距离 leetcode72

    public static int minDistance(String word1, String word2) { char[] s1 = word1.toCharArray(); char[] ...

  5. linux命令学习笔记(9):touch 命令

    linux的touch命令不常用,一般在使用make的时候可能会用到,用来修改文件时间戳,或者新建一个不存在的文件. .命令格式: touch [选项]... 文件... .命令参数: -a 或--t ...

  6. [BALTIC 2008] Grid

    [题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=1169 [算法] 首先DFS枚举出横着切的 然后二分 + 贪心即可 时间复杂度 : O ...

  7. cloudera上面安装Spark2.0

    Cloudera默认值是提供Spark1.6的安装,下面介绍如何来安装spark2.1 1. csd包:http://archive.cloudera.com/spark2/csd/ 2. parce ...

  8. JavaScript编写代码时候没有提示

    如上图所示如果没有提示可能是箭头所指示的类型不正确.

  9. mysql基础之三:char与varchar区别,varchar(M)能存多少

    char与varchar区别 char (13)长度固定, 如'1234567890' 存储需要空间 10个字符; varchar(13) 可变长 如'1234567890' 需要存储空间 11字符; ...

  10. K Sum(2 Sum,3 Sum,4 Sum,3-Sum Closest)

    算是经典算法问题了.这里主要针对只存在一个解或者只需要求一个解的情况描述一下解题思路.若需要找到所有可能解,方法需要略作调整.如有问题,欢迎指正. 2 sum: 如果已排序,可直接用夹逼法,即两指针从 ...