0


五分钟带你了解spark | 从入门到入土

一.什么是spark

spark是一种基于内存的快速、通用、可扩展的大数据分析计算引擎。

二.spark的特点

1.速度快

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

2.易于使用

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

3.通用性

4.兼容性强

5.代码简洁

三.spark,hadoop,mapreduce的对比

1.spark处理数据时,可以将中间处理结果数据存储到内存中。

2.Spark Job调度以DAG方式,并且每个任务Task执行以线程方式,并不是像MapReduce以进程方式执行。

3.spark框架和生态更为复杂,很多时候spark作业都需要根据不同业务场景的需要进行调优已达到性能要求;mapreduce框架及其生态相对较为简单,对性能的要求也相对较弱,但是运行较为稳定,适合长期后台运行。

4.spark更加通用,spark提供了transformation和action这两大类的多个功能API,另外还有流式处理sparkstreaming模块、图计算GraphX等;mapreduce只提供了map和reduce两种操作,流计算以及其他模块的支持比较缺乏,计算框架(API)比较局限。

总结:

Spark与MapReduce是一种相互共生的关系。Hadoop提供了Spark所没有的功能特性,比如分布式文件系统,而Spark 为需要它的那些数据集提供了实时内存处理。完美的大数据场景正是设计人员当初预想的那样:让Hadoop和Spark在同一个团队里面协同运行。

四.结构化数据和非结构化数据对比

结构化数据是能够用数据或统一的结构加以表示的信息,如数字、符号。

非结构化数据本质上是结构化数据之外的一切数据。它不符合任何预定义的模型,因此它存储在非关系数据库中,并使用NoSQL进行查询。它可能是文本的或非文本的,也可能是人为的或机器生成的。

并且非结构化数据要比结构化数据多得多。非结构化数据占企业数据的80%以上,并且以每年55%~65%的速度增长。

五.spark集群的三种部署模式

1.local本地模式(单机)

在本地部署单个Spark服务,比较适合简单了解spark目录结构,熟悉配置文件,简单跑一下demo示例等调试场景。

2.standalone模式

Spark自带的任务调度模式,多个spark机器之间内部协作调度,但仅是spark自身的任务调度。

Standalone****模式运行流程

3.yarn模式

Spark使用Hadoop的YARN组件进行资源与任务调度,真正意义上spark与外部对接协作。

六.认识spark生态圈

1.Spark Core

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

2.BlinkDB

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

3.Spark SQL

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

4.SparkStreaming

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

5.MLBase

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

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

MLlib部分算法如下。

6.Spark GraphX

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

7.SparkR

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

七.了解Spark核心数据集RDD

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

Spark RDD转换和操作示例

宽依赖与窄依赖

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

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


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

“五分钟带你了解spark | 从入门到入土”的评论:

还没有评论