1.1 Spark 是什么
Spark是一个用来实现快速(通用)集群计算平台。扩展了MapReduce计算模型,高效支持更多的计算模型,包含交互式查询和流处理。Spark可以在内存上进行运算,所以速度很快,即使在磁盘中运算,也比MapReduce 快。通过在一个统一法人框架下支持不同的分布式计算,Spark使我们可以简单而低耗地把各种处理流程整合在一起。
1.2 一个大一统的软件栈
Spark的核心是一个对由很多计算任务组成的、运行在多个工作机器或者一个计算集群上的应用进行调度、分发以及监控的计算引擎。
各组件密切结合的设计原理优点:1)软件栈中所有程序库和高级组件都可以从下层的改进中获益;2)运行整个软件栈的代价变小;3)可以无缝整合不同处理模型的应用。
Spark 软件栈1.2.1 Spark Core
Spark Core实现了Spark的基本功能,包含任务调度、内存管理、错误恢复、与存储系统交互等模块。
RDD(弹性分布式数据集)表示分布在多个计算节点上可以并行操作的元素集合。
1.2.2 Spark SQL
SparkSQL是Spark用来操作结构化数据的程序包。SparkSQL还支持开发者将SQL和传统的RDD编程的数据操作方式相结合。
1.2.3 Spark Streaming
Spark Streaming是spark提供对实时数据进行流式计算的组件。Spark Streaming提供用来操作数据流的API,并且与Spark Core中RDD API高度对应。从底层设计来看,Spark Streaming支持与Spark Core同级别的容错性、吞吐量一级可伸缩性。
1.2.4 MLlib
MLlib提供很多种机器学习算法,包括分类、回归、聚类、协同过滤等,还包括模型评估、数据导入等额外的支持功能。
1.2.5 GraphX
专门用来操作图的程序库,可以对图进行并行计算及其他的各种操作。
1.2.6 集群管理器
Spark支持在各种集群管理器上运行,包括Hadoop YARN、Apache Mesos,以及Spark自带的一个简易调度器(独立调度器)
网友评论