一、Spark概述
Apache Spark 是一个快速的, 多用途的集群计算系统, 相对于 Hadoop MapReduce 将中间结果保存在磁盘中, Spark 使用了内存保存中间结果, 能在数据尚未写入硬盘时在内存中进行运算。Spark 是一个计算框架,可以用来代替Hadoop中的MapReduce计算框架。
二、Spark的作用与核心
由来:Spark 是为了解决 MapReduce 等过去的计算系统无法在内存中保存中间结果的问题,
核心:Spark 的核心是 RDDs, RDDs 不仅是一种计算框架, 也是一个可以容错且并行的数据结构, 它可以让用户显式的将中间结果数据集保存在内中, 并且通过控制数据集的分区来达到数据存放处理最优化。
三、Spark组成
1、spark-core
Spark 最核心的功能是 RDDs(弹性分布式数据集), RDDs 存在于 spark-core
这个包内, 这个包也是 Spark 最核心的包.
2、Spark SQL
(1)Spark SQL 在 spark-core 基础之上带出了一个名为 DataSet 和 DataFrame 的数据抽象化的概念
(2)Spark SQL 提供了在 Dataset 和 DataFrame 之上执行 SQL 的能力
(3)Spark SQL 提供了 DSL, 可以通过 Scala, Java, Python 等语言操作 DataSet 和 DataFrame
(4)它还支持使用 JDBC/ODBC 服务器操作 SQL 语言
3、Spark Streaming
(1)Spark Streaming 充分利用
spark-core
的快速调度能力来运行流分析(2)它截取小批量的数据并可以对之运行 RDD Transformation
(3)它提供了在同一个程序中同时使用流分析和批量分析的能力
4、MLlib
MLlib 是 Spark 上分布式机器学习的框架,可以使用许多常见的机器学习和统计算法, 简化大规模机器学习
5、GraphX
GraphX 是分布式图计算框架, 提供了一组可以表达图计算的 API, GraphX 还对这种抽象化提供了优化运行。
四、Spark的四种运行模式
1、Local
用于本地开发和测试。在这种模式下,Spark 程序将 master
设置为 local
或者 local[n]
,使得所有的代码都在同一个 JVM 中运行。
2、Standalone
这是 Spark 自带的集群管理模式,不依赖外部资源管理器。在这种模式下,一个 Spark 集群由 Master 和 Worker 进程组成,其中 Master 负责资源分配管理,Worker 负责运行 Executor。
3、YARN
在这种模式下,Spark 应用程序运行在 YARN集群上,YARN 负责管理整个集群资源。YARN 模式下又分为两种部署模式:yarn-client
和 yarn-cluster
。yarn-client
中 Driver 运行在本地客户端,而 yarn-cluster
中 Driver 运行在 YARN 集群中。
4、Mesos
在这种模式下,Spark 的资源管理从 Standalone 的 Master 转移到 Mesos Manager 中。Mesos 是一种资源调度管理框架,负责为运行在其上的 Spark 提供服务。