Spark2.x学习笔记:4、Spark程序架构与运行模式

4、 Spark程序架构与运行模式

4.1 Spark程序最简架构

所有的Spark程序运行时,主要由两大类组件Driver和Excutor构成。

  • 每个Spark程序运行时都有一个Driver,Driver是进程包含了运行所需要的CPU和内存等资源,Driver是我们应用程序main函数所在进程。比如当我们运行一个spark-shell时,就创建了一个driver 程序 。
  • Executor可以有多个,其职责是运行给定的Spark 作业中的单个任务。Driver 必须协调各独立任务到executor 中,也就是由driver向集群申请资源,集群分配资源,启动executor。当excutor 启动后,它们会将自己注册到driver,所以driver 随时都能看到完整的executor视图。每个executor 表现为能执行任务和保存RDD 数据的进程。Executor 在Spark 应用开始的时候被启动一次,一般会在应用的整个生命周期都运行。Executor 有两个任务。一个是运行构成应用的任务并返回结果到driver。第二个是通过每个executor 中都存在的被称为块管理器(Block Manager)的服务为用户程序中缓存的RDD 提供内存存储。
  • Task 是Spark 处理中的最小单元。Task 在executor 进程运行来计算和保存结果。

总结:Driver和Excutor都是进程,Task是Excutor进程下的线程。由driver向集群申请资源,集群分配资源,启动executor。driver将spark应用程序的代码和文件传送给executor。executor上运行task,运行完之后将结果返回给driver或者写入外界。

Spark运行模式可以分为三类:本地模式,独立模式,Spark on YARN/Mesos。

4.2 本地模式

前面2章的内容,Spark都是以本地模式运行。 在本地模式下,Spark应用程序以多线程形式直接在本地运行,方便程序调试。 本地模式有可以分为以下三种:

  • local:只启动一个executor
  • local[k]:启动k个executor
  • local[*]:启动和CPU数相同的executor

在前面的spark-shell中日志中,可以看到输出信息master = local[*],表示spark-shell是在本地模式下运行,默认启动和CPU数相同的个executor。

4.3 独立模式

独立模式(standalone)表示Spark运行在独立的集群中,无依赖任何其他资源管理系统。

Standalone模式需要将Spark复制到集群中的每个节点,然后分别启动每个节点即可;Spark Standalone模式的集群由Master与Worker节点组成,程序通过与Master节点交互申请资源,Worker节点启动Executor运行。

当Driver中的SparkContext初始化的时候会提交程序给Master,Master如果接受该程序在Spark中运行的话,就会为当前的程序分配AppID,同时会分配具体的计算资源,需要特别注意的是,Master是根据当前程序提交的配置信息来给集群中的Worker发指令分配具体的计算资源,但是,Master发出指令后并不关心具体的资源是否已经分配,转来说Master是发指令后就记录了分配的资源,以后客户端再次提交其它的程序的话就不能使用该资源了。

提示:大多博客介绍的《Spark完全分布式环境搭建》实际上就是Spark独立模式(standalone)。而Spark运行模式最常用的是Spark on YARN/Mesos。

4.4 Spark on YARN/Mesos

从架构和应用角度上看,spark是一个仅包含计算逻辑的开发库(尽管它提供个独立运行的master/slave服务,但考虑到稳定后以及与其他类型作业的继承性,通常不会被采用),而不包含任何资源管理和调度相关的实现,这使得spark可以灵活运行在目前比较主流的资源管理系统上,典型的代表是mesos和yarn,我们称之为“spark on mesos”和“spark on yarn”。将spark运行在资源管理系统上将带来非常多的收益,包括:与其他计算框架共享集群资源;资源按需分配,进而提高集群资源利用率等。 (1)Spark on Mesos模式 Mesos是Apache下的开源分布式资源管理框架。由于血缘关系,Spark官方推荐这种模式,很多公司也采用该模式。Spark On Mesos模式参考:http://dongxicheng.org/apache-mesos/meso-architecture/ (2)Spark on YARN模式 Spark On YARN模式,这是一种最有前景的部署模式。 Spark on YARN框架解析:

  • 基于YARN的Spark作业首先由Spark客户端生成作业信息,提交给ResourceManager,ResourceManager在某一个NodeManager汇报时把AppMaster分配给该NodeManager;
  • 该NodeManager启动Spark AppMaster,Spark AppMaster 启动后初始化作业,然后向ResourceManager申请资源;
  • 申请到相应资源后,Spark AppMaster通过RPC让对应若干个NodeManager启动相应的 Spark Executor,Spark Executor向Spark AppMaster汇报完成相应的任务。
  • Spark客户端会通过Spark AppMaster获取作业运行状态。

(3)Client模式 在Spark on YARN/Mesos模式中,根据Spark Application的Driver是否在集群中运行,Spark on YARN/Mesos运行模式又可以分为Client模式和Cluster模式。

(4)Cluster模式

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏行者悟空

让Spark运行在YARN上(Spark on YARN)

1844
来自专栏猿人谷

分布式计算Hadoop简介

Hadoop是什么:Hadoop是一个开发和运行处理大规模数据的软件平台,是Appach的一个用java语言实现开源软件框架,实现在大量计算机组成的集群中对海量...

19810
来自专栏Albert陈凯

大数据面试选择题hadoop

1.1. 下面哪个程序负责 HDFS 数据存储。 a)NameNode b)Jobtracker c)Datanode d)secondaryNa...

5344
来自专栏about云

Hadoop 2.x与3.x 22点比较:3.x将节省大量存储空间

1.Hadoop3.x通过什么方式来容错? 2.Hadoop3.x存储开销减少了多少? 3.Hadoop3.x MR API是否兼容hadoop1.x?

912
来自专栏个人分享

Hadoop源码学习之HDFS(一)

  Hadoop的HDFS可以分为NameNode与DataNode,NameNode存储所有DataNode中数据的元数据信息。而DataNode负责存储真正...

581
来自专栏pangguoming

Hadoop基本介绍

1、Hadoop的整体框架  Hadoop由HDFS、MapReduce、HBase、Hive和ZooKeeper等成员组成,其中最基础最重要元素为底层用于存储...

2958
来自专栏小樱的经验随笔

Hadoop框架

1、Hadoop的整体框架 Hadoop由HDFS、MapReduce、HBase、Hive和ZooKeeper等成员组成,其中最基础最重要元素为底层用于存...

3068
来自专栏Albert陈凯

3.1 Spark应用执行机制分析

3.1 Spark应用执行机制分析 下面对Spark Application的基本概念和执行机制进行深入介绍。 3.1.1 Spark应用的基本概念 Spark...

3056
来自专栏美图数据技术团队

Spark on Yarn | Spark,从入门到精通

欢迎阅读美图数据技术团队的「Spark,从入门到精通」系列文章,本系列文章将由浅入深为大家介绍 Spark,从框架入门到底层架构的实现,相信总有一种姿势适合你,...

700
来自专栏CSDN技术头条

大数据技术Hadoop面试题,看看你能答对多少?答案在后面

单项选择题 1. 下面哪个程序负责 HDFS 数据存储。 a)NameNode b)Jobtracker c)Datanode d)secondaryNameN...

23010

扫码关注云+社区