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 条评论
登录 后参与评论

相关文章

来自专栏个人分享

Hadoop on Yarn 各组件详细原理

  运行在独立的节点上的ResourceManager和NodeManager一起组成了yarn的核心,构建了整个平台。ApplicationMaster和相应...

1141
来自专栏祝威廉

使用Spark SQL 构建流式处理程序

今天介绍利用 StreamingPro 构建流式(Spark Streaming)计算程序

944
来自专栏个人分享

Spark on Yarn 架构解析

我们都知道yarn重构根本的思想,是将原有的JobTracker的两个主要功能资源管理器 和 任务调度监控 分离成单独的组件。新的架构使用全局管理所有应用程序的...

1591
来自专栏程序生活

大数据入门与实战-Hadoop核心HDFSHadoop简介一、 HDFS概念及优缺点二、HDFS写流程与读流程三、Shell命令操作HDFS四 、Python程序操作HDFS

课程链接:https://www.imooc.com/video/16287 Hadoop简介 Hadoop是一个由Apache基金会所开发的分布式系统基础架构...

3386
来自专栏cloudskyme

Hadoop使用(一)

hadoop框架 Hadoop使用主/从(Master/Slave)架构,主要角色有NameNode,DataNode,secondary NameNode,J...

3084
来自专栏码字搬砖

hive原理分析

基于hive1.1(从hive2.0开始,hive开始基于内存了,底层的实现框架不在基于MR)

1852
来自专栏张浩的专栏

Spark本地调试的使用Hive配置文件

在本地调试的时候发现把Hive的hive-site.xml放到项目的resources目录下,就可以让Spark读取hive-site.xml中的Hive的配置...

1431
来自专栏Hadoop实操

如何在CM中启用YARN的使用率报告

CDH的高级功能"群集利用率报告"(Cluster Utilization Report)是整个多租户方案体系里的一部分,可以用来查看租户的资源使用情况,并可以...

4455
来自专栏Albert陈凯

Hadoop系统架构与简单介绍

Hadoop系统架构 一、Hadoop系统架构图 ? Hadoop1.0与hadoop2.0架构对比图 ? YARN架构: ResourceM...

3857
来自专栏实用工具入门教程

如何部署 Hadoop 集群

Hadoop是一个由Apache基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。...

2051

扫码关注云+社区