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基本概念(便于自己随时查阅--摘自Spark快速大数据分析)

转载请务必注明原创地址为:http://dongkelun.com/2018/01/23/sparkBasicConcept/

3638
来自专栏Albert陈凯

第三章 Spark机制与原理

循序渐进学Spark 本书前面几章分别介绍了Spark的生态系统、Spark运行模式及Spark的核心概念RDD和基本算子操作等重要基础知识。 本章重点讲解Sp...

3326
来自专栏CSDN技术头条

Kafka和消息队列之间的超快速比较

本文的目的是让读者快速了解Kafka与消息队列之间的关系,告诉读者为什么会考虑使用它的原因。以下为译文。 Kafka最初是由Linkedin社区开发的一项技术。...

1846
来自专栏小怪聊职场

爬虫架构|利用Kafka处理数据推送问题(3)架构图

2115
来自专栏机器学习算法全栈工程师

Spark资源调优

Spark 作者:章华燕 编辑:龚 赛 概述 1 在开发完Spark作业之后,就该为作业配置合适的资源了。Spark的资源参数,基本都可...

3067
来自专栏大数据

Zzreal的大数据笔记-SparkDay01

Spark 一、Spark概述 1、什么是Spark Spark是一种快速、通用、可扩展的大数据分析引擎。它集批处理、实时流处理、交互式查询和图计算于一体,避免...

18410
来自专栏互联网技术栈

Tair数据迁移三步走

在多机房数据迁移中,整个过程分为三个阶段:历史数据迁移阶段、redolog迁移阶段、实时复制阶段。

223
来自专栏阿杜的世界

RocketMQ学习-概览快速开始RocketMQ的架构

参考官网的文档Quick-Start,在我的Mac上部署rmq,并体验了发消息和收消息的功能。

591
来自专栏北京马哥教育

小白也能看懂的简单明了kafka原理解析

? 介绍 ? 分布式消息系统kafka的提供了一个生产者、缓冲区、消费者的模型 ? broker:中间的kafka cluster,存储消息,是由多个se...

3496
来自专栏Java架构

高并发风控技术解密(下)

  •从业务中抽象及通用——如果一种业务有可能在今后重复出现,那就将其模块化,系统化(如批处理系统),发展成为平台能力

1445

扫码关注云+社区