Spark简介

This commit is contained in:
罗祥 2019-06-04 11:03:40 +08:00
parent 97b5cc6886
commit 34819a50ce

View File

@ -14,15 +14,15 @@
## 一、简介 ## 一、简介
Spark于2009年诞生于加州大学伯克利分校AMPLab。2013年该项目被捐赠给Apache软件基金会。2014年2月成为Apache的顶级项目。相对于MapReduce上的批处理计算Spark可以带来上百倍的性能提升因此它成为继MapReduce之后最为广泛使用的计算框架。 Spark于2009年诞生于加州大学伯克利分校AMPLab2013年被捐赠给Apache软件基金会。2014年2月成为Apache的顶级项目。相对于MapReduce的批处理计算Spark可以带来上百倍的性能提升因此它成为继MapReduce之后最为广泛使用的分布式计算框架。
## 二、特点 ## 二、特点
+ Apache Spark使用先进的DAG调度程序查询优化器和物理执行引擎以实现性能上的保证 + Apache Spark使用先进的DAG调度程序查询优化器和物理执行引擎以实现性能上的保证
+ 多语言支持,如JavaScalaPythonR语言; + 多语言支持,目前支持的有JavaScalaPython和R
+ Spark提供80多个高级API可以轻松构建并行应用程序; + 提供80多个高级API可以轻松构建应用程序;
+ 支持批处理,流处理和复杂的分析; + 支持批处理,流处理和复杂的业务分析;
+ 丰富的类库支持包括SQLDataFramesMLlibGraphX和Spark Streaming等库。并且可以在同一个应用程序中无缝地进行组合; + 丰富的类库支持包括SQLMLlibGraphX和Spark Streaming等库并且可以将它们无缝地进行组合;
+ 丰富的部署模式支持本地模式和自带的集群模式也支持在HadoopMesosKubernetes上运行 + 丰富的部署模式支持本地模式和自带的集群模式也支持在HadoopMesosKubernetes上运行
+ 多数据源支持支持访问HDFSAlluxioCassandraHBaseHive以及数百个其他数据源中的数据。 + 多数据源支持支持访问HDFSAlluxioCassandraHBaseHive以及数百个其他数据源中的数据。
@ -43,7 +43,7 @@ Spark于2009年诞生于加州大学伯克利分校AMPLab。2013年该项目
**执行过程** **执行过程**
1. 用户程序创建SparkContext后其会连接到集群资源管理器,集群资源管理器会为计算程序分配计算资源并启动Executor 1. 用户程序创建SparkContext后它会连接到集群资源管理器,集群资源管理器会为用户程序分配计算资源并启动Executor
2. Dirver将计算程序划分为不同的执行阶段和多个Task之后将Task发送给Executor 2. Dirver将计算程序划分为不同的执行阶段和多个Task之后将Task发送给Executor
3. Executor负责执行Task并将执行状态汇报给Driver同时也会将当前节点资源的使用情况汇报给集群资源管理器。 3. Executor负责执行Task并将执行状态汇报给Driver同时也会将当前节点资源的使用情况汇报给集群资源管理器。
@ -59,7 +59,7 @@ Spark SQL主要用于结构化数据的处理。其具有以下特点
- 能够将SQL查询与Spark程序无缝混合允许您使用SQL或DataFrame API对结构化数据进行查询 - 能够将SQL查询与Spark程序无缝混合允许您使用SQL或DataFrame API对结构化数据进行查询
- 支持多种数据源包括HiveAvroParquetORCJSON和JDBC - 支持多种数据源包括HiveAvroParquetORCJSON和JDBC
- 支持HiveQL语法以及Hive SerDes和UDF允许你访问现有的Hive仓库 - 支持HiveQL语法以及用户自定义函数(UDF)允许你访问现有的Hive仓库
- 支持标准的JDBC和ODBC连接 - 支持标准的JDBC和ODBC连接
- 支持优化器,列式存储和代码生成等特性,以提高查询效率。 - 支持优化器,列式存储和代码生成等特性,以提高查询效率。
@ -69,7 +69,7 @@ Spark Streaming主要用于快速构建可扩展高吞吐量高容错的
<div align="center"> <img width="600px" src="https://github.com/heibaiying/BigData-Notes/blob/master/pictures/spark-streaming-arch.png"/> </div> <div align="center"> <img width="600px" src="https://github.com/heibaiying/BigData-Notes/blob/master/pictures/spark-streaming-arch.png"/> </div>
Spark Streaming的本质是微批处理它将数据流进行极小粒度的拆分拆分为多个批处理使得其能够得到接近于流处理的效果。 Spark Streaming的本质是微批处理它将数据流进行极小粒度的拆分拆分为多个批处理从而达到接近于流处理的效果。
<div align="center"> <img width="600px" src="https://github.com/heibaiying/BigData-Notes/blob/master/pictures/spark-streaming-flow.png"/> </div> <div align="center"> <img width="600px" src="https://github.com/heibaiying/BigData-Notes/blob/master/pictures/spark-streaming-flow.png"/> </div>
@ -87,6 +87,6 @@ MLlib是Spark的机器学习库。其设计目标是使得机器学习变得简
### 3.4 Graphx ### 3.4 Graphx
GraphX是Spark中用于图形计算和图形并行计算的新组件。在高层次上GraphX通过引入一个新的图形抽象来扩展 RDD一种具有附加到每个顶点和边缘的属性的定向多重图形。为了支持图计算GraphX提供了一组基本运算符 subgraphjoinVertices 和 aggregateMessages以及优化后的Pregel API。此外GraphX 还包括越来越多的图形算法和构建器,以简化图形分析任务。 GraphX是Spark中用于图形计算和图形并行计算的新组件。在高层次上GraphX通过引入一个新的图形抽象来扩展 RDD(一种具有附加到每个顶点和边缘的属性的定向多重图形)。为了支持图计算GraphX提供了一组基本运算符 subgraphjoinVertices 和 aggregateMessages以及优化后的Pregel API。此外GraphX还包括越来越多的图形算法和构建器以简化图形分析任务。
## ##