Spark on YARN 部署搭建详细图文教程

news2024/11/16 19:24:09

目录

一、引言 

二、SparkOnYarn 本质

2.1 Spark On Yarn 的本质?

2.2 Spark On Yarn 需要啥?

三、配置 spark on yarn 环境

3.1 spark-env.sh 

3.2 连接到 YARN 中

3.2.1 bin/pyspark

3.2.2 bin/spark-shell

3.2.3 bin/spark-submit (PI)

四、部署模式 DeployMode 

4.1 Cluster 模式

4.2 Client 模式

4.3 两种模式的区别 

4.4 测试 

4.4.1 client 模式测试  

4.4.2 cluster 模式测试  

4.5 两种模式总结 

五、两种模式详细流程 

5.1 Client 模式 

5.2 Cluster 模式 


 

一、引言 

        按照前面环境部署中所了解到的,如果我们想要一个稳定的生产 Spark 环境,那么最优的选择就是构建 HA StandAlone 集群。

        不过在企业中,服务器的资源总是紧张的,许多企业不管做什么业务,都基本上会有 Hadoop 集群,也就是会有 YARN 集群。

        对于企业来说,在已有 YARN 集群的前提下在单独准备 Spark StandAlone 集群,对资源的利用就不高,所以在企业中,多数场景下,会将 Spark 运行到 YARN 集群中。

        YARN 本身是一个资源调度框架,负责对运行在内部的计算框架进行资源调度管理.。作为典型的计算框架,Spark 本身也是直接运行在 YARN 中,并接受 YARN 的调度的。所以,对于 Spark On YARN 无需部署 Spark 集群,只要找一台服务器,充当 Spark 的客户端,即可提交任务到 YARN 集群中运行。

二、SparkOnYarn 本质

2.1 Spark On Yarn 的本质?

  • Master 角色由 YARN 的 ResourceManager 担任。
  • Worker 角色由 YARN 的 NodeManager 担任。
  • Driver 角色运行在 YARN 容器内或提交任务的客户端进程中。
  • 真正干活的 Executor 运行在 YARN 提供的容器内。

2.2 Spark On Yarn 需要啥?

  1. 需要 Yarn 集群:已经安装了
  2. 需要 Spark 客户端工具,比如 spark-submit,可以将 Spark 程序提交到 YARN 中
  3. 需要被提交的代码程序:如 spark/examples/src/main/python/pi.py 此示例程序,或我们后续自己开发的 Spark 任务

三、配置 spark on yarn 环境

3.1 spark-env.sh 

具体安装 spark 步骤:Spark-3.2.4 高可用集群安装部署详细图文教程_Stars.Sky的博客-CSDN博客 

        确保:HADOOP_CONF_DIR、YARN_CONF_DIR 在 spark-env.sh 以及环境变量配置文件中即可(其他的配置文件都不需要修改,切 spark 和 YARN 在同一机器上):

(base) [root@hadoop01 /bigdata/spark-3.2.4]# vim conf/spark-env.sh 
## HADOOP软件配置文件目录,读取HDFS上文件和运行YARN集群
HADOOP_CONF_DIR=/bigdata/hadoop/server/hadoop-3.2.4/etc/hadoop/
YARN_CONF_DIR=/bigdata/hadoop/server/hadoop-3.2.4/etc/hadoop/

3.2 连接到 YARN 中

3.2.1 bin/pyspark

bin/pyspark --master yarn --deploy-mode client|cluster

# --deploy-mode 选项是指定部署模式,默认是客户端模式
# client 就是客户端模式
# cluster 就是集群模式
# --deploy-mode 仅可以用在 YARN 模式下

注意:交互式环境 pyspark  和 spark-shell  无法运行 cluster 模式。

3.2.2 bin/spark-shell

bin/spark-shell --master yarn --deploy-mode client|cluster

注意:交互式环境 pyspark  和 spark-shell  无法运行 cluster 模式。 

3.2.3 bin/spark-submit (PI)

bin/spark-submit --master yarn --deploy-mode client|cluster /xxx/xxx/xxx.py 参数

四、部署模式 DeployMode 

        Spark On YARN 是有两种运行模式的,一种是 Cluster 模式,一种是 Client 模式。这两种模式的区别就是 Driver 运行的位置:

  • Cluster 模式即:Driver 运行在 YARN 容器内部,和 ApplicationMaster 在同一个容器内。
  • Client 模式即:Driver 运行在客户端进程中,比如 Driver 运行在 spark-submit 程序的进程中。

4.1 Cluster 模式

如图,此为 Cluster 模式 Driver运行在容器内部:

4.2 Client 模式

如图,此为Client 模式 Driver 运行在客户端程序进程中(以 spark-submit 为例) :

4.3 两种模式的区别 

4.4 测试 

4.4.1 client 模式测试  

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

(base) [root@hadoop01 /bigdata/spark-3.2.4]# bin/spark-submit --master yarn --deploy-mode client --driver-memory 512m --executor-memory 512m --num-executors 2 --total-executor-cores 2 /bigdata/spark-3.2.4/examples/src/main/python/pi.py 10
  • bin/spark-submit: 这是用于提交 Spark 任务的脚本。

  • --master yarn: 指定 Spark 集群管理器为 YARN。

  • --deploy-mode client: 这意味着 Spark 任务的 driver 程序将在客户端机器(即你提交命令的机器)上运行。

  • --driver-memory 512m: 分配给 driver 的内存为 512 MB。

  • --executor-memory 512m: 每个 Spark executor 使用 512 MB 内存。

  • --num-executors 2: 指定 Spark 应使用 2 个 executor 进程。

  • --total-executor-cores 2: 指定所有 executors 合计可使用的 CPU 核心数为 2。

  • /bigdata/spark-3.2.4/examples/src/main/python/pi.py: 这是你要运行的 Python 程序的路径。

  • 10: 这是传递给 pi.py 程序的一个参数。具体来说,这通常用于指定计算π值时的迭代次数或精度。 

日志跟随客户端的标准输出流进行输出:

4.4.2 cluster 模式测试  

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

(base) [root@hadoop01 /bigdata/spark-3.2.4]# bin/spark-submit --master yarn --deploy-mode cluster --driver-memory 512m --executor-memory 512m --num-executors 2 --total-executor-cores 2 /bigdata/spark-3.2.4/examples/src/main/python/pi.py 10

客户端是无日志信息和结果输出的: 

4.5 两种模式总结 

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

Client 模式:学习测试时使用,生产不推荐(要用也可以,性能略低,稳定性略低)

  1. Driver 运行在 Client上,和集群的通信成本高
  2. Driver 输出结果会在客户端显示

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

  1. Driver 程序在 YARN 集群中,和集群的通信成本低
  2. Driver 输出结果不能在客户端显示
  3. 该模式下 Driver 运行 ApplicattionMaster 这个节点上,由 Yarn 管理,如果出现问题,yarn 会重启 ApplicattionMaster(Driver) 

五、两种模式详细流程 

5.1 Client 模式 

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

具体流程步骤如下:

  1. Driver 在任务提交的本地机器上运行,Driver 启动后会和 ResourceManager 通讯申请启动 ApplicationMaster;
  2. 随后 ResourceManager 分配 Container,在合适的 NodeManager 上启动ApplicationMaster,此时的 ApplicationMaster 的功能相当于一个 ExecutorLaucher,只负责向 ResourceManager 申请 Executor 内存;
  3. ResourceManager 接到 ApplicationMaster 的资源申请后会分配 Container,然后ApplicationMaster 在资源分配指定的 NodeManager 上启动 Executor 进程;
  4. Executor 进程启动后会向 Driver 反向注册,Executor 全部注册完成后 Driver 开始执行 main函数;
  5. 之后执行到 Action 算子时,触发一个 Job,并根据宽依赖开始划分 Stage,每个 Stage 生成对应的 TaskSet,之后将 Task 分发到各个 Executor 上执行。 

5.2 Cluster 模式 

        在 YARN Cluster 模式下,Driver 运行在 NodeManager Contanier 中,此时 Driver 与 AppMaster 合为一体,示意图如下:

具体流程步骤如下:

  1. 任务提交后会和 ResourceManager 通讯申请启动 ApplicationMaster;
  2. 随后 ResourceManager 分配 Container,在合适的 NodeManager 上启动 ApplicationMaster,此时的 ApplicationMaster 就是 Driver;
  3. Driver 启动后向 ResourceManager 申请 Executor 内存,ResourceManager 接到ApplicationMaster 的资源申请后会分配 Container,然后在合适的 NodeManager 上启动Executor 进程;
  4. Executor 进程启动后会向 Driver 反向注册;
  5. Executor 全部注册完成后 Driver 开始执行 main 函数,之后执行到 Action 算子时,触发一个 job,并根据宽依赖开始划分 stage,每个 stage 生成对应的 taskSet,之后将 task 分发到各个 Executor 上执行。

上一篇文章:Spark-3.2.4 高可用集群安装部署详细图文教程_Stars.Sky的博客-CSDN博客 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1012354.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

首发悬赏算命测算源码

可以用二维码收款 可以直接拿来运营吸金! 用户可以通过发布悬赏赏金算命,也可以通过升级发布测算任务来吸金 安装教程: 测试环境:php5.6apache2.4mysq5.6 安装: 1.源码解压到根目录 修改 \Application\Common\Co…

学习Kotlin看哪些书?【赠书活动|第八期《深入实践Kotlin元编程》】

文章目录 图书简介01 《深入实践Kotlin元编程》02 《Spring Boot学习指南》03 《Kotlin编程实战》 抽奖方式 与Java一样,Kotlin也是用于Android应用程序开发的编程语言,是Android官方支持的第二种编程语言。 2016年Kotlin正式发布,在Android“…

【Flowable】任务监听器(五)

前言 之前有需要使用到Flowable,鉴于网上的资料不是很多也不是很全也是捣鼓了半天,因此争取能在这里简单分享一下经验,帮助有需要的朋友,也非常欢迎大家指出不足的地方。 一、监听器 在Flowable中,我们可以使用监听…

怎样下载和安装HBuilder软件?【附HBuilder快捷键】

HBuilder是一款深度集成Eelipse的IDE编辑器,但其主要集中在Web前端的开发,不能进行Java等后台开发。HBuilder提供了对JavaScrijpt、jQuery、HTML5、MUI等语法的提示功能,同时包含很多快捷键,让前端开发更加便捷。 访问HBuilder官…

全量数据采集:不同网站的方法与挑战

简介 在当今数字化时代中,有数据就能方便我们做出很多决策。数据的获取与分析已经成为学术研究、商业分析、战略决策以及个人好奇心的关键驱动力。本文将分享不同网站的全量数据采集方法,以及在这一过程中可能会遇到的挑战。 部分全量采集方法 1. 撞店…

1500*B. The Walkway(贪心规律)

解析: 把每个区间段分成左闭右开区间,我们可以观察到,每个区间的饼干数量为 ( r - l ) / d 上取整。 所以先计算不删除某个点的饼干总和init,然后遍历所有点,将这个点删除。所以删除某个点后剩余数量为: 找…

WOODWARD 5466-258 输入快速实施高效的闭环控制

WOODWARD 5466-258 输入快速实施高效的闭环控制 Malvern Instruments 增强了 Link II 软件包,可将多个分析仪集成到一个自动化控制平台中。最新的开发将 Malvern Link II 的优势扩展到该公司的 Mastersizer 和 Zetasizer 分析仪系列,简化了它们在过…

二蛋赠书二期:《Python机器学习项目实战》

文章目录 前言活动规则参与方式本期赠书《Python机器学习项目实战》作者介绍内容简介读者对象获奖名单 结语 前言 大家好!我是二蛋,一个热爱技术、乐于分享的工程师。在过去的几年里,我一直通过各种渠道与大家分享技术知识和经验。我深知&am…

EMQX Enterprise 5.2 发布:Flow 设计器,Amazon Kinesis,Azure Event Hubs

EMQX Enterprise 5.2.0 版本现已正式发布! 新版本带来了一系列重磅更新,最令人瞩目的是可拖拽的可视化 Flow 设计器,它可以帮助企业快速创建、测试和部署数据集成。同时,我们新增了对 Amazon Kinesis 和 Azure Event Hubs 的支持…

Python pip更换清华源镜像

Python pip更换清华源镜像 命令安装配置安装其它镜像 在安装Python库时使用清华源镜像是为了改善库的下载速度和稳定性地址:https://pypi.tuna.tsinghua.edu.cn/simple 命令安装 安装命令: pip install 包名 -i https://pypi.tuna.tsinghua.edu.cn/simp…

Ubuntu使用System.Drawing.dll报错DllNotFoundException: libgdiplus.so.0

在Windows上开发的程序使用了System.Drawing.dll,放到Ubuntu上报错 解决方法:在Ubuntu上安装libgdiplus即可。 命令:sudo apt install libgdiplus 成功!

huggingface.co 下载模型文件,死活找不到文件,也没报其他错误。原来是多了个%号

这样写,就没问题: snapshot_download(local_dir/content/drive/MyDrive/chatRWKV/models/,repo_id"BlinkDL/rwkv-4-raven", allow_patterns"RWKV-4-Raven-3B-v12-Eng49%-Chn49%-Jpn1%-Other1%-20230527-ctx4096.pth") 但是这个文件…

高电压+大电流 IGBT静态参数测试解决方案

近年来IGBT成为电力电子领域中尤为瞩目的电力电子器件,并得到越来越广泛的应用,那么IGBT的测试就变的尤为重要了。lGBT的测试包括静态参数测试、动态参数测试、功率循环、HTRB可靠性测试等,这些测试中最基本的测试就是静态参数测试。 IGBT静态参数主要包含:栅极-发射极阈值电压…

S7-1200PLC硬件中断编程应用(VN积分法计算实时卷径)

VN积分法计算实时卷径的算法原理请参考下面文章链接: VN积分法卷径计算FB(SCL代码)_RXXW_Dor的博客-CSDN博客卷径计算的其他方法请参看专栏的相关文章,链接如下:卷径计算(V/N法)_RXXW_Dor的博客-CSDN博客。https://rxxw-control.blog.csdn.net/article/details/131612206PL…

前端JavaScript深拷贝与浅拷贝

🎬 岸边的风:个人主页 🔥 个人专栏 :《 VUE 》 《 javaScript 》 ⛺️ 生活的理想,就是为了理想的生活 ! 目录 引言 1. 深拷贝的实现 1.1 基本类型和特殊类型的处理 1.2 处理循环引用 1.3 性能优化 1.4 完整的深拷贝实现示…

MES系统成为工业4.0首选,制造业真正数字化车间你看过吗?

在日益激烈的市场竞争中,MES管理系统已经成为企业提升生产效率、降低成本、提高竞争力的关键。通过MES管理系统实现数据集成和分析,能够对产品制造过程的各个环节进行可视化控制,从设计、制造、质量、物流等环节全面掌控信息,实现…

螺旋折线(找规律 + 准确取点优化分析 + 普通思路)【包含详细的思考过程】

螺旋折线 文章目录 螺旋折线前言题目描述题目分析优化思路知识点补充【曼哈顿距离】代码未优化思路【笨方法】 前言 在写完题目查看题解的时候,被acwing大佬的思路所震撼,所以按照自己的理解将 大佬的思路复刻一遍展现给大家,同时丰富了内容…

彩虹医疗器械彩超、内窥镜维修技能学习

近几年随着医疗行业的快速发展,医疗器械的需求量不断增加,同时对医疗器械的维修和保养需求也在不断增长随着医疗技术的不断进步,新型、复杂的医疗器械不断涌现,这对维修技术提出了更高的要求。加强技术研发是必经之路,…

Element Plus中Cascader 级联选择器(选择任意一级选项 - 更改下拉框选中方式)

组件原始选中&#xff1a;选择文字前面的单选按钮 现在更改为&#xff1a;隐藏单选按钮&#xff0c;点击文字进行选中 ① 给弹出内容的自定义类名(popper-class)&#xff1a; <el-cascader v-model"areaValue":options"areaOptions" :props"areaP…

算法刷题 week2

目录 week21. 二维数组中的查找题目题解(单调性扫描) O(nm) 2.替换空格题目题解(线性扫描) O(n)(双指针扫描) O(n) 3.从尾到头打印链表题目题解(遍历链表) O(n) week2 1. 二维数组中的查找 题目 题解 (单调性扫描) O(nm) 核心在于发现每个子矩阵右上角的数的性质&#xff1…