一、Spark介绍
1. Spark是一个分布式计算框架,和MapReduce的作用一样,完成数据的计算。
2. 与MapReduce的区别:
(1)spark是基于内存计算,会将中间结果存放在内存,方便后续计算的使用,而MapReduce会将中间结果存储在磁盘上。
- 内存数据的读写速度要比磁盘快得多,所以Spark的计算速度要比MapReduce快;
- Presto也是基于内存计算的,Presto不适合海量数据处理,而且不能创建库表。Spark对海量数据在内存上的计算做了优化,内存不足时会保存在磁盘上。
(2)Spark的计算任务是由线程完成的。MapReduce的计算任务是由进程完成的。
- 线程切换计算任务的速度比进程切换计算任务速度快。
- MapReduce进程计算任务的中间结果传递给reduce进程。
3. Spark和MapReduce的计算思想是一样的,分布式计算框架思想——“分而治之”。
4. Spark是用Scala语言编写完成,MapReduce则是Java语言开发,Scala言的本质是对Java语言的二次开发,底层还是依赖于Java的JVM、修改调整Java语言的缺点等,形成Scala。
5. Spark是Apache基金会下的顶级开源项目,即有专门团队开发、维护该项目。
二、Spark特性
1. 高效性
- 基于内存计算
- 线程完成计算任务执行
2. 易用性
- 支持多种语言开发(Python,Java,Scala,SQL,R),降低了学习难度
- 机器学习方向,最终还是Python
3. 通用性
- 支持多种计算方式
①SQL计算(离线计算)【MapRedudce只支持】
②图计算
③机器学习计算
④流式数据计算(实时仓库中使用)【Spark可以】 - 支持多种开发方式
①交互式开发
②脚本式开发(通过编写代码文件完成程序运行)
4. 兼容性
(1)支持第三方工具接入
- 计算时读写数据时,存储工具有
hdfs
kafka
hbase - 资源调度服务
yarn
stanalone(Spark自带的) - 高可用
zookeeper
(2)支持多种操作系统
- Linux
- Windows
- Mac
三、Spark架构(熟悉)
- 工具层:可以使用哪些工具去操作Spark
- 核心层:PDD执行计算
- 资源调度服务:yarn、standalone、配置文件位置调度方式
- 存储层:数据读写机写入,比如hdfs、hbase、kafka
四、Spark部署方式(熟悉)
1. Local模式部署,即本地模式部署
使用一台服务品进行部署,—股用于测试代码,在本地能运行成功的代码在集群下也能运行
2. Cluster模式部署,即集群模式部署
- 集群需要多台服务器
- 多台服务器的资源需要统一管理,使用资源调度服务
Standalone
Yarn
3. 云服务
使用云服务供应商提供的服务,比如阿里云