Spark 是一个用来实现快速而通用的集群计算的平台。Spark 只是一个通用计算框架,利用 Spark 实现的应用才是其真正价值所在。
Spark 适用于各种各样原先需要多种不同的分布式平台的场景,包括批处理、 迭代算法、交互式查询、流处理。
Spark 的核心是一个对由很多计算任务组成的、运行在多个工作机器或者是一个计算集群上的应用进行调度、分发以及监控的计算引擎。
Spark 主要有三个优点:
spark组件:
Spark Core
Spark Core 实现了 Spark 的基本功能,包含任务调度、内存管理、错误恢复、与存储系统交互等模块。Spark Core 中还包含了对弹性分布式数据集(resilient distributed dataset,简 称 RDD)的 API 定义。
RDD 表示分布在多个计算节点上可以并行操作的元素集合。
Spark SQL
Spark SQL 是 Spark 用来操作结构化数据的程序包。支持多种数据源,比 如 Hive 表、Parquet 以及 JSON 等。
Spark Streaming
Spark Streaming 是 Spark 提供的对实时数据进行流式计算的组件。
MLlib
Spark 中还包含一个提供常见的机器学习(ML)功能的程序库,叫作 MLlib。
MLlib包括分类、回归、聚类、协同过滤等,还提供了模型评估、数据 导入等额外的支持功能。MLlib 还提供了一些更底层的机器学习原语,包括一个通用的梯 度下降优化算法。
GraphX
GraphX 是用来操作图(比如社交网络的朋友关系图)的程序库,可以进行并行的图计算。
集群管理器
Spark 支持在各种集群管理器(cluster manager)上运行,包括 Hadoop YARN、Apache Mesos,以及 Spark 自带的一个简易调度器,叫作独立调度器。可以高效地在一个计算节点到数千个计算节点之间伸缩算,同时获得最大灵活性。
Spark的存储
Spark 不仅可以将任何 Hadoop 分布式文件系统(HDFS)上的文件读取为分布式数据集, 也可以支持其他支持 Hadoop 接口的系统,比如本地文件、亚马逊 S3、Cassandra、Hive、 HBase 等。