当前位置: 首页 > news >正文

什么是SparkONYarn模式?

(一)什么是SparkONYarn模式
Spark on YARN(Yet Another Resource Negotiator)是 Spark 框架在 Hadoop 集群中运行的一种部署模式,它借助 Hadoop YARN 来管理资源和调度任务。

架构组成

ResourceManager:作为 YARN 的核心,负责整个集群的资源管理和调度。它会接收来自各个应用程序的资源请求,并根据集群资源的使用情况进行合理分配。

NodeManager:部署在集群中的每个节点上,负责管理该节点上的资源使用情况,监控容器的运行状态,并且与 ResourceManager 保持通信,汇报节点的资源使用信息。

ApplicationMaster:在 Spark 应用启动时,YARN 会为其分配一个 ApplicationMaster。它的主要职责是向 ResourceManager 申请资源,并且与 NodeManager 协作,启动和管理 Spark 的 Executor 进程。

Spark Driver:负责执行用户编写的 Spark 应用程序代码,将其转化为一系列的任务,并调度这些任务到各个 Executor 上执行。

Executor:运行在 NodeManager 管理的容器中,负责具体执行 Spark 任务,并将执行结果返回给 Driver。

(二)运行流程
提交应用:用户通过命令行或者其他方式向 YARN 提交 Spark 应用程序。

启动 ApplicationMaster:ResourceManager 接收到应用程序的请求后,会在集群中的某个节点上启动一个 ApplicationMaster 进程。

申请资源:ApplicationMaster 向 ResourceManager 注册,并根据应用程序的需求申请资源。

启动 Executor:ResourceManager 根据资源分配情况,通知相应的 NodeManager 启动 Executor 进程。

任务执行:Spark Driver 将任务分发给各个 Executor 执行,Executor 执行完任务后将结果返回给 Driver。

应用结束:当所有任务执行完毕后,ApplicationMaster 向 ResourceManager 注销,释放占用的资源。

(三)模式分类
Client 模式:Driver 运行在客户端进程中,客户端会与 ApplicationMaster 和 Executor 进行通信。这种模式适用于交互式应用,例如使用 Spark Shell 进行数据探索和分析。在这种模式下,用户可以在客户端直接看到 Driver 的输出和日志信息,方便调试和监控应用程序的运行状态。

Cluster 模式:Driver 运行在集群中的某个节点上,由 ApplicationMaster 负责管理。这种模式适用于生产环境中的长时间运行的应用程序。在 Cluster 模式下,客户端提交应用程序后可以断开连接,应用程序会在集群中独立运行,不受客户端的影响。

(四)配置集群
1.上传并解压spark-3.1.2-bin-hadoop3.2.tgz,重命名解压之后的目录为spark-yarn。对应的命令是:tar -zxvf spark-3.3.1-bin-hadoop3.tgz -C /opt/module

2. 修改一下spark的环境变量,/etc/profile.d/my_env.sh 。

# spark 环境变量
export SPARK_HOME=/opt/module/spark-yarn
export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin

同步给其他的设备: xsync  /etc/profile.d/

3.修改hadoop的配置。/opt/module/hadoop-3.1.3/etc/hadoop/yarn-site.xml。因为测试环境虚拟机内存较少,防止执行过程进行被意外杀死,添加如下配置。

<!--是否启动一个线程检查每个任务正使用的物理内存量,如果任务超出分配值,则直接将其杀掉,默认是true -->

<property>

     <name>yarn.nodemanager.pmem-check-enabled</name>

     <value>false</value>

</property>

<!--是否启动一个线程检查每个任务正使用的虚拟内存量,如果任务超出分配值,则直接将其杀掉,默认是true -->

<property>

     <name>yarn.nodemanager.vmem-check-enabled</name>

     <value>false</value>

</property>

把这个设置分发到其他节点。使用xsync /opt/module/hadoop-3.1.3/etc/hadoop/同步一下。

4.修改spark配置。 把三个文件的名字重新设置一下。

workers.tempalte 改成 workers,spark-env.sh.template 改成 spark-env.sh,

spark-defaults.conf.template 改成 spark-defaults.conf。

然后,在workers文件中添加

hadoop100

hadoop101
hadoop102

在spark-env.sh文件中,添加如下

SPARK_MASTER_HOST=hadoop100

SPARK_MASTER_PORT=7077

HADOOP_CONF_DIR=/opt/module/hadoop-3.1.3/etc/hadoop

YARN_CONF_DIR=/opt/module/hadoop-3.1.3/etc/hadoop
export SPARK_HISTORY_OPTS="-Dspark.history.fs.logDirectory=hdfs://hadoop100:8020/directory"

在spark-defaults.conf文件中,添加如下

spark.eventLog.enabled true
spark.eventLog.dir hdfs://hadoop100:8020/directory
spark.yarn.historyServer.address=hadoop100:18080
spark.history.ui.port=18080

5.同步配置文件到其他设备。xsync /opt/module/spark-yarn/sbin

相关文章:

  • 喜报!3N获批首个创新医疗器械三类证—「镜净GP」硬性接触镜护理消毒仪
  • JDK 命令行工具大全与学习方法总结 —— 从帮助文档到高效实践
  • 【2025.5.12】视觉语言模型 (更好、更快、更强)
  • 「Mac畅玩AIGC与多模态37」开发篇32 - 基于工作流的双插件信息整合与展示优化
  • QFileDialog文件选择框
  • vllm量化02—awq
  • 自定义分区器-基础
  • typeof运算符和深拷贝
  • js白屏检测与白屏的修正机制
  • Pomelo知识框架
  • fiftyone-dataset使用基础
  • 猫眼浏览器:简约安全,极速浏览
  • java基础:异常体系
  • 2025五一杭州西湖三天游
  • Linux - 基础指令
  • 没经过我同意,flink window就把数据存到state里的了?
  • Linux基础 -- SSH 流式烧录与压缩传输笔记
  • Windows避坑部署CosyVoice多语言大语言模型
  • elasticdump备份恢复
  • 内存泄漏系列专题分析之十四:高通相机CamX ION/dmabuf内存管理机制ImageBuffer之GrallocBuffer原理
  • 耗资10亿潮汕豪宅“英之园”将强拆?区政府:非法占用集体土地
  • 外国游客“在华扫货”热:“带空箱子到中国!”
  • 生态环境保护督察工作条例对督察对象和内容作了哪些规定?有关负责人答问
  • 科普|“小”耳洞也会引发“大”疙瘩,如何治疗和预防?
  • 中医的千年传承:网络科学描绘其演化之路|PNAS速递
  • 上海建筑领域绿色发展2025年工作要点发布