0


新手小白快速学会spark!!!!

  1. 什么是spark****?

spark是一种快速、通用、可扩展的大数据分析引擎。

官网地址:Apache Spark™ - Unified Engine for large-scale data analytics

Spark****的发展史

2009年诞生于加州大学伯克利分校AMPLab,

2010年开源,2013年6月成为Apache孵化项目,

2014年2月成为Apache顶级项目

Spark继承了MapReduce分布式计算的优点并改进了MapReduce的明显缺陷。与MapReduce不同的是,Spark的中间输出结果可以保存在内存中,从而大大减少了读写Hadoop分布式文件系统(Hadoop Distributed File System,HDFS)的次数,因此Spark能更好地适用于数据挖掘与机器学习中迭代次数较多的算法

1.1 spark****四大特点

(1)快速

一般情况下,对于迭代次数较多的应用程序,Spark程序在内存中的运行速度是Hadoop MapReduce运行速度的100多倍,在磁盘上的运行速度是Hadoop MapReduce运行速度的10多倍

(2)易于使用

Spark支持使用Scala、Python、Java及R语言快速编写应用。同时Spark提供超过80个高阶算子,使得编写并行应用程序变得容易,并且可以在Scala、Python或R的交互模式下使用Spark。

(3)通用性强

Spark可以与SQL、Streaming及复杂的分析良好结合。Spark还有一系列的高级工具,包括Spark SQL、MLlib(机器学习库)、GraphX(图计算)和Spark Streaming(流计算),并且支持在一个应用中同时使用这些组件

(4) 随处运行

用户可以使用Spark的独立集群模式运行Spark,也可以在EC2(亚马逊弹性计算云)、Hadoop YARN或者Apache Mesos上运行Spark。并且可以从HDFS、Cassandra、HBase、Hive、Tachyon和任何分布式文件系统读取数据

(5)代码简洁

2. Spark****的生态圈

Spark Core:Spark的核心,提供底层框架及核心支持。

BlinkDB:一个用于在海量数据上进行交互式SQL查询的大规模并行查询引擎,允许用户通过权衡数据精度缩短查询响应时间,数据的精度将被控制在允许的误差范围内。

Spark SQL:可以执行SQL查询,支持基本的SQL语法和HiveQL语法,可读取的数据源包括Hive、HDFS、关系数据库(如MySQL)等。

SparkStreaming:可以进行实时数据流式计算

MLBase:是Spark生态圈的一部分,专注于机器学习领域,学习门槛较低。

MLBase由4部分组成:MLlib、MLI、ML Optimizer和MLRuntime

Spark GraphX

图计算的应用在很多情况下处理的数据量都是很庞大的。如果用户需要自行编写相关的图计算算法,并且在集群中应用,难度是非常大的。而使用GraphX即可解决这个问题,因为它内置了许多与图相关的算法,如在移动社交关系分析中可使用图计算相关算法进行处理和分析。

SparkR

AMPLab发布的一个R语言开发包,使得R语言编写的程序不只可以在单机运行,也可以作为Spark的作业运行在集群上,极大地提升了R语言的数据处理能力。

3. Spark****的应用场景

3.1 ** Yahoo**

Yahoo将Spark用在Audience Expansion中。Audience Expansion是广告中寻找目标用户的一种方法,首先广告者提供一些观看了广告并且购买产品的样本客户,据此进行学习,寻找更多可能转化的用户,对他们定向广告。Yahoo采用的算法是Logistic Regression。同时由于某些SQL负载需要更高的服务质量,又加入了专门跑Shark的大内存集群,用于取代商业BI/OLAP工具,承担报表/仪表盘和交互式/即席查询,同时与桌面BI工具对接。

3.2 腾讯广告

广点通是最早使用Spark的应用之一。腾讯大数据精准推荐借助Spark快速迭代的优势,围绕“数据+算法+系统”这套技术方案,实现了在“数据实时采集、算法实时训练、系统实时预测”的全流程实时并行高维算法,最终成功应用于广点通pCTR投放系统上,支持每天上百亿的请求量。

3.3 淘宝

淘宝技术团队使用了Spark来解决多次迭代的机器学习算法、高计算复杂度的算法等,将Spark运用于淘宝的推荐相关算法上,同时还利用GraphX解决了许多生产问题,包括以下计算场景:基于度分布的中枢节点发现、基于最大连通图的社区发现、基于三角形计数的关系衡量、基于随机游走的用户属性传播等。

3.4 优酷土豆

目前Spark已经广泛使用在优酷土豆的视频推荐,广告业务等方面,相比Hadoop,Spark交互查询响应快,性能比Hadoop提高若干倍。一方面,使用Spark模拟广告投放的计算效率高、延迟小(同Hadoop比延迟至少降低一个数量级)。另一方面,优酷土豆的视频推荐往往涉及机器学习及图计算,而使用Spark解决机器学习、图计算等迭代计算能够大大减少网络传输、数据落地等的次数,极大地提高了计算性能。

4. Spark****集群

**4.1 **软件环境

**4.2 **搭建单机版集群

下载Spark安装包到Windows本地。

将Spark安装包上传到Linux的/opt目录下。

将Spark安装包解压到/usr/local目录下。

进入到Spark安装包的bin目录下,使用SparkPi来计算Pi的值,其中参数2是指两个并行度,运行结果如下

**4.3 **搭建单机伪分布式集群

Spark单机伪分布式是在一台机器上既有Master,又有Worker进程。搭建Spark单机伪分布式环境可在Hadoop伪分布式的基础上进行搭建。

搭建Spark单机伪分布式集群的步骤如下。

(1)将Spark安装包解压到/usr/local目录下。

(2)进入到Spark安装包的conf目录下,将spark-env.sh.template复制为spark-env.sh。

(3)打开spark-env.sh文件,在文件末尾添加如下所示的内容。

(4)目录切换到sbin目录下启动集群。

(5)jps查看进程。

(6)使用计算SparkPi来计算Pi的值。

4.4搭建完全分布式集群

集群的拓扑图

4.5 搭建完全分布式集群

搭建Spark完全分布式集群的步骤如下。

(1)将Spark安装包解压至/usr/local目录下。

(2)切换至Spark安装目录的/conf目录下。

(3)配置文件。

(4)在主节点(master节点)中,将配置好的Spark安装目录远程复制至子节点(slave1、slave2节点)的/usr/local目录下。

(5)启动Hadoop集群,并创建/spark-logs目录。

(6)jps查看进程。

(7)切换至Spark安装目录的/sbin目录下,启动Spark集群。

注:Spark监控——http://master:8080

Spark监控——http://master:18080

5. Spark架构

基本组件:

客户端:用户提交作业的客户端。

Driver:运行Application的main()函数并创建SparkContext。

SparkContext:整个应用的上下文,控制应用的生命周期

ClusterManager:资源管理器,即在集群上获取资源的外部服务,目前主要有Standalone(Spark原生的资源管理器)和YARN(Hadoop集群的资源管理器)。

SparkWorker:集群中任何可以运行应用程序的节点,运行一个或多个Executor进程。

Executor:执行器,在Spark Worker上执行任务的组件、用于启动线程池运行任务。每个Application拥有独立的一组Executor。

Task:被发送到某个Executor的具体任务。

6. Spark****作业运行流程

Standalone****模式运行流程

  1. 本地模式:

2) 集群模式 Spark Standalone****:

*3) 集群模式 Spark on Yarn yarn*是一个通用资源管理系统和调度平台)

yarn-client

yarn-cluster

7.Spark核心数据集RDD

RDD(Resilient Distributed Datasets弹性分布式数据集),可以简单的把RDD理解成一个提供了许多操作接口的数据集合,和一般数据集不同的是,其实际数据分布存储于一批机器中(内存或磁盘中)。

                                 ![](https://img-blog.csdnimg.cn/direct/5f546471765a41aaa98f5d58960351be.png)

转换算子和行动算子

Spark RDD转换和操作示例

宽依赖与窄依赖

窄依赖:表现为一个父RDD的分区对应于一个子RDD的分区或者多个父RDD的分区对应于一个子RDD的分区。

宽依赖:表现为存在一个父RDD的一个分区对应一个子RDD的多个分区。

RDD Stage划分

8. MapReduce和Spark的对比

(1)mapreduce基于磁盘,spark基于内存。

(2)部署方式:都可以基于YARN,MapReduce基于YARN实现了MRAppMaster,Spark基于YARN实现了ApplicationMaster。

(3) Spark有灵活的内存管理和策略。

**9. **结构化数据和非结构化数据

结构化数据(Structured Data) :结构化数据是用二维表格的形式进行数据的存储,二维表格由多列组成,每一-列的数据具有严格的同质性,所以每一行数据都具有完全相同的结构。关系数据库中的数据都属于结构化数据。

非结构化数据(Unstructured Data) :非结构化数据是相对于结构化数据而言的,有全文文本、图像、声音、影视、超媒体等形式,并以文件存储,这些数据形式就属于非结构化数据。非结构化数据存储在分布式文件系统中。

park监控——http://master:18080

标签: spark hadoop mapreduce

本文转载自: https://blog.csdn.net/Annalise_/article/details/136471432
版权归原作者 Annalise_ 所有, 如有侵权,请联系我们删除。

“新手小白快速学会spark!!!!”的评论:

还没有评论