Spark运行时的内核架构以及架构思考
一: Spark内核架构
1,Drive是运行程序的时候有main方法,并且会创建SparkContext对象,是程序运行调度的中心,向Master注册程序,然后Master分配资源。
应用程序: Application = Driver(驱动程序) + Executor(执行程序)
Driver部分的代码:主要是SparkContext +SparkConf
Application 的main 方法 、创建sparkcontext、这样 环境对象 sparkcontext 创建时要有程序的高层调度器DAGScheduler 分为几个阶段 、底层调度器TasKScheduler 一个阶段的任务处理 、SchedulerBackend向Master 注册程序 、分资源 、根据 job 许多RDD 从后向前倒推 如宽依赖划分不同的stage 然后提交给底层调度器TaskScheduler 然后根据 数据的本地性 发送到 Excutor 去执行,如出问题 向 Drive 部分 汇报 完成 关闭创建对象
Executor 是运行在Worker所在节点上,为当前应用程序而开启的一个JVM进程里边的一个对象,这个对象负责具体Task的运行。这个JVM进程里面是通过 线程池并发 每个线程运行一个Task任务 ,完成后 进行 线程复用。
默认情况在一个节点上 只为当前程序 开启 一个 Excutor。
Cluster Manager(集群中获取资源的Web服务)
spark Aplication 运行不依赖 Cluster Manager
可插拔的 资源方式 粗粒度的
Worker 操作代码的节点,不运行 程序的代码,管理 当前 节点的资源(cup,Memory),并接收 Master指令来分配具体的计算资源的Excutor(在新的进程中分配)
并通过ExcutorRunner 来具体启动一个新进程,进程里面有Executor。
在此可以做一个比喻:Worker是工头,Cluster Manager:是项目经理
Master:是Boss
worker 不会 汇报 当前信息(发心跳) 给 Master
故障时候 发的心跳 只有 workid
Master 分配时 就知道 资源
Job 包含一系列的task 并行计算 一般由action 触发 action不会产生RDD
action前面的是RDD ,前面的RDD是Transformation级别的是lazy的执行方式,他是从后往前推,如果后面的RDD与前面的RDD是回溯的话是窄依赖(如果父RDD的一个Partition被一个子RDD的Partion所使用的话就是窄依赖,否则的话就是宽依赖,如果子RDD中的Partition对父RDD的Partition依赖的数量不会随着数据量规模的改变而改变的话就是窄依赖,否则的话就是宽依赖)的话就在内存中进行迭代。宽依赖导致stage的划分。
Spark快绝不是因为基于内存,最基本的是他的调度,然后是他的容错
如果 宽依赖
依赖构成了 DAG ,DAG导致 宽依赖
stage 是内存迭代 当然也可以 磁盘的迭代 ,如有100W 个数据分片 就有 100W 个task任务
stage内部:计算逻辑一样 只是 算的数据不一样而已
任务本身计算数据分片 ,一个pation是否精的 等于 一个 block大小?
默认情况下 是 一个数据分片 128MB 最后一个记录跨2个 block
怎么分配资源:通过spark-env.sh和spark-defaults.sh
Scheduling:
Dependency Types :
Event Flow :
长按识别关注我们,每天都有技术和精彩内容分享哦!~
Spark运行时的内核架构以及架构思考的更多相关文章
- ILBC 运行时 (ILBC Runtime) 架构
本文是 VMBC / D# 项目 的 系列文章, 有关 VMBC / D# , 见 <我发起并创立了一个 VMBC 的 子项目 D#>(以下简称 <D#>) https:// ...
- spark运行时加载配置文件(hive,hdfs)
文章为转载,如有版权问题,请联系,谢谢! 转自:https://blog.csdn.net/piduzi/article/details/81636253 适合场景:在运行时才确定用哪个数据源 imp ...
- Android数据存储之Android 6.0运行时权限下文件存储的思考
前言: 在我们做App开发的过程中基本上都会用到文件存储,所以文件存储对于我们来说是相当熟悉了,不过自从Android 6.0发布之后,基于运行时权限机制访问外置sdcard是需要动态申请权限,所以以 ...
- spark运行时出现Neither spark.yarn.jars nor spark.yarn.archive is set错误的解决办法(图文详解)
不多说,直接上干货! 福利 => 每天都推送 欢迎大家,关注微信扫码并加入我的4个微信公众号: 大数据躺过的坑 Java从入门到架构师 人工智能躺过的坑 ...
- Spark on Yarn运行时加载的jar包
spark on yarn运行时会加载的jar包有如下: spark-submit中指定的--jars $SPARK_HOME/jars下的jar包 yarn提供的jar包 spark-submit通 ...
- 【转载】Spark运行架构
1. Spark运行架构 1.1 术语定义 lApplication:Spark Application的概念和Hadoop MapReduce中的类似,指的是用户编写的Spark应用程序,包含了一个 ...
- Spark运行架构
http://blog.csdn.net/pipisorry/article/details/52366288 1. Spark运行架构 1.1 术语定义 lApplication:Spark App ...
- Spark 运行架构核心总结
摘要: 1.基本术语 2.运行架构 2.1基本架构 2.2运行流程 2.3相关的UML类图 2.4调度模块: 2.4.1作业调度简介 2.4.2任务调度简介 3.运行模式 3.1 standalo ...
- Spark入门实战系列--4.Spark运行架构
[注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 1. Spark运行架构 1.1 术语定义 lApplication:Spark Appli ...
随机推荐
- 一、基础篇--1.2Java集合-HashMap和HashTable的区别
HashMap和HashTable的区别 1.继承的父类不同,HashMap继承的是AbstractMap类,HashTable继承的是Dictionary类,不过都实现了Map.Clone.Seri ...
- php获取文件名和后缀名
php获取文件名 1 function retrieve($url) 2 { 3 preg_match('/\/([^\/]+\.[a-z]+)[^\/]*$/',$url,$match); 4 re ...
- 客户端连接oracle11出现提示ORA-12514:错误解决方法
近来安装oracle11g,使用后发现plsql和sqldeveloper等客户端工具不能用,提示以下错误: 1.ORA-12514: TNS: 程序无法监听 原因:OracleOraDb11g_ho ...
- postman提交数组格式方式
提交数组格式数据,对应的服务器端接收的是@RequestBody 和对应的接收值
- 国内npm源
永久使用lnpm config set registry https://registry.npm.taobao.org // 配置后可通过下面方式来验证是否成功 npm config get reg ...
- IDEA2019.2个人使用方案
参考文档 https://segmentfault.com/a/1190000019813993?utm_source=tag-newest
- clientX和clientY属性需要注意的地方
clientX和clientY为可视区鼠标的位置. 1. 随鼠标移动的div块[runjs] 当document有多个页面时,会出现问题.[runjs] 2. 解决方案:scrollTop, scro ...
- 什么是maven?maven中的pom文件是做什么的?
Maven 是专门用于构建和管理Java相关项目的管理工具. 1.使用Maven管理的Java 项目都有着相同的项目结构 2.统一维护jar包 POM是项目对象模型(Project Object Mo ...
- FTP简单搭建(二)
六.配套设置 1.基于用户名的上传和下载 创建用户 useradd alex echo redhat |passwd --stdin alex 指定用户登录的路径 可不设置,不设置则为用户家目录 mk ...
- Adobe Acrobat XI 中文版激活方法
Adobe Acrobat XI不仅只是出色的PDF编辑.转换软件.此次更新深度整合了Microsoft Office套件,实现了PDF与Word.Excel以及PowerPoint等文档间的无缝相互 ...