SparkBase
1. spark的基本介绍
1.1 spark的基本介绍
- MapReduce: 分布式计算引擎
MR 分布式计算引擎, 可以用来处理大规模数据, 主要是用于批处理, 用于离线处理
MR存在弊端:
1- 执行效率比较低
2- API相对比较低级, 开发效率慢
3- 执行迭代计算不方便
也正因为MR存在这样的一些弊端 在一些场景中, 希望能够有一款执行效率更加高效, 能够更好支持迭代计算, 同时还能够处理大规模数据的一款新的软件, 而spark就是在这样的背景下产生了
Apache spark 是一款用于处理大规模数据的分布式计算引擎, 基于内存计算, 整个spark的核心数据结构: RDD
RDD: 弹性的分布式数据集
Spark 最早期是来源于 加州大学伯克莱分析一帮博士发布的论文,而产生的, 后期贡献给了apache 称为apache的顶级项目: http://spark.apache.org
Spark采用Scala语言编写的
为什么Spark的执行速度快:
原因一: spark 提供了一个全新的数据结构: RDD
通过这个数据结构, 让分布式执行引擎能够在内存中进行计算, 同时能够更好的进行迭代计算操作
对于MR来说, 主要是基于磁盘来计算, 而且迭代计算的时候, 需要将多个MR程序串联, 执行效率低
原因二: Spark是基于线程运行的, MR是基于进程运行的
线程的启动和销毁的速度, 要远远高于进程的启动和销毁
1.2 spark的发展史
关注:
spark是一个分布式计算引擎, pyspark是一个python的库 专门用于操作spark的库
1.3 spark的特点
- 1- 运行速度快
方面一: 基于内存计算的 采用DAG 有向无环图 进行计算操作 中间的结果是保存在内存中
方面二: spark是基于线程来运行的, 线程的启动和销毁要高于进程
- 2- 易用性
方面一: spark提供多种语言的客户端, 可以基于多种语言来运行spark: 比如 python SQL scala java R ...
方面二: spark提供了更加高阶的API, 而且这些API在不同的语言上, 基本上都是一样的, 大大的降低了程序员学习成本
- 3- 通用型强
spark提供了多种工具库, 用于满足各种计算的场景
spark core: spark的核心库, 次重点, 它是学习的基础
主要是用于放置spark的核心API, 内存管理API,包括维护RDD的数据结构
spark SQL: 通过SQL操作spark计算框架 最为重要的
spark streaming: spark的流式处理, 主要是用于支持流式计算(实时计算) (目前不使用, 整个实时主要是基于flink来完成的)
spark MLlib: spark的机器学习库, 主要包括相关算法: 回归 聚类 .... (针对于特点人群)
spark graphX: spark的图计算库 比如导航行程规划 (针对于特点人群)
- 4- 随处运行:
方面一: 编写的spark程序可以运行在不同的资源调度平台: local yarn平台 spark集群 , 云上的调度平台
方面二: spark程序可以和大数据生态圈中各种软件进行集成, 让我们更加方便使用spark对接各个软件
2. spark环境安装
2.1 local模式搭建
local 模式主要是用于本地代码测试操作
本质上就是一个单进程程序, 在一