Spark核心组件
Spark核心组件
1、RDD
resilient distributed dataset, 弹性分布式数据集。逻辑上的组件,是spark的基本抽象,代表不可变,分区化的元素集合,可以进行并行操作。该类封装了RDD的基本操作,例如map、filter、persist等,除此以外,PairRDDFunctions封装了KV类型RDD的操作,例如groupByKey和join。对于spark的KV类型RDD直接隐式转换成PairRDDFunctions类,具备了byKey的操作。
RDD轻量级集合,内部没有数据。内部,每个RDD具有5方面主要属性:
- 分区列表
- 用于计算每个切片的函数(算法)
- 到其他RDD的依赖列表
- (可选)对于KV类型的RDD有一个分区类
- (可选)计算每个切片的首选位置列表
spark中所有的调度和执行都是基于这些方法,也允许每个RDD实现自己的计算方式。RDD的方法主要包含两种类型Transformations和action。返回rdd都是变换,不会导致job的执行,延迟计算,延迟到action方法的调用。
1.1 transform
- map
- filter
- mapValues
- flatMap
- reduceByKey
- groupByKey
- sortByKey
2、SparkContext
上下文创建时,在worker节点直接启动job的执行器进程(CoarseGrainedExecutorBackend),spark入口点,表示到spark集群的一个连接。创建该类时,同时创建task调度器和后台调度器,后台调度器还要决定默认并发度问题。
3、DagScheduler
高级调度层,面向stage进行调度,为每个job计算stage,寻找最优路径执行job。该调度器以taskset方式提交stage给下层调度器(TaskScheduler)。Spark以shuffle为边界,将众多的RDD划分成stage,窄依赖的RDD划分到一个stage中。shuffle依赖需要多个stage,DAG调度检测运行task的首选位置,该调度器将位置信息和状态传递给底层的task调度器。DAG调度器处理因shuffle output丢失导致故障,此时上一个stage需要重新提交。在阶段stage内,不是由shuffle output丢失导致的故障都由下层的task调度器处理。缓存跟踪,避免rdd重复计算。首选位置:首选那个节点来执行task。为了防止内存泄漏,job完成后清除数据结构。递归提交每个Stage,每个stage都是以Tasket方式提交任务集合给下层的TaskScheduler,因此Dag调度器需要计算每个stage的任务集合。提交的阶段通过分区列表映射成Task集合,ShuffleMapStage对应ShuffleTask,ResultStage对应
ResultTask。
4、TaskSchedulerImpl
5、SchedulerBackend
6、job
activejob,提交给调度器的最顶层work单位,每个job可能需要多各stage的执行,并产生中间结果。
7、stage
stage是task的集合,数量同stage的最后的一个rdd的分区数相同。stage按照shuffle进行划分边界,存在前后依赖,上一阶段计算输出,下一个提取上一个的结果。主要有两种类型stage:
- ResultStage
最后的阶段,执行action。在RDD的某些分区上应用函数来计算action的结果。 - ShuffleMapStage
产生map的output,stage如果重用了rdd,可以跨job共享。该阶段是DAG图计算过程中的中间阶段,执行时保存输出文件供reduce任务抓取,该阶段可以单独提交,DagScheduler.submitMapStage();
8、Task
Spark核心组件的更多相关文章
- [Spark Core] Spark 核心组件
0. 说明 [Spark 核心组件示意图] 1. RDD resilient distributed dataset , 弹性数据集 轻量级的数据集合,逻辑上的集合.等价于 list 没有携带数据. ...
- Spark核心组件通识概览
在说Spark之前,笔者在这里向对Spark感兴趣的小伙伴们建议,想要了解.学习.使用好Spark,Spark的官网是一个很好的工具,几乎能满足你大部分需求.同时,建议学习一下scala语言,主要基于 ...
- Spark内核| 调度策略| SparkShuffle| 内存管理| 内存空间分配| 核心组件
1. 调度策略 TaskScheduler会先把DAGScheduler给过来的TaskSet封装成TaskSetManager扔到任务队列里,然后再从任务队列里按照一定的规则把它们取出来在Sched ...
- 《大数据Spark企业级实战 》
基本信息 作者: Spark亚太研究院 王家林 丛书名:决胜大数据时代Spark全系列书籍 出版社:电子工业出版社 ISBN:9787121247446 上架时间:2015-1-6 出版日期:20 ...
- zhihu spark集群,书籍,论文
spark集群中的节点可以只处理自身独立数据库里的数据,然后汇总吗? 修改 我将spark搭建在两台机器上,其中一台既是master又是slave,另一台是slave,两台机器上均装有独立的mongo ...
- spark概念、编程模型和模块概述
http://blog.csdn.net/pipisorry/article/details/50931274 spark基本概念 Spark一种与 Hadoop 相似的通用的集群计算框架,通过将大量 ...
- Spark 介绍
MapReduce给用户提供了简单的编程接口,用户只需要按照接口编写串行版本的代码,Hadoop框架会自动把程序运行到很多机器组成的集群上,并能处理某些机器在运行过程中出现故障的情况.然而,在MapR ...
- 【大数据】Spark内核解析
1. Spark 内核概述 Spark内核泛指Spark的核心运行机制,包括Spark核心组件的运行机制.Spark任务调度机制.Spark内存管理机制.Spark核心功能的运行原理等,熟练掌握Spa ...
- 三、spark简介
一.简介 spark的官网:http://spark.apache.org/ spark解决了什么问题? 我们都知道hadoop,hadoop以一个非常容易使用的编程模型解决了大数据的两大难题: 1) ...
随机推荐
- H5切换至后台页面
先说重点,试了很多种方法,这个真实有效 var reLoadLeftTime = false ;//监听浏览器当前页面是否被激活的事件var hiddenProperty = 'hidden' in ...
- js 联动下拉菜单
<!doctype html> <html> <head> <meta charset="utf-8"> <title> ...
- Go语言基础之11--Goroutine
一.创建goroutine 1)在go语言中,每一个并发的执行单元叫做一个goroutine: 2)当一个程序启动时,其主函数即在一个单独的goroutine中运行,一般这个goroutine是主go ...
- Appium——appium之mac环境安装
一.安装brew:Homebrew是一款Mac OS平台下的软件包管理工具执行:/usr/bin/ruby -e "$(curl -fsSL https://raw.githubuserco ...
- java——删除链表中等于给定值的所有元素
class ListNode{ int val ; ListNode next; public ListNode(int x) { val = x; } public ListNode(int[] a ...
- gitlab 邮件配置
vim /etc/gitlab/gitlab.rb gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "sm ...
- Vue.js-----轻量高效的MVVM框架(六、Class与Style绑定)
这个相对来说简单,看一遍代码就懂. 一.完整片段: <!DOCTYPE html> <html> <head> <meta charset="UTF ...
- 1.Exadata技术演进
V1-v2 和 HP Exadata 2-2 和 SUN 2011 3-2 4-2 5-2 2014底 2-2 混合运算 2-8 是大数据运算 问题1. 随着系统规模增加,传统数据库架 ...
- C# 反射(Reflection)
反射主要用于在程序运行期间动态解析相关类的类名,命名空间,属性,方法并进行相应操作,以下通过两个简单的例子进行了说明: 示例1:调用程序集内部方法,运行时动态获取相关类的信息,包括类名,命名空间等信息 ...
- Robot Framework自动化测试(一)
=============所需要环境========== Python: https://www.python.org/ RF框架是基于python 的,所以一定要有python环境. Robot f ...