Spark之初学-01

Spark简介

Spark是起源于美国加州大学伯克利分校AMPLab的大数据计算平台,在2010年开源,目前是Apache软件基金会的较高级项目。随着Spark在大数据计算领域展露头角,也获取了越来越多的关注。2014年11月,Spark在Daytoya Gray Sort100TB Benchmark竞赛中打破了由Hadoop MapReduce保持的排序记录,Spark利用1/10的节点数,把100TB数据的排序时间从72分钟提高到了23分钟。

Spark拥有Hadoop MapReduce所具有的优点,但不同于MapReduce的是job中间输出结果是可以保存在内存中的,从而不再需要读写hdfs,很大程度上提高了计算速度,因此Spark能够更好的适用于数据挖掘与机器学习等需要迭代的MapReduce的算法。

Spark-RDD介绍

Hadoop MapReduce 在很多应用场景中速度非常慢,只适合离线的计算任务,这是由于MapReduce需要将任务划分为map和reduce两个阶段,map阶段产生的中间结果要写回磁盘,而在这两个阶段之间需要进行shuffle操作。Shuffle操作需要从网络中的各个节点进行数据拷贝,这个过程是比较耗时的,这也是Hadoop MR速度慢的根本原因之一,大量的时间耗费在网络磁盘IO中而不是用于计算。

弹性分布式数据集RDD

说到Spark,不得不提到RDD这个概念,话说到底什么是RDD呢?本人在认真研究之前也是一头雾水,只知道RDD是一个抽象的逻辑概念,但是到底为什么要抽象出这个概念?作用又是什么呢?

RDD是Spark中对数据和计算的抽象,也是Spark的基本计算单元,主要有Transformation和Action操作。有人对RDD是这么解释的,本人觉得有几分道理,便借来一用,方便理解,RDD就像一条抽象的船,船上装着所有的数据,就相当于船上的货物。对RDD的操作,就是处理船上的数据,也就是对船上的货物进行整理。结合RDD的两种生成方式来理解:

  • 一是从数据源读入到RDD,即为从码头将数据装到船上
  • 二是从现有的RDD通过transformation操作转换得到新的RDD,也就是将船A上的货物整理之后转运到船B上

最终通过调用RDD的Action操作输出结构,也就是将货物从船上搬运到对岸的码头。

Spark核心组件

Spark框架集成了多个组件,位于底层的事Spark Core,其实现了Spark的作业调度,内存管理,容错,与存储系统交互等基本功能,并针对弹性分布式数据几提供了丰富的操作。在Spark Core的基础上,Spark提供了一系列面向不同应用需求的组件,主要有Spark SQL,Spark Streaming,MLlib,GraphX,如下图所示:
在这里插入图片描述
1、Spark SQL
Spark SQL 是Spark用来操作结构化数据的组件。通过Spark SQL,用户可以使用SQL或者Hive 版本的SQL来查询数据。Spark SQL 支持多种数据源类型,例如Hive表,Json等。其不仅为Spark提供了一个SQL接口,还支持开发者将SQL语句融入到Spark应用程序开发过程中,无论是用Python,Java还是Scala,用户可以在单个应用中同时进行SQL查询和复杂的数据分析。
2、Spark Streaming
Spark Streaming是Spark平台上针对实时数据进行流式计算的组件,提供了丰富的处理数据流的API,由于这些API与Spark Core中的基本操作相对应,因此开发者在熟知Spark核心概念与编程方法之后,编写Spark Streaming应用程序会更加得心应手。从底层设计来看,Spark Streaming支持与Spark Core同级别的容错性、吞吐量以及伸缩性。
3、MLlib
MLlib是Spark提供的一个机器学习算法库,其中包含了多种经典、常见的机器学习算法,主要有回归、分类、聚类、协同过滤等。MLlib不仅提供了模型评估,数据导入等额外的功能,还提供了一些更底层的机器学习语言,包括一个通用的梯度下降优化基础算法。
4、GraphX
GraphX是Spark面向图计算提供的框架和算法库,GraphX中提出了弹性分布式属性图的概念,并在此基础上实现了图视图与表视图的有机结合与统一,同时,针对图数据处理提供了丰富的的操作,例如子图操作subgraph,顶点属性操作mapVertices,边属性操作mapEdges等。

参考:
http://blog.csdn.net/zx8167107/article/details/78791461
http://www.dataguru.cn/article-6585-1.html
https://www.zhihu.com/question/35423604
https://blog.csdn.net/sunnyyoona/article/details/79567225
https://blog.csdn.net/mys_35088/article/details/81020542

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值