Spark中yarn模式两种提交任务方式

发布时间:2021-09-14 14:57:54 作者:chen
来源:亿速云 阅读:189
# Spark中YARN模式两种提交任务方式

## 一、YARN模式概述

Apache Spark作为通用的大数据处理框架,可以与多种资源管理器集成,其中YARN(Yet Another Resource Negotiator)是Hadoop生态系统中的核心资源调度器。在YARN模式下运行Spark任务时,用户可以选择两种不同的提交方式:**client模式**和**cluster模式**,这两种方式在任务调度、资源分配和运行机制上有显著差异。

## 二、YARN模式架构基础

### 1. YARN核心组件
- **ResourceManager (RM)**: 全局资源调度器
- **NodeManager (NM)**: 单个节点上的资源管理者
- **ApplicationMaster (AM)**: 应用级别的协调者

### 2. Spark与YARN交互流程
1. 客户端提交应用到RM
2. RM分配容器启动AM
3. AM向RM申请资源
4. NM启动Executor进程

## 三、Client模式详解

### 1. 运行机制
```bash
spark-submit --master yarn --deploy-mode client ...

特点: - Driver程序运行在提交任务的客户端机器上 - ApplicationMaster仅负责资源申请 - 客户端必须保持在线直到作业完成

2. 工作流程示意图

graph LR
    Client[Client进程] -->|1.提交应用| RM
    RM -->|2.启动AM| AM
    AM -->|3.申请资源| RM
    RM -->|4.分配容器| NM
    NM -->|5.启动Executor| Executor
    Executor -->|6.注册| Client

3. 典型应用场景

4. 优缺点分析

优势: - 直接获取任务输出和日志 - 便于调试和交互 - 启动速度相对较快

劣势: - 客户端必须保持网络连接 - 客户端资源瓶颈可能影响任务 - 不适合生产环境长期运行任务

四、Cluster模式详解

1. 运行机制

spark-submit --master yarn --deploy-mode cluster ...

特点: - Driver程序运行在YARN集群的某个容器内 - ApplicationMaster实际就是Driver - 客户端提交后即可断开连接

2. 工作流程示意图

graph LR
    Client -->|1.提交应用| RM
    RM -->|2.启动AM/Driver| AM
    AM -->|3.申请资源| RM
    RM -->|4.分配容器| NM
    NM -->|5.启动Executor| Executor
    Executor -->|6.注册| AM

3. 典型应用场景

4. 优缺点分析

优势: - 客户端可随时断开 - 更好的资源隔离性 - 适合生产环境

劣势: - 调试输出获取不便 - 启动延迟稍高 - 需要额外配置日志收集

五、两种模式对比分析

对比维度 Client模式 Cluster模式
Driver位置 客户端机器 YARN容器内
客户端要求 必须保持在线 可断开连接
日志获取 直接输出到控制台 需通过YARN日志聚合查看
资源占用 占用客户端资源 完全使用集群资源
适用场景 开发/调试/交互式 生产环境/长期任务
失败处理 客户端崩溃则任务失败 支持自动重试

六、配置参数详解

1. 通用关键参数

--num-executors 10   # 执行器数量
--executor-memory 4G # 每个执行器内存
--executor-cores 2   # 每个执行器核心数

2. 模式特定参数

Client模式

--driver-memory 2G   # 客户端Driver内存

Cluster模式

--driver-memory 2G   # YARN容器内Driver内存
--driver-cores 1     # Driver核心数

3. 资源配置建议

七、实战示例

1. Client模式提交Python任务

spark-submit \
--master yarn \
--deploy-mode client \
--executor-memory 4G \
--num-executors 10 \
/path/to/pi.py 1000

2. Cluster模式提交Jar包

spark-submit \
--master yarn \
--deploy-mode cluster \
--class org.apache.spark.examples.SparkPi \
--executor-memory 4G \
--num-executors 5 \
/path/to/examples.jar 1000

八、常见问题解决方案

1. 资源申请失败

2. 日志查看方法

# 获取YARN应用ID
yarn application -list

# 查看完整日志
yarn logs -applicationId <app_id>

3. 模式选择决策树

是否需要实时监控输出?
是 → Client模式
否 → 客户端是否稳定?
     是 → Cluster模式
     否 → Cluster模式

九、高级调优技巧

  1. 动态资源分配
spark.dynamicAllocation.enabled=true
spark.shuffle.service.enabled=true
  1. Executor优化
  1. 网络调优
spark.reducer.maxSizeInFlight=48m
spark.shuffle.io.retryWait=60s

十、总结与最佳实践

  1. 开发阶段:优先使用client模式便于调试
  2. 生产环境:必须使用cluster模式保证可靠性
  3. 资源分配:遵循”多个小Executor”优于”少量大Executor”原则
  4. 监控维护:配置YARN日志聚合便于后期排查问题

随着Spark和YARN的版本迭代,建议定期关注官方文档获取最新优化建议,特别是在安全控制和资源隔离方面的增强特性。 “`

注:本文实际约1800字,包含了技术原理、实践示例和可视化图表。如需扩展特定部分或添加更多案例细节,可以进一步补充以下内容: 1. 安全认证配置细节 2. Kerberos环境下的特殊处理 3. 与K8s模式的对比分析 4. 具体性能测试数据对比

推荐阅读:
  1. Spark提交任务
  2. Spark on yarn

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

yarn spark

上一篇:PHP5.0对象模型的属性和方法介绍

下一篇:如何使用ASP.NET 4的自动启动特性

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》