Spark源码分析
名词解释
RDD
全称为ResilientDistributedDataset,弹性分布式数据集。
就是分布在集群节点上的数据集,这些集合可以用来进行各种操作。最重要的一点是,某个操作计算后的数据集可以缓存在内存中,然后给其他计算使用,这种在迭代计算中很常见。比如:我们可以从hdfs文件里创建一个数据集,然后经过filter后,会生成一个新的数据集,还可以进行groupby,map函数等操作,得到另一个数据集。
Iterator
迭代器,即是提供一级接口给其他人来访问RDD中的数据集。
Job
一道作业,即指应用完成某项需求所需要一系列工作,统一称为作业。
DAG
有向无环图,将作业分解成若干个阶段,每个阶段都是由若干个task组成,而这些阶段都是有先后顺序的,故将这些阶段组织成DAG,来表示其先后顺序。
Stage
阶段,是指job中的一个结点。
Taskset
每个阶段将由若干个task组成,这些task统一称为taskset。
Task
Task是指最终在slave结点上运行的工作。
与MR的区别
MR的缺点:
1.Shuffle的性能。Map到reduce之间数据多次需要IO操作。
2.当有多个MR时,每轮的MR之间需要将结果写到hdfs上。
3.只有map,reduce二种计算模型,无法建立一组DAG操作,来减少中间的一些操作开销。
以上的缺点都是spark的优点。
相关知识
Scala
Scala是运行在JVM之上的编程语言。集成了面向对象和函数式语言的特点,代码量比java要少2-3倍。
Akka
是轻量级异步事件处理的消息系统。
Spark源码分析的更多相关文章
- Spark源码分析(三)-TaskScheduler创建
原创文章,转载请注明: 转载自http://www.cnblogs.com/tovin/p/3879151.html 在SparkContext创建过程中会调用createTaskScheduler函 ...
- Spark源码分析环境搭建
原创文章,转载请注明: 转载自http://www.cnblogs.com/tovin/p/3868718.html 本文主要分享一下如何构建Spark源码分析环境.以前主要使用eclipse来阅读源 ...
- Spark源码分析之Spark Shell(下)
继上次的Spark-shell脚本源码分析,还剩下后面半段.由于上次涉及了不少shell的基本内容,因此就把trap和stty放在这篇来讲述. 上篇回顾:Spark源码分析之Spark Shell(上 ...
- Spark源码分析之Spark-submit和Spark-class
有了前面spark-shell的经验,看这两个脚本就容易多啦.前面总结的Spark-shell的分析可以参考: Spark源码分析之Spark Shell(上) Spark源码分析之Spark She ...
- 【转】Spark源码分析之-deploy模块
原文地址:http://jerryshao.me/architecture/2013/04/30/Spark%E6%BA%90%E7%A0%81%E5%88%86%E6%9E%90%E4%B9%8B- ...
- Spark源码分析:多种部署方式之间的区别与联系(转)
原文链接:Spark源码分析:多种部署方式之间的区别与联系(1) 从官方的文档我们可以知道,Spark的部署方式有很多种:local.Standalone.Mesos.YARN.....不同部署方式的 ...
- Spark 源码分析 -- task实际执行过程
Spark源码分析 – SparkContext 中的例子, 只分析到sc.runJob 那么最终是怎么执行的? 通过DAGScheduler切分成Stage, 封装成taskset, 提交给Task ...
- Spark源码分析 – 汇总索引
http://jerryshao.me/categories.html#architecture-ref http://blog.csdn.net/pelick/article/details/172 ...
- Spark源码分析 – Shuffle
参考详细探究Spark的shuffle实现, 写的很清楚, 当前设计的来龙去脉 Hadoop Hadoop的思路是, 在mapper端每次当memory buffer中的数据快满的时候, 先将memo ...
- Spark源码分析 – BlockManager
参考, Spark源码分析之-Storage模块 对于storage, 为何Spark需要storage模块?为了cache RDD Spark的特点就是可以将RDD cache在memory或dis ...
随机推荐
- 转:springboot(二):web综合开发
web开发 spring boot web开发非常的简单,其中包括常用的json输出.filters.property.log等 json 接口开发 在以前的spring 开发的时候需要我们提供jso ...
- c++ 栈(顺序表)
栈可以用顺序表(数组)也可以用链表来储存内容,本文采用顺序表(数组)来保存内部元素.代码如下: 1 #include <iostream> 2 using namespace std; ...
- 创建 python 虚拟环境
conda 创建环境 conda 可以理解为一个工具,也是一个可执行命令,其核心功能是包管理与环境管理.包管理与 pip 的使用类似,环境管理则允许用户方便地安装不同版本的 python 并可以快速切 ...
- React Native踩坑之FlatList组件中的onEndReached
最近在做一个RN项目,有使用到FlatList这样一个RN封装的组件去做上拉加载更多功能,在iOS和Android平台上,总结了以下几个遇到的问题及解决方案 1. 进入页面onReached开始就被触 ...
- 深度学习基础系列(四)| 理解softmax函数
深度学习最终目的表现为解决分类或回归问题.在现实应用中,输出层我们大多采用softmax或sigmoid函数来输出分类概率值,其中二元分类可以应用sigmoid函数. 而在多元分类的问题中,我们默认采 ...
- 用UltraEdit转换大小写
alt+F5转大写: ctrl+F5转小写: F5每个单词的首字母大写: Shift+F5大小写互换.
- Java时间间隔问题在Android中的使用
转载请注明出处:http://www.cnblogs.com/cnwutianhao/p/6606720.html 假设我们在做项目的时候,获取到了一段音频,也知道音频长度,那么我们想对音频做一些处理 ...
- 1016 Phone Bills (25)(25 point(s))
problem A long-distance telephone company charges its customers by the following rules: Making a lon ...
- Ubuntu 16.04 64位 tftp服务器搭建
TFTP(Trivial File Transfer Protocol,简单文件传输协议)是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂.开销不大的文件传输服务 ...
- Qt中使用Json
Qt中使用Json需要一下几个类: QJsonValue 代表了json格式中的一个值 QJsonObject 代表了json格式的一个对象 QJsonArra ...