BigData-Notes/notes/Spark简介.md
2019-06-04 11:03:40 +08:00

5.5 KiB
Raw Blame History

Spark简介

一、简介
二、特点
三、集群架构
四、核心组件
        3.1 Spark SQL
        3.2 Spark Streaming
        3.3 MLlib
        3.4 Graphx

一、简介

Spark于2009年诞生于加州大学伯克利分校AMPLab2013年被捐赠给Apache软件基金会。2014年2月成为Apache的顶级项目。相对于MapReduce的批处理计算Spark可以带来上百倍的性能提升因此它成为继MapReduce之后最为广泛使用的分布式计算框架。

二、特点

  • Apache Spark使用先进的DAG调度程序查询优化器和物理执行引擎以实现性能上的保证
  • 多语言支持目前支持的有JavaScalaPython和R
  • 提供了80多个高级API可以轻松地构建应用程序
  • 支持批处理,流处理和复杂的业务分析;
  • 丰富的类库支持包括SQLMLlibGraphX和Spark Streaming等库并且可以将它们无缝地进行组合
  • 丰富的部署模式支持本地模式和自带的集群模式也支持在HadoopMesosKubernetes上运行
  • 多数据源支持支持访问HDFSAlluxioCassandraHBaseHive以及数百个其他数据源中的数据。

三、集群架构

Term术语 Meaning含义
Application Spark应用程序由集群上的一个Driver节点和多个Executor节点组成。
Driver program 主运用程序,该进程运行应用的 main() 方法并且创建了 SparkContext
Cluster manager 集群资源管理器例如Standlone ManagerMesosYARN
Worker node 执行计算任务的工作节点
Executor 位于工作节点上的应用进程,负责执行计算任务并且将输出数据保存到内存或者磁盘中
Task 被发送到Executor中的工作单元

执行过程

  1. 用户程序创建SparkContext后它会连接到集群资源管理器集群资源管理器会为用户程序分配计算资源并启动Executor
  2. Dirver将计算程序划分为不同的执行阶段和多个Task之后将Task发送给Executor
  3. Executor负责执行Task并将执行状态汇报给Driver同时也会将当前节点资源的使用情况汇报给集群资源管理器。

四、核心组件

Spark基于Spark Core扩展了四个核心组件分别用于满足不同领域的计算需求。

3.1 Spark SQL

Spark SQL主要用于结构化数据的处理。其具有以下特点

  • 能够将SQL查询与Spark程序无缝混合允许您使用SQL或DataFrame API对结构化数据进行查询
  • 支持多种数据源包括HiveAvroParquetORCJSON和JDBC
  • 支持HiveQL语法以及用户自定义函数(UDF)允许你访问现有的Hive仓库
  • 支持标准的JDBC和ODBC连接
  • 支持优化器,列式存储和代码生成等特性,以提高查询效率。

3.2 Spark Streaming

Spark Streaming主要用于快速构建可扩展高吞吐量高容错的流处理程序。支持从HDFSFlumeKafkaTwitter和ZeroMQ读取数据并进行处理。

Spark Streaming的本质是微批处理它将数据流进行极小粒度的拆分拆分为多个批处理从而达到接近于流处理的效果。

3.3 MLlib

MLlib是Spark的机器学习库。其设计目标是使得机器学习变得简单且可扩展。它提供了以下工具

  • 常见的机器学习算法:如分类,回归,聚类和协同过滤;
  • 特征化:特征提取,转换,降维和选择;
  • 管道用于构建评估和调整ML管道的工具
  • 持久性:保存和加载算法,模型,管道数据;
  • 实用工具:线性代数,统计,数据处理等。

3.4 Graphx

GraphX是Spark中用于图形计算和图形并行计算的新组件。在高层次上GraphX通过引入一个新的图形抽象来扩展 RDD(一种具有附加到每个顶点和边缘的属性的定向多重图形)。为了支持图计算GraphX提供了一组基本运算符 subgraphjoinVertices 和 aggregateMessages以及优化后的Pregel API。此外GraphX还包括越来越多的图形算法和构建器以简化图形分析任务。