Spark是什么
官方定义: 定义:*Apache Spark是用于**大规模数据(large-scala data)**处理的**统一(unified)**分析引擎。*
分析引擎(计算引擎): 我们目前接触的引擎有:
- MapReduce 分布式计算引擎
- Spark 分布式
内存
计算引擎
计算引擎: 通用的 可以执行开发人员提供的业务代码的一种框架.
编辑
Spark框架中有一个核心的数据结构: RDD
Pandas中的数据结构是DataFrame
, 多数API都是针对DF对象来进行的.
同样, Spark的数据结构是RDD
对象, 多数API都是针对RDD对象来进行的
RDD对象是一个真正的分布式
对象, Pandas的DataFrame则是一个单机
的对象.
拓展阅读 Hadoop 和 Spark 对比
Hadoop | Spark | |
类型 | 基础平台, 包含计算, 存储, 调度 | 分布式计算工具 |
场景 | 大规模数据集上的批处理 | 迭代计算, 交互式计算, 流计算 |
价格 | 对机器要求低, 便宜 | 对内存有要求, 相对较贵 |
编程范式 | Map+Reduce, API 较为底层, 算法适应性差 | RDD组成DAG有向无环图, API 较为顶层, 方便使用 |
数据存储结构 | MapReduce中间计算结果在HDFS磁盘上, 延迟大 | RDD中间运算结果在内存中 , 延迟小 |
运行方式 | Task以进程方式维护, 任务启动慢 | Task以线程方式维护, 任务启动快 |
Spark四大特点
- 速度贼快: 比MapReduce 快100倍以上( 基于内存计算 )
- 易于使用: API 写起来很简单, 和pandas差不多(比pandas还简单)
- 通用性强: 可用于离线批处理\ SQL处理\ 流计算 \ 机器学习计算\ 图计算
- 离线批处理(Core) SQL处理(SparkSQL)
- 运行方式很多: 可以运行在 YARN \ 可以独立运行(StandAlone) \ 可以运行在云平台上 \ 可以运行在容器集群上 \ 等等等.
Spark框架模块 - 了解
编辑SparkCore
: Spark的核心模块, 一切Spark的功能最底层由它提供SparkSQL
: Spark的结构化数据处理模块, 基于Core- SparkStreaming: Spark的流计算模块 基于Core
- Spark MLib: 机器学习模块. 基于Core
- Spark GraphX: 图计算模块 基于Core
- StructuredStreaming: 结构化
流
, 基于SparkSQL模块