Spark的原理解析


文章目录

  • 前言
  • 一. Spark简介
  • Spark与MapReduce对比
  • 二.基本概念和架构设计
  • Spark运行的基本流程(这里以YARN为例)
  • RDD的一个基本运行概述
  • RDD的典型执行过程如下
  • RDD的依赖关系
  • 总结



前言

今天主要学习的是一个Spark框架的原理解析,spark的运行流程,RDD的一个执行过程,依赖关系的一个介绍


一. Spark简介

Spark是由scala开发的,scala运行于JAVA平台(JVM),并兼容现有的JAVA程序,所以使用scala编写的程序由Java jdk就能运行,并不需要scala jdk

Spark与MapReduce对比

SPARK 流程 spark运行原理_spark

由上图可以看出,使用Hadoop MR进行迭代计算非常耗资源
Spark将数据载入内存后,之后的迭代计算都可以直接使用内存中的中间结果作运算,避免了从磁盘中频繁读取数据

二.基本概念和架构设计

SPARK 流程 spark运行原理_scala_02

Spark运行的基本流程(这里以YARN为例)

SPARK 流程 spark运行原理_spark_03

  1. 客户端提交应用程序的时候,首先为应用构起基本运行环境SparkContext并向RM注册并申请资源,即由Driver创建一个SC进行资源的申请,任务的分配和监控
    这里的Driver理解为用户编写的应用程序,SparkContex(SC)t就类似RM中的AM功能
  2. RM收到请求后会启动Executor并分配资源,并向SC注册并申请Task,并时刻与SC保持通信防止断联。
  3. 待作业运行完后SC向RM申请注销并关闭自己

RDD的一个基本运行概述

RDD的典型执行过程如下

SPARK 流程 spark运行原理_big data_04


1.RDD读入外部数据源并创建,如果数据源大就会创建多个分区,不同的分区就会到不同的数据节点上,就是因为这一特性,才叫RDD:分布式弹性数据集

2.RDD经过一系列的转换操作:每一次转换操作都会形成新的RDD供下一个转换操作使用,这样串起来就构成了DAG图

3.最后一个RDD经过动作操作输出到外部数据源

处理过程中,RDD都会转换,但不会具体的生成结果,只有遇到动作操作(action)才会去计算相应的结果

SPARK 流程 spark运行原理_依赖关系_05

RDD的依赖关系

如上图所示,RDD的依赖关系分为宽依赖和窄依赖,什么有窄依赖,下面我说一下宽依赖,表现为存在一个父RDD的一个分区对应一个子RDD的多个分区