什么是SparkONYarn模式

1. 什么是 Spark on YARN?

Spark on YARN 是 Apache Spark 的一种部署模式,允许 Spark 应用程序在 Hadoop YARN 集群上运行,充分利用 YARN 的资源管理和调度能力。这种模式将 Spark 与 Hadoop 生态深度集成,使企业能够在同一集群上统一管理批处理、流处理、交互式查询等多种工作负载。

2. 核心优势
  1. 资源统一管理

    • 与 Hadoop 共享集群资源,避免资源孤岛(如 MapReduce、Hive、Spark 可共存)。
    • YARN 根据工作负载动态分配资源,提高集群利用率。
  2. 简化运维

    • 依托 YARN 的高可用性(HA)和资源隔离机制,降低运维复杂度。
    • 支持与现有 Hadoop 集群无缝集成,无需额外部署集群管理器。
  3. 灵活的资源分配

    • 支持 内存 / CPU 细粒度控制 ,通过 spark-submit 参数调整资源分配。
    • 可配置多队列(如生产队列、测试队列),实现资源隔离。
  4. 丰富的调度策略

    • 继承 YARN 的调度器(容量调度器、公平调度器),满足不同业务需求。
3. 架构组件

Spark on YARN 的架构涉及三个核心组件:

  1. YARN 组件

    • ResourceManager (RM):全局资源管理器,负责分配集群资源。
    • NodeManager (NM):每个节点的代理,管理容器(Container)生命周期。
    • 调度器:如容量调度器(Capacity Scheduler)或公平调度器(Fair Scheduler)。
  2. Spark 组件

    • Driver:应用程序的主进程,负责调度任务。
    • Executor:运行在容器中的工作进程,执行具体计算任务。
  3. 通信流程

    • Spark 应用通过 spark-submit 向 YARN RM 提交请求。
    • RM 分配 Container 并启动 ApplicationMaster(Spark Driver)。
    • Driver 向 RM 注册并请求资源,然后与 NM 通信启动 Executor。
4. 部署模式

Spark on YARN 支持两种部署模式:

  1. Client 模式

    • Driver 运行在客户端

      • 适用于交互式应用(如 Spark Shell、Jupyter Notebook)。
      • Driver 在提交作业的客户端进程中运行,直接接收任务输出。
    • 提交命令

      bash

      复制代码
      spark-submit \
        --master yarn \
        --deploy-mode client \
        --num-executors 10 \
        --executor-memory 4g \
        my-app.jar
  2. Cluster 模式

    • Driver 运行在集群中

      • 适用于生产环境,避免客户端与集群长时间连接。
      • Driver 作为 YARN 中的一个 ApplicationMaster 运行,与客户端分离。
    • 提交命令

      bash

      复制代码
      spark-submit \
        --master yarn \
        --deploy-mode cluster \
        --num-executors 10 \
        --executor-memory 4g \
        my-app.jar
5. 资源配置参数

通过 spark-submitspark-defaults.conf 配置:

参数 说明
--num-executors 启动的 Executor 数量(默认 2)。
--executor-memory 每个 Executor 的内存大小(如 4g)。
--executor-cores 每个 Executor 的 CPU 核心数(默认 1)。
--driver-memory Driver 的内存大小(默认 1g)。
--queue 指定 YARN 队列名称(如 defaultprod)。
--conf spark.yarn.maxAppAttempts 应用最大重试次数(默认 2)。
--conf spark.yarn.executor.memoryOverhead 每个 Executor 的堆外内存(默认 executorMemory * 0.10)。
6. 典型应用场景
  1. 混合工作负载集群

    • 在同一 Hadoop 集群上同时运行 Spark、MapReduce、Hive 等作业。
  2. 企业级数据平台

    • 利用 YARN 的资源隔离特性,为不同部门分配专用队列(如财务、研发)。
  3. 大规模数据处理

    • 处理 PB 级数据,通过 YARN 动态调整资源应对峰值负载。
7. 监控与故障排查
  1. YARN Web UI

    • http://resourcemanager:8088:查看所有应用状态、资源使用情况。
  2. Spark Web UI

    • Driver 运行时的 Web UI(默认端口 4040): plaintext

      复制代码
      http://driver-node:4040  # Client 模式
      http://application-master-node:4040  # Cluster 模式
  3. 日志查看

    • YARN 应用日志: bash

      复制代码
      yarn logs -applicationId <application_id>
8. 优缺点
优点 缺点
与 Hadoop 生态无缝集成 依赖 YARN,增加部署复杂度
资源利用率高 任务启动延迟较高(需等待 Container 分配)
支持高可用性 需深入理解 YARN 配置和调优
多租户资源隔离 对网络和磁盘 I/O 敏感
9. 配置步骤
  1. 确保 YARN 正常运行

    • 启动 HDFS 和 YARN: bash

      复制代码
      start-dfs.sh
      start-yarn.sh
  2. 配置 Spark

    • 编辑 $SPARK_HOME/conf/spark-env.sh

      bash

      复制代码
      export HADOOP_CONF_DIR=/path/to/hadoop/etc/hadoop  # Hadoop 配置目录
  3. 提交作业

    bash

    复制代码
    spark-submit \
      --master yarn \
      --deploy-mode cluster \
      --class org.apache.spark.examples.SparkPi \
      $SPARK_HOME/examples/jars/spark-examples_*.jar \
      100
相关推荐
AIsocial1 天前
Spark Ads怎么用?自然流量测试内容,再用付费流量放大
spark·tiktok
IT毕设梦工厂2 天前
计算机毕业设计选题推荐:基于大数据的印度上市公司财务指标数据可视化分析|毕业设计选题|计算机毕设|选题推荐|毕设指导|项目定制|源码|高质量项目
大数据·hadoop·python·信息可视化·spark·课程设计·大数据毕设项目
BYSJMG2 天前
计算机毕业设计选题推荐:基于大数据的水质多指标关联分析与可视化的设计与实现,Spark 加 K-Means 做水质分群
大数据·hadoop·信息可视化·数据分析·spark·kmeans·课程设计
计算机源码社2 天前
【大数据项目实战】基于Python数据挖掘的新能源车充电行为关联风险分析研究-基于Hadoop+Spark的电动汽车故障多维数据可视化
大数据·hadoop·python·数据挖掘·spark·毕业设计·课程设计
HanhahnaH2 天前
Spark 任务如何实现幂等?
大数据·分布式·spark
乌恩大侠3 天前
【Sionna】docker build ubuntu cuda
ubuntu·docker·容器·spark·o-ru·ai-ran
BYSJMG4 天前
计算机毕设选题推荐:基于大数据的公共交通运营数据分析与可视化,Spark+K-Means聚类城市运营模式
大数据·hadoop·信息可视化·数据分析·spark·kmeans·课程设计
绿算技术5 天前
Solidigm联合绿算技术共同发布《面向 SOHO AI 推理的存储扩展方案》技术白皮书
人工智能·科技·算法·架构·spark
阿里云大数据AI技术5 天前
EMR Serverless Spark:CPU + GPU 异构计算使用指南
人工智能·spark·gpu
BYSJMG6 天前
计算机毕设选题做什么好?基于大数据的用户美食数据分析与可视化,PySpark预处理+ECharts大屏,含Isolation Forest异常检测算法
大数据·python·信息可视化·数据分析·spark·课程设计·美食