Spark及其应用场景初探
最近老大让用Spark
做一个ETL项目,搭建了一套只有三个结点Standalone模式的Spark集群做测试,基础数据量大概8000W左右。看了官方文档,Spark确实在Map-Reduce上提升了很多,可是官方明确提出了在Interactive Data
方面性能提升最大。但是做ETL的数据之间是平行结构,没有任何交互,数据处理完直接就推送走了,也不用做任何缓存,因此完全体现不出来Spark的优势。具体可以用下面这个例子来说,
假设Hadoop集群中有一个文件,每行有一个随机数,我们现在需要计算这些数据的方差 (假设中间过程不会溢出)
方差公式
那么计算过程可以表示为
var file = sc.textFile("hdfs://dataset.txt")
file.persist()
var length = file.count()
var sum = file.reduce((a, b) => a+b)
var sqsum = file.map(line => line * line).reduce( (a,b) => a+b )
var variance = sqsum / length / - sum * sum / length / length
这个过程很简单,但是可以体现出这个交互的过程。file 是一个RDD
,这个例子有且仅有一个RDD。Spark中对RDD的操作有两类Transformation
和Action
,Transformation
是一个延时的过程,只有当具体的Action
应用时,才会对具体的数据做运算。Spark的容错机制也正是根据了Transformation
对RDD进行了Lineage
的推算,即使在某个结点在某种状态下数据丢失,也可以根据记录的Transformations
推算出当前请求的RDD数据集。 扯远了,还是看上面这个例子,
var file = sc.textFile("hdfs://dataset.txt")
这里不会立即去集群读取这个文件,而是会延迟到后面具体的Action
例如count()
时,才会遍历文件。获取所有数据的长度,需要读取一次dataset.txt这个文件,集群中遍历这个文件虽然很快,但是下一次在求和与平方和时,又需要遍历两次次这个文件,那么差别就来了
map - reduce 程序是需要三次IO,集群需要从HDFS上三次获取这个文件进行遍历
Spark 能够将 file 这个RDD缓存在集群的共享内存中,那么在处理时实际上只有一次IO,另外两次遍历直接从内存读取
这个例子很简单,那么我们在做数据挖掘
或者迭代运算
时,这样的交互行为会很多,需要缓存的中间数据集也会有很多,那么在map-reduce过程中,由于没有内存缓存的机制,只有将中间状态缓存到HDFS中,而Spark通过缓存避免了这些IO,效率就提升了。
参考文档
[1] programming-guide
[2] An Architecture for Fast and General Data Processing on Large Clusters
Spark及其应用场景初探的更多相关文章
- Spark job server原理初探
Spark job server是一个基于Spark的服务系统,提供了管理SparkJob,context,jar的RestFul接口. 专注标注原文链接 http://www.cnblogs.com ...
- 使用spark 计算netflow数据初探
spark是一个高性能的并发的计算平台,而netflow是一种一般来说数量级很大的数据.本文记录初步使用spark 计算netflow数据的大致过程. 本文包括以下过程: 1. spark环境的搭建 ...
- Spark应用场景以及与hadoop的比较
一.大数据的四大特征: a.海量的数据规模(volume) b.快速的数据流转和动态的数据体系(velocity) c.多样的数据类型(variety) d.巨大的数据价值(value) 二.Spar ...
- 【转载】Spark性能优化指南——高级篇
前言 数据倾斜调优 调优概述 数据倾斜发生时的现象 数据倾斜发生的原理 如何定位导致数据倾斜的代码 查看导致数据倾斜的key的数据分布情况 数据倾斜的解决方案 解决方案一:使用Hive ETL预处理数 ...
- Spark入门实战系列--1.Spark及其生态圈简介
[注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 .简介 1.1 Spark简介 年6月进入Apache成为孵化项目,8个月后成为Apache ...
- Spark:一个高效的分布式计算系统
概述 什么是Spark ◆ Spark是UC Berkeley AMP lab所开源的类Hadoop MapReduce的通用的并行计算框架,Spark基于map reduce算法实现的分布式计算,拥 ...
- 大数据计算平台Spark内核解读
1.Spark介绍 Spark是起源于美国加州大学伯克利分校AMPLab的大数据计算平台,在2010年开源,目前是Apache软件基金会的顶级项目.随着 Spark在大数据计算领域的暂露头角,越来越多 ...
- 【转】【技术博客】Spark性能优化指南——高级篇
http://mp.weixin.qq.com/s?__biz=MjM5NjQ5MTI5OA==&mid=2651745207&idx=1&sn=3d70d59cede236e ...
- Hadoop和Spark的异同
谈到大数据,相信大家对Hadoop和Apache Spark这两个名字并不陌生.但我们往往对它们的理解只是提留在字面上,并没有对它们进行深入的思考,下面不妨跟我一块看下它们究竟有什么异同. 解决问题的 ...
随机推荐
- JavaScript —— 局部变量和全局变量
JS的全局变量有3种声明方式: 1.Function 外 var v_myVar; 2.Function 内 v_myVar; 3.window.v_myVar window.v_myVar 全局变量 ...
- Asp.net MVC 3实例学习之ExtShop(四)——完成产品列表页
在完成产品列表页前要做一些准备功夫.首先是去下载MvcPager用了为产品列表分页.下载的可能是基于MVC 2的,没关系,可以用在MVC 3上.如果有担心,下载源代码重新编译一次好了.下载后将DLL添 ...
- cocos2d-x 获取图片的某像素点的RGBA颜色 -转
cocos2d-x 获取图片的某像素点的RGBA颜色 原文:http://www.cnblogs.com/jaoye/archive/2013/02/19/2916501.html 没做过 太多的图 ...
- 生成并返回 json 结果文件
#region 生成并返回 json 结果文件 /// <summary> /// 生成并返回 json 结果文件 /// </summary> /// <param n ...
- spring、springmvc、mybatis整合笔记
这段时间上一个项目刚做完,下一个项目还没开始,趁这个时候来认真总结一下上个项目使用的ssm开发框架.由于,项目中关于使用ssm这部分的代码和配置是我们项目的整体架构师一个独立完成的,我们只负责业务部分 ...
- c#Winform程序,让pictureBox显示图像(包含GIF),并且不被占用,能即时删除图片。
最近在做一个图片浏览的工具, 需要在PictureBox中显示图像文件, 包括gif播放. 且不能被程序独占, 就算winform的程序正在显示这张图, 也能在资源管理器里delete它. 看了看网 ...
- 流程引擎的API和服务基础
RepositoryService : 管理和控制 发布包 和 流程定义(包含了一个流程每个环节的结构和行为) 的操作 除此之外,服务可以 查询引擎中的发布包和流程定义. 暂停或激活发布包,对应全部 ...
- HDU 4608 I-number 2013 Multi-University Training Contest 1
定义一个数 y 为 x 的 I-number.对于 y 有如下要求: 1.y > x; 2.y 的每一位之和要为10的倍数(例如 28 每一位之和为 10 ,为 10 的 1 倍); 3.这样的 ...
- mysql添加索引
1.添加PRIMARY KEY(主键索引) mysql>ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` ) 2.添加UNIQUE(唯一索 ...
- 【转】linux驱动程序中的并发控制
原文网址:http://www.cnblogs.com/geneil/archive/2011/12/03/2274684.html 现代操作系统有三大特性:中断处理.多任务处理和多处理器.这些特性导 ...