- Spark是一个用来实现快速而通用 的集群计算的平台
- Spark本身是由Scala写的,运行在JVM上的。
- 扩展了MapReduce
- 三个优点
- 好用:由于高级API剥离了对集群本身的关注,可以专注于计算本身。
- 很快:支持交互式查询和流处理等复杂算法
- 通用引擎:可完成各种运算(SQL/文本处理/机器学习…)
- 主要特点:能在内存中进行计算,因而更快
- 核心:对【由很多计算任务组成的、运行在多个工作机器或者是一个计算集群(Computer Cluster) 上的应用】进行调度
- Spark软件栈
Spark Core
- 基本Spark功能,包含任务调度、内存管理、错误恢复与储存系统交互等模块。
- 包含了对弹性分布式数据集(Resilient Distributed Dataset,RDD)的API定义。
- RDD表示分布在多个计算节点上,可以并行操作的元素集合。是Spark主要的编程抽象
Spark SQL
- 用来操作结构化数据的程序包
- 可使用语言:SQL、Apache Hive(HQL)
- 支持数据源:Hive、Parquet、JSON等
Spark Streaming
- 对实时流计算的组件
MLib
- 提供常见的机器学习功能的程序库
- 提供分类、回归、聚类、协同过滤等,模型评估、数据导入等功能
GraphX
- 用来操作图(比如社交网络的朋友关系图)的程序库,可以进行并行的图计算。
集群管理器
- 为了实现“可以高效地在一个计算节点到数千个计算节点之间伸缩计算”,同时获得最大的灵活性,Spark支持在各种集群管理器(Cluster Manager)上运行。
- 包括Hadoop YARN、Apache Mesos、以及Spark自带的一个简易调度器(独立调度器)