从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. CDN存储和加速静态文件是什么回事(整理)(CDN是什么)

    CDN存储和加速静态文件是什么回事(整理)(CDN是什么) 一.总结 一句话总结: 内容分发网络:Content Delivery Network:依靠网络中的各个节点,就近发放静态资源. CDN的全 ...

  2. Python基础-操作mysql

    mysql 属于第三方模块,需要先安装 pip install pymysql,sql执行后,数据获取函数有三种cur.fetchone()#获取第一条数据,依次类推下去,第二次执行时候,就会取除去第 ...

  3. bzoj 3439: Kpm的MC密码 Trie+动态开点线段树

    题目大意: http://www.lydsy.com/JudgeOnline/problem.php?id=3439 题解: 首先我们发现这道题要查的是后缀不是前缀. 如果查前缀就可以迅速查找到字符串 ...

  4. 使用Visual Studio进行单元测试-Part4

    本文主要介绍Visual Studio(2012+)单元测试框架的一些技巧: 如何模拟类的构造函数 优化代码,便于测试 一.如何模拟类的构造函数 1.1 被测代码 基础代码,IShape分别有Rect ...

  5. 51nod 1486 大大走格子——容斥

    题目:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1486 已知起点到某个障碍点左上角的所有点的不经过障碍的方案数,枚举 ...

  6. ssh免密码登录配置方法,(图示加命令)

    首先,说明一下我们要做的是,serverA 服务器的 usera 用户免密码登录 serverB 服务器的 userb用户. 我们先使用usera 登录 serverA 服务器 [root@serve ...

  7. HDU3018:Ant Trip(欧拉回路)

    Ant Trip Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Su ...

  8. boost::io_service解读

    boost::io_service解读 asio是boost提供的一个c++异步编程模型库,其核心类io_service,在多线程编程里面提供了任务队列和任务分发功能,在socket.io编程里主要作 ...

  9. hdu 5616 Jam's balance 正反背包+转换

    http://acm.hdu.edu.cn/showproblem.php?pid=5616 思路 题目中蕴含着两种需要计算的重量 1. 从所有的砝码中挑出任意种2.(转换的思想)在天平的两端都挑出这 ...

  10. 集合对象与自定义javabean对象接收数据库查询的数据 (基础知识扫盲)

    一.集合对象(List,Map,数组)等对象接收数据库查询的记录,如果没有一条记录,就得到的内容为空的集合,不是null: 例如:List查不到记录得到的就是size=0的list 二.自定义的jav ...