大数据Spark部署模式DeployMode

本文涉及的产品
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
简介: 大数据Spark部署模式DeployMode

1 两种模式区别

Spark Application提交运行时部署模式Deploy Mode,表示的是Driver Program运行的地方,要么是提交应用的Client:client,要么是集群中从节点(Standalone:Worker,YARN:NodeManager):cluster。


这里我做个简单总结下面的话:client模式就是driver运行在本地一般不用各种问题,cluster模式driver运行在Yarn集群中,性能较好,Cluster和Client模式最最本质的区别是:Driver程序运行在哪里。

--deploy-mode DEPLOY_MODE
Whether to launch the driver program locally ("client") or on one of the worker machines inside the
cluster ("cluster")(Default: client).

默认值为client,当时在实际项目中,尤其在生产环境,使用cluster部署模式提交应用运行。


1.1 client 模式

以Spark Application运行到Standalone集群上为例,前面提交运行圆周率PI或者词频统计

WordCount程序时,默认DeployMode为Client,表示应用Driver Program运行在提交应用Client

主机上(启动JVM Process进程),示意图如下:

242227b5a88f4b17a46606413e8d0157.png

假设运行圆周率PI程序,采用client模式,命令如下:

SPARK_HOME=/export/server/spark
${SPARK_HOME}/bin/spark-submit \
--master spark://node1.oldlu.cn:7077,node2.oldlu.cn:7077 \
--deploy-mode client \
--driver-memory 512m \
--executor-memory 512m \
--num-executors 1 \
--total-executor-cores 2 \
--class org.apache.spark.examples.SparkPi \
${SPARK_HOME}/examples/jars/spark-examples_2.11-2.4.5.jar \
10

1.2 cluster 模式

如果采用cluster模式运行应用,应用Driver Program运行在集群从节点Worker某台机器上,示

意图如下:401980cc9ed64938a6f49d5555ef50c6.png

假设运行圆周率PI程序,采用cluster模式,命令如下:

SPARK_HOME=/export/server/spark
${SPARK_HOME}/bin/spark-submit \
--master spark://node1.oldlu.cn:7077,node2.oldlu.cn:7077 \
--deploy-mode cluster \
--supervise \
--driver-memory 512m \
--executor-memory 512m \
--num-executors 1 \
--total-executor-cores 2 \
--class org.apache.spark.examples.SparkPi \
${SPARK_HOME}/examples/jars/spark-examples_2.11-2.4.5.jar \
10

1.3 两者比较

Cluster和Client模式最最本质的区别是:Driver程序运行在哪里。


cluster模式:生产环境中使用该模式

Driver程序在YARN集群中

应用的运行结果不能在客户端显示

client模式:学习测试时使用,开发不用,了解即可

Driver运行在Client上的SparkSubmit进程中

应用程序运行结果会在客户端显示

2 Spark on YARN

当应用提交运行到Hadoop YARN上时,包含两个部分:应用管理者AppMaster和于运行应用

进程Process(如MapReduce程序MapTask和ReduceTask任务),如下图所示:

b20b361ee5bd4fa680e87002a24b96d4.png


Spark Application提交运行在集群上时,应用架构有两部分组成:Driver Program(资源申请

和调度Job执行)和Executors(运行Job中Task任务和缓存数据),都是JVM Process进程:

741594c9d0974605a17197dc47224b06.png

所以Spark Application运行在YARN上时,采用不同DeployMode时架构不一样,企业实际生

产环境还是以cluster模式为主,client模式用于开发测试,两者的区别面试中常问。


2.1 YARN Client 模式

在YARN Client模式下,Driver在任务提交的本地机器上运行,示意图如下:49ed03b7d4be4f408429971d085478d3.png

具体流程步骤如下:


1)、Driver在任务提交的本地机器上运行,Driver启动后会和ResourceManager通讯申请启动ApplicationMaster;

efe34cb7760543e2b877d789305381db.png

2)、随后ResourceManager分配Container,在合适的NodeManager上启动ApplicationMaster,

此时的ApplicationMaster的功能相当于一个ExecutorLaucher,只负责向ResourceManager申

请Executor内存;

7a96bc62d5944590b069d651ea9a608d.png

- 3)、ResourceManager接到ApplicationMaster的资源申请后会分配Container,然后

ApplicationMaster在资源分配指定的NodeManager上启动Executor进程;

4)、Executor进程启动后会向Driver反向注册,Executor全部注册完成后Driver开始执行main

函数;

5)、之后执行到Action算子时,触发一个Job,并根据宽依赖开始划分Stage,每个Stage生成

对应的TaskSet,之后将Task分发到各个Executor上执行。

以运行词频统计WordCount程序为例,提交命令如下:

/export/server/spark/bin/spark-submit \
--master yarn \
--deploy-mode client \
--driver-memory 512m \
--executor-memory 512m \
--executor-cores 1 \
--num-executors 2 \
--queue default \
--class cn.oldlu.spark.submit.SparkSubmit \
hdfs://node1.oldlu.cn:8020/spark/apps/spark-chapter01_2.11-1.0.0.jar \
/datas/wordcount.data /datas/swcy-client

2.2 YARN Cluster 模式

在YARN Cluster模式下,Driver运行在NodeManager Contanier中,此时Driver与AppMaster

合为一体,示意图如下:

ebf2bcc33aa74a27ad0a6559ff813963.png

具体流程步骤如下:


1)、任务提交后会和ResourceManager通讯申请启动ApplicationMaster;


2)、随后ResourceManager分配Container,在合适的NodeManager上启动ApplicationMaster,

此时的ApplicationMaster就是Driver;

d367055f6b1d4dfc8c35386b33f19f36.png


3)、Driver启动后向ResourceManager申请Executor内存,ResourceManager接到

ApplicationMaster的资源申请后会分配Container,然后在合适的NodeManager上启动

Executor进程;

4d4cd31c6cec414890fda5f00e1d230f.png


4)、Executor进程启动后会向Driver反向注册;


5)、Executor全部注册完成后Driver开始执行main函数,之后执行到Action算子时,触发一个

job,并根据宽依赖开始划分stage,每个stage生成对应的taskSet,之后将task分发到各个

Executor上执行;

以运行词频统计WordCount程序为例,提交命令如下:

/export/server/spark/bin/spark-submit \
--master yarn \
--deploy-mode cluster \
--driver-memory 512m \
--executor-memory 512m \
--executor-cores 1 \
--num-executors 2 \
--queue default \
--class cn.oldlu.spark.submit.SparkSubmit \
hdfs://node1.oldlu.cn:8020/spark/apps/spark-chapter01_2.11-1.0.0.jar \
/datas/wordcount.data /datas/swcy-cluster

3 MAIN函数代码执行

Spark Application应用程序运行时,无论client还是cluster部署模式DeployMode,当Driver

Program和Executors启动完成以后,就要开始执行应用程序中MAIN函数的代码,以词频统计

WordCount程序为例剖析讲解。


5dd7decad03742a9bdaf3e5000cebc8d.png

第一、构建SparkContex对象和关闭SparkContext资源,都是在Driver Program中执行,上图中

①和③都是,如下图所示:3977d55804b44287b98b18b63e38bcf2.png

第二、上图中②的加载数据【A】、处理数据【B】和输出数据【C】代码,都在Executors上执

行,从WEB UI监控页面可以看到此Job(RDD#action触发一个Job)对应DAG图,如下所示:

9d9ae32533584837800f1b439db10d87.png

将结果数据resultRDD调用saveAsTextFile方法,保存数据到外部存储系统中,代码在Executor

中执行的。但是如果resultRDD调用take、collect或count方法时,获取到最终结果数据返回给Driver,

代码如下:ab3330096fb94b5ca4421e0959ad4f4d.png

运行应用程序时,将数组resultArray数据打印到标准输出,Driver Program端日志打印结果:

7532dfdc49f2460c8b8a7c37e34d6fd8.png

综上所述Spark Application中Job执行有两个主要点:

1)、RDD输出函数分类两类

第一类:返回值给Driver Progam,比如count、first、take、collect等

第二类:没有返回值,比如直接打印结果、保存至外部存储系统(HDFS文件)等

2)、在Job中从读取数据封装为RDD和一切RDD调用方法都是在Executor中执行,其他代码都

是在Driver Program中执行

SparkContext创建与关闭、其他变量创建等在Driver Program中执行

RDD调用函数都是在Executors中执行

4 再续 Spark 应用

当Spark Application运行在集群上时,主要有四个部分组成,如下示意图:

b365ce04f1fc46aabeaeceb9f1a6d7b2.png

1)、Driver:是一个JVM Process 进程,编写的Spark应用程序就运行在Driver上,由Driver进

程执行;

2)、Master(ResourceManager):是一个JVM Process 进程,主要负责资源的调度和分配,并

进行集群的监控等职责;

3)、Worker(NodeManager):是一个JVM Process 进程,一个Worker运行在集群中的一台服

务器上,主要负责两个职责,一个是用自己的内存存储RDD的某个或某些partition;另一个是

启动其他进程和线程(Executor),对RDD上的partition进行并行的处理和计算。

4)、Executor:是一个JVM Process 进程,一个Worker(NodeManager)上可以运行多个Executor,

Executor通过启动多个线程(task)来执行对RDD的partition进行并行计算,也就是执行我们

对RDD定义的例如map、flatMap、reduce等算子操作。

Spark支持多种集群管理器(Cluster Manager),取决于传递给SparkContext的MASTER环境变量的

值:local、spark、yarn,区别如下:

a76c95534fad4689a04b5dab827af0a0.png

相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
目录
相关文章
|
14天前
|
分布式计算 资源调度 大数据
【决战大数据之巅】:Spark Standalone VS YARN —— 揭秘两大部署模式的恩怨情仇与终极对决!
【8月更文挑战第7天】随着大数据需求的增长,Apache Spark 成为关键框架。本文对比了常见的 Spark Standalone 与 YARN 部署模式。Standalone 作为自带的轻量级集群管理服务,易于设置,适用于小规模或独立部署;而 YARN 作为 Hadoop 的资源管理系统,支持资源的统一管理和调度,更适合大规模生产环境及多框架集成。我们将通过示例代码展示如何在这两种模式下运行 Spark 应用程序。
61 3
|
2天前
|
SQL 分布式计算 DataWorks
DataWorks产品使用合集之如何开发ODPS Spark任务
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
11天前
|
SQL 分布式计算 监控
|
1天前
|
分布式计算 Hadoop 大数据
大数据处理框架在零售业的应用:Apache Hadoop与Apache Spark
【8月更文挑战第20天】Apache Hadoop和Apache Spark为处理海量零售户数据提供了强大的支持
9 0
|
2天前
|
分布式计算 DataWorks 关系型数据库
DataWorks产品使用合集之ODPS数据怎么Merge到MySQL数据库
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
7天前
|
消息中间件 数据采集 JSON
大数据 - DWD&DIM 行为数据
大数据 - DWD&DIM 行为数据
20 1
|
14天前
|
机器学习/深度学习 人工智能 分布式计算
理解并利用大数据的力量:解锁数据背后的价值
【8月更文挑战第7天】大数据已成为推动社会进步和经济发展的重要力量。通过理解并利用大数据的力量,企业可以解锁数据背后的价值,优化业务流程、提升决策效率和创新能力。然而,大数据应用也面临着诸多挑战和风险,需要企业不断学习和实践以应对。相信在未来的发展中,大数据将为我们带来更多的惊喜和机遇。
|
14天前
|
数据采集 数据挖掘 Python
python爬虫去哪儿网上爬取旅游景点14万条,可以做大数据分析的数据基础
本文介绍了使用Python编写的爬虫程序,成功从去哪儿网上爬取了14万条旅游景点信息,为大数据分析提供了数据基础。
|
14天前
|
存储 分布式计算 大数据
大数据处理竟然这么简单?学会这几招,你也能在数据洪流中游刃有余,秒变数据大师!
【8月更文挑战第6天】面对海量数据,有效处理成为关键。本文介绍大规模数据处理的核心挑战及解决方案,涵盖分布式存储(如HDFS)和计算(如Spark)。通过示例代码展示HDFS文件读写及Spark数据处理流程。此外,还强调了数据质量、安全及合理资源配置的重要性,助您在数据海洋中洞察先机。
36 1
|
23天前
|
存储 算法 数据可视化
云上大数据分析平台:解锁数据价值,驱动智能决策新篇章
实时性与流式处理:随着实时数据分析需求的增加,云上大数据分析平台将更加注重实时性和流式处理能力的建设。通过优化计算引擎和存储架构等技术手段,平台将能够实现对数据流的高效处理和分析,为企业提供实时决策支持。通过优化计算引擎和存储架构等技术手段,平台将能够实现对数据流的高效处理和分析,为企业提供实时决策支持。
65 8

热门文章

最新文章