Spark

33 篇文章 1 订阅
1 篇文章 0 订阅

Spark知识点

(1)概念

Spark 提供了一个全面、统一的框架用于管理各种有着不同性质(文本数据、图表数据等)的数据集和数据源(批量数据或实时的流数据)的大数据处理的需求。

结构图

Spark Core

包含Spark的基本功能,尤其是定义RDD的API、操作以及这两者上的动作。其他Spark的库都是构建在RDD和Spark Core之上的。

Spark SQL

提供通过Apache Hive的SQL变体Hive查询语言(HiveQL)与Spark进行交互的API。每个数据库表被当做一个RDD,Spark SQL查询被转换为Spark操作。

Spark Streaming

对实时数据流进行处理和控制。Spark Streaming允许程序能够像普通RDD一样处理实时数据。

Mllib

一个常用机器学习算法库,算法被实现为对RDD的Spark操作。这个库包含可扩展的学习算法, 比如分类、回归等需要对大量数据集进行迭代的操作。

GraphX

控制图、并行图操作和计算的一组算法和工具的集合。GraphX扩展了RDD API,包含控制图、创建子图、访问路径上所有顶点的操作。

(2)核心组件

核心组件

Cluster Manager

管制整个集群,监控 worker。
在 standalone 模式中即为 Master 主节点,控制整个集群,监控 worker。在 YARN 模式中为资源管理器。

Worker 节点(负责控制计算节点)

从节点,负责控制计算节点,启动Executor或者Driver。

Driver

运行 Application 的 main() 函数。

Executor

执行器,是为某个 Application运行在 worker node上的一个进程。

(3)Spark 编程模型

Spark编制模型

Spark 应用程序从编写到提交、执行、输出的整个过程步骤如下:

  1. 用户使用SparkContext提供的API(常用的有textFile、sequenceFile、runJob、stop等) 编写 Driver application 程序。此外 SQLContext、HiveContext 及 StreamingContext 对 SparkContext进行封装,并提供了SQL、Hive及流式计算相关的API。

  2. 使用SparkContext提交的用户应用程序,首先会使用BlockManager和BroadcastManager 将任务的Hadoop配置进行广播。然后由DAGScheduler将任务转换为RDD并组织成DAG, DAG 还将被划分为不同的 Stage。最后由 TaskScheduler 借助 ActorSystem 将任务提交给 集群管理器(Cluster Manager)。

  3. 集群管理器(ClusterManager)给任务分配资源,即将具体任务分配到Worker上,Worker 创建Executor来处理任务的运行。Standalone、YARN、Mesos、EC2 等都可以作为Spark 的集群管理器。

(4)Spark 计算模型

RDD 可以看做是对各种数据计算模型的统一抽象,Spark 的计算过程主要是 RDD 的迭代计算过 程。RDD的迭代计算过程非常类似于管道。分区数量取决于partition数量的设定,每个分区的数 据只会在一个Task中计算。所有分区可以在多个机器节点的Executor 上并行执行。

计算模型

(5)Spark 运行流程

运行流程

  1. 构建 Spark Application的运行环境,启动 SparkContext。

  2. SparkContext向资源管理器(可以是Standalone、Mesos、Yarn )申请运行Executor资源,并启动 StandaloneExecutorbackend。

  3. Executor向 SparkContext申请 Task 。

  4. SparkContext将应用程序分发给 Executor。

  5. SparkContext构建成 DAG图,将 DAG图分解成 Stage ,将 Taskset发送给 Task Scheduler ,最后由 Task Scheduler将 Task发送给 Executor运行。

  6. Task在 Executor上运行,运行完释放所有资源。

(6)Spark RDD 流程

RDD流程

  1. 创建RDD对象。

  2. DAGScheduler 模块介入运算,计算 RDD 之间的依赖关系,RDD 之间的依赖关系就形成了 DAG。

  3. 每一个 Job 被分为多个 Stage。划分 Stage 的一个主要依据是当前计算因子的输入是否是确定的,如果是则将其分在同一个Stage,避免多个Stage之间的消息传递开销 。

(7)Spark RDD

(1)RDD 的创建方式
1、从Hadoop文件系统(或与Hadoop兼容的其他持久化存储系统,如Hive、Cassandra、 HBase)输入(例如HDFS)创建。
2、从父RDD转换得到新RDD。
3、通过parallelize或makeRDD将单机数据创建为分布式RDD。

(2)RDD 的两种操作算子

转换(Transformation)与行动(Action)

对于RDD可以有两种操作算子:转换(Transformation)与行动(Action)。

1、 转换(Transformation):Transformation操作是延迟计算的,也就是说从一个RDD转换生成另一个RDD的转换操作不是马上执行,需要等到有Action操作的时候才会真正触发运算。

转换

2、行动(Action):Action算子会触发 Spark 提交作业(Job),并将数据输出 Spark 系统。

行动

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值