优化阅读格式

This commit is contained in:
heibaiying
2019-07-31 17:18:07 +08:00
parent ceb868fe13
commit ca7c99802b
91 changed files with 4059 additions and 4058 deletions

View File

@ -1,94 +1,94 @@
# Spark简介
<nav>
<a href="#一简介">一、简介</a><br/>
<a href="#二特点">二、特点</a><br/>
<a href="#三集群架构">三、集群架构</a><br/>
<a href="#四核心组件">四、核心组件</a><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#31-Spark--SQL">3.1 Spark SQL</a><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#32-Spark-Streaming">3.2 Spark Streaming</a><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#33-MLlib">3.3 MLlib</a><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#34-Graphx">3.4 Graphx</a><br/>
<a href="#"> </a><br/>
</nav>
## 一、简介
Spark2009年诞生于加州大学伯克利分校AMPLab2013年被捐赠给Apache软件基金会2014年2月成为Apache的顶级项目。相对于MapReduce的批处理计算Spark可以带来上百倍的性能提升因此它成为继MapReduce之后最为广泛使用的分布式计算框架。
## 二、特点
Apache Spark具有以下特点
+ 使用先进的DAG调度程序查询优化器和物理执行引擎以实现性能上的保证
+ 多语言支持目前支持的有JavaScalaPythonR
+ 提供了80多个高级API可以轻松地构建应用程序
+ 支持批处理,流处理和复杂的业务分析;
+ 丰富的类库支持包括SQLMLlibGraphXSpark Streaming等库并且可以将它们无缝地进行组合
+ 丰富的部署模式支持本地模式和自带的集群模式也支持在HadoopMesosKubernetes上运行
+ 多数据源支持支持访问HDFSAlluxioCassandraHBaseHive以及数百个其他数据源中的数据。
<div align="center"> <img width="600px" src="https://github.com/heibaiying/BigData-Notes/blob/master/pictures/future-of-spark.png"/> </div>
## 三、集群架构
| Term术语 | Meaning含义 |
| --------------- | ------------------------------------------------------------ |
| Application | Spark应用程序由集群上的一个Driver节点和多个Executor节点组成。 |
| Driver program | 主运用程序,该进程运行应用的 main() 方法并且创建 SparkContext |
| Cluster manager | 集群资源管理器例如Standlone ManagerMesosYARN |
| Worker node | 执行计算任务的工作节点 |
| Executor | 位于工作节点上的应用进程,负责执行计算任务并且将输出数据保存到内存或者磁盘中 |
| Task | 被发送到Executor中的工作单元 |
<div align="center"> <img src="https://github.com/heibaiying/BigData-Notes/blob/master/pictures/spark-集群模式.png"/> </div>
**执行过程**
1. 用户程序创建SparkContext后它会连接到集群资源管理器集群资源管理器会为用户程序分配计算资源并启动Executor
2. Dirver将计算程序划分为不同的执行阶段和多个Task之后将Task发送给Executor
3. Executor负责执行Task并将执行状态汇报给Driver同时也会将当前节点资源的使用情况汇报给集群资源管理器。
## 四、核心组件
Spark基于Spark Core扩展了四个核心组件分别用于满足不同领域的计算需求。
<div align="center"> <img width="600px" src="https://github.com/heibaiying/BigData-Notes/blob/master/pictures/spark-stack.png"/> </div>
### 3.1 Spark SQL
Spark SQL主要用于结构化数据的处理。其具有以下特点
- 能够将SQL查询与Spark程序无缝混合允许您使用SQLDataFrame API对结构化数据进行查询
- 支持多种数据源包括HiveAvroParquetORCJSONJDBC
- 支持HiveQL语法以及用户自定义函数(UDF)允许你访问现有的Hive仓库
- 支持标准的JDBCODBC连接
- 支持优化器,列式存储和代码生成等特性,以提高查询效率。
### 3.2 Spark Streaming
Spark Streaming主要用于快速构建可扩展高吞吐量高容错的流处理程序。支持从HDFSFlumeKafkaTwitterZeroMQ读取数据并进行处理。
<div align="center"> <img width="600px" src="https://github.com/heibaiying/BigData-Notes/blob/master/pictures/spark-streaming-arch.png"/> </div>
Spark Streaming的本质是微批处理它将数据流进行极小粒度的拆分拆分为多个批处理从而达到接近于流处理的效果。
<div align="center"> <img width="600px" src="https://github.com/heibaiying/BigData-Notes/blob/master/pictures/spark-streaming-flow.png"/> </div>
### 3.3 MLlib
MLlibSpark的机器学习库。其设计目标是使得机器学习变得简单且可扩展。它提供了以下工具
+ **常见的机器学习算法**:如分类,回归,聚类和协同过滤;
+ **特征化**:特征提取,转换,降维和选择;
+ **管道**用于构建评估和调整ML管道的工具
+ **持久性**:保存和加载算法,模型,管道数据;
+ **实用工具**:线性代数,统计,数据处理等。
### 3.4 Graphx
GraphXSpark中用于图形计算和图形并行计算的新组件。在高层次上GraphX通过引入一个新的图形抽象来扩展 RDD(一种具有附加到每个顶点和边缘的属性的定向多重图形)。为了支持图计算GraphX提供了一组基本运算符 subgraphjoinVertices 和 aggregateMessages以及优化后的Pregel API。此外GraphX还包括越来越多的图形算法和构建器以简化图形分析任务。
##
# Spark简介
<nav>
<a href="#一简介">一、简介</a><br/>
<a href="#二特点">二、特点</a><br/>
<a href="#三集群架构">三、集群架构</a><br/>
<a href="#四核心组件">四、核心组件</a><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#31-Spark--SQL">3.1 Spark SQL</a><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#32-Spark-Streaming">3.2 Spark Streaming</a><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#33-MLlib">3.3 MLlib</a><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#34-Graphx">3.4 Graphx</a><br/>
<a href="#"> </a><br/>
</nav>
## 一、简介
Spark2009 年诞生于加州大学伯克利分校 AMPLab2013 年被捐赠给 Apache 软件基金会2014 年 2 月成为 Apache 的顶级项目。相对于 MapReduce 的批处理计算Spark 可以带来上百倍的性能提升,因此它成为继 MapReduce 之后,最为广泛使用的分布式计算框架。
## 二、特点
Apache Spark 具有以下特点:
+ 使用先进的 DAG 调度程序,查询优化器和物理执行引擎,以实现性能上的保证;
+ 多语言支持,目前支持的有 JavaScalaPythonR
+ 提供了 80 多个高级 API可以轻松地构建应用程序
+ 支持批处理,流处理和复杂的业务分析;
+ 丰富的类库支持:包括 SQLMLlibGraphXSpark Streaming 等库,并且可以将它们无缝地进行组合;
+ 丰富的部署模式:支持本地模式和自带的集群模式,也支持在 HadoopMesosKubernetes 上运行;
+ 多数据源支持:支持访问 HDFSAlluxioCassandraHBaseHive 以及数百个其他数据源中的数据。
<div align="center"> <img width="600px" src="https://github.com/heibaiying/BigData-Notes/blob/master/pictures/future-of-spark.png"/> </div>
## 三、集群架构
| Term术语 | Meaning含义 |
| --------------- | ------------------------------------------------------------ |
| Application | Spark 应用程序,由集群上的一个 Driver 节点和多个 Executor 节点组成。 |
| Driver program | 主运用程序,该进程运行应用的 main() 方法并且创建 SparkContext |
| Cluster manager | 集群资源管理器例如Standlone ManagerMesosYARN |
| Worker node | 执行计算任务的工作节点 |
| Executor | 位于工作节点上的应用进程,负责执行计算任务并且将输出数据保存到内存或者磁盘中 |
| Task | 被发送到 Executor 中的工作单元 |
<div align="center"> <img src="https://github.com/heibaiying/BigData-Notes/blob/master/pictures/spark-集群模式.png"/> </div>
**执行过程**
1. 用户程序创建 SparkContext 后,它会连接到集群资源管理器,集群资源管理器会为用户程序分配计算资源,并启动 Executor
2. Dirver 将计算程序划分为不同的执行阶段和多个 Task之后将 Task 发送给 Executor
3. Executor 负责执行 Task并将执行状态汇报给 Driver同时也会将当前节点资源的使用情况汇报给集群资源管理器。
## 四、核心组件
Spark 基于 Spark Core 扩展了四个核心组件,分别用于满足不同领域的计算需求。
<div align="center"> <img width="600px" src="https://github.com/heibaiying/BigData-Notes/blob/master/pictures/spark-stack.png"/> </div>
### 3.1 Spark SQL
Spark SQL 主要用于结构化数据的处理。其具有以下特点:
- 能够将 SQL 查询与 Spark 程序无缝混合,允许您使用 SQLDataFrame API 对结构化数据进行查询;
- 支持多种数据源,包括 HiveAvroParquetORCJSONJDBC
- 支持 HiveQL 语法以及用户自定义函数 (UDF),允许你访问现有的 Hive 仓库;
- 支持标准的 JDBCODBC 连接;
- 支持优化器,列式存储和代码生成等特性,以提高查询效率。
### 3.2 Spark Streaming
Spark Streaming 主要用于快速构建可扩展,高吞吐量,高容错的流处理程序。支持从 HDFSFlumeKafkaTwitterZeroMQ 读取数据,并进行处理。
<div align="center"> <img width="600px" src="https://github.com/heibaiying/BigData-Notes/blob/master/pictures/spark-streaming-arch.png"/> </div>
Spark Streaming 的本质是微批处理,它将数据流进行极小粒度的拆分,拆分为多个批处理,从而达到接近于流处理的效果。
<div align="center"> <img width="600px" src="https://github.com/heibaiying/BigData-Notes/blob/master/pictures/spark-streaming-flow.png"/> </div>
### 3.3 MLlib
MLlibSpark 的机器学习库。其设计目标是使得机器学习变得简单且可扩展。它提供了以下工具:
+ **常见的机器学习算法**:如分类,回归,聚类和协同过滤;
+ **特征化**:特征提取,转换,降维和选择;
+ **管道**:用于构建,评估和调整 ML 管道的工具;
+ **持久性**:保存和加载算法,模型,管道数据;
+ **实用工具**:线性代数,统计,数据处理等。
### 3.4 Graphx
GraphXSpark 中用于图形计算和图形并行计算的新组件。在高层次上GraphX 通过引入一个新的图形抽象来扩展 RDD(一种具有附加到每个顶点和边缘的属性的定向多重图形)。为了支持图计算GraphX 提供了一组基本运算符(如: subgraphjoinVertices 和 aggregateMessages以及优化后的 Pregel API。此外GraphX 还包括越来越多的图形算法和构建器,以简化图形分析任务。
##