Spark基础【博学谷学习记录】
- Spark的基本介绍
1.1 什么是Spark
定义: Spark是一款用于大规模数据处理分布式的分析引擎
对于市场来说, 虽然说离线计算对实时性要求一般不是特别高,但是依然希望能够计算的越快越好,所以在这样的背景下, 迫切需要一款能够支持大规模的分布式计算的引擎,同时能够有非常高效的迭代计算性能
Spark其实就是在这样的背景下, 逐步产生了出来
Spark最早是来源于加州伯克利分校一帮博士以及教授共同发布的一篇论文而产生的, 论文: 弹性分布式数据集
RDD: Spark的核心, 也是后续讲解Spark Core中最核心的数据结构, 目前可以先理解为就是一个庞大的容器, 整个迭代计算操作, 都是基于这个容器来进行, 整个计算可以基于内存来进行迭代
RDD出现, 提供了更加高效的计算平台, 同时也提供了更加高阶的API
Spark的开发语言: Scala
官方网站: https://www.spark.apache.org apache旗下的顶级开源项目
1.2 Spark的特点
1- 运行速度快
原因一: 提供了一个全新的数据结构 RDD(弹性的分布式数据集)
整个计算操作, 基于内存计算, 当内存不足的时候, 可以放置到磁盘上
原因二: 整个Spark是基于线程来运行的, 线程的启动和销毁是优于进程
2- 易用性
原因一: Spark提供了多种操作语言的API, Python SQL scala Java R
原因二: Spark提供非常多的高阶API, 而且这些API在不同的语言中操作基本都是类似的, 大大降低了程序员学习成本
3- 通用性
Spark是由多个组件组成的, 主要有 Spark Core, Spark SQL, Spark Streaming, Spark MLib, Spark GraphX
Spark Core: Spark的核心, 学习Spark的基础,学习Spark Core主要学习RDD 重点学习内容(基础)
主要维护RDD数据结构
提供RDD各种API
提供了与内存相关的API
Spark SQL: 通过SQL的方式来操作Spark 重点学习部分(应用)
Spark Streaming:Spark用于进行流式计算(实时计算)的组件 暂不学习
在国内, 整个实时部分, 主要是应用在Flink, 而非Spark Streaming ,因为Spark的流并不是真正意义上流式计算, 为微批处理
Spark MLib: Spark用于进行机器学习的库 专门针对特定人群
Spark GraphX: Spark用于进行图计算的库 专门针对特定人群
4- 随处运行
原因一: 编写好的Spark程序, 可以被提交到多个不同的资源平台上运行: Local Spark集群(standlone),Yarn平台, 以及其他支持Spark运行的平台...
原因二: Spark框架可以和多种软件进行集成, 集成后, 可以非常方便的对接不同软件进行数据处理