Spark Core
- Spark Core 实现了Spark 的基本功能,包含任务调度、内存管理、错误恢复、与存储系统交互等模块。
- Spark Core 中还包含了
- 对弹性分布式数据集(resilient distributed dataset,简称RDD)的API 定义。
- RDD 表示分布在多个计算节点上可以并行操作的元素集合,
- 是Spark 主要的编程抽象。
- Spark Core 提供了创建和操作这些集合的多个API。
- 对弹性分布式数据集(resilient distributed dataset,简称RDD)的API 定义。
Spark SQL
- Spark SQL 是Spark 用来操作结构化数据的程序包。
- 使用SQL或者Apache Hive 版本的SQL 方言(HQL)来查询数据。
- Spark SQL 支持多种数据源,比如Hive 表、Parquet 以及JSON 等。
- 除了为Spark 提供了一个SQL 接口,
- Spark SQL 还支持开发者将SQL 和传统的RDD 编程的数据操作方式相结合,
- 不论是使用Python、Java 还是Scala,
- 开发者都可以在单个的应用中同时使用SQL 和复杂的数据分析。
- 通过与Spark所提供的丰富的计算环境进行如此紧密的结合,
- Spark SQL 得以从其他开源数据仓库工具中脱颖而出。
- Spark SQL 是在Spark 1.0 中被引入的。
- Spark SQL 还支持开发者将SQL 和传统的RDD 编程的数据操作方式相结合,
Spark Streaming
- Spark Streaming 是Spark 提供的对实时数据进行流式计算的组件。
- 比如生产环境中的网页服务器日志,
- 或是网络服务中用户提交的状态更新组成的消息队列,都是数据流。
- SparkStreaming 提供了用来操作数据流的API,
- 并且与Spark Core 中的RDD API 高度对应。
- 这样一来,程序员编写应用时的学习门槛就得以降低,
- 不论是操作内存或硬盘中的数据,
- 还是操作实时数据流,
- 程序员都更能应对自如。
- 从底层设计来看,Spark Streaming 支持与Spark Core 同级别的容错性、吞吐量以及可伸缩性。
MLlib
- Spark 中还包含一个提供常见的机器学习(ML)功能的程序库,叫作MLlib。
- MLlib 提供了很多种机器学习算法,
- 包括分类、回归、聚类、协同过滤等,
- 还提供了模型评估、数据导入等额外的支持功能。
- MLlib 还提供了一些更底层的机器学习原语,
- 包括一个通用的梯度下降优化算法。
- 所有这些方法都被设计为可以在集群上轻松伸缩的架构。
GraphX
- GraphX 是用来操作图(比如社交网络的朋友关系图)的程序库,
- 可以进行并行的图计算。
- 与Spark Streaming 和Spark SQL 类似,
- GraphX 也扩展了Spark 的RDD API,
- 能用来创建一个顶点和边都包含任意属性的有向图。
- GraphX 还支持针对图的各种操作
- (比如进行图分割的subgraph 和操作所有顶点的mapVertices),
- 以及一些常用图算法(比如PageRank和三角计数)。
集群管理器
- 就底层而言,Spark 设计为可以高效地在一个计算节点到数千个计算节点之间伸缩计算。
- 为了实现这样的要求,同时获得最大灵活性,
- Spark 支持在各种集群管理器(clustermanager)上运行,
- 包括Hadoop YARN、Apache Mesos,以及Spark 自带的一个简易调度器,叫作独立调度器。
- Spark 支持在各种集群管理器(clustermanager)上运行,
- 如果要在没有预装任何集群管理器的机器上安装Spark,
- 那么Spark自带的独立调度器可以让你轻松入门;
- 而如果已经有了一个装有Hadoop YARN 或Mesos的集群,
- 通过Spark 对这些集群管理器的支持,
- 你的应用也同样能运行在这些集群上。
来源:oschina
链接:https://my.oschina.net/u/3847203/blog/2993442