Yarn 概念

Yarn 架构

1、mr v1 的缺陷:
扩展性受限
单点故障
难以支持mr之外的计算
多计算框架各自为战,数据共享困难
-mr:离线计算框架
-storm:实时计算框架
-spark:内存计算框架

hadoop 1 hadoop2:
hadoop 2.0 分支:
hdfs: nn federation。ha
mr:运行在 yarn 上的mr
yarn:资源调度

2、resourcemananger
-处理客户端请求
-启动 applicationMaster
-启动nodemanager
-资源分配与调度
nodemanager
–单个节点上的资源
–处理来自resourcemanager 的命令
–处理来自applicationMaster的命令
appmaster:
–数据切分
–为应用何曾需申请资源,并分配给内部任务
–任务监控与容错
3、容错:
–resourcemanager
–存在单点故障
–2.x 基于zookeeper 实现 ha
–nodemanager
–任务失败,rm 将失败任务告诉给am
–am 决定 如何处理失败任务
appmaster:
–失败后,由 rm 负责重启,am 需要处理内部 任务的容错问题
4、调度:
双层调度框架
rm 将资源分配给am
am 将资源进一步分配给各个task
基于子预案预留的调度策略
资源不够时,回味task 预留,知道资源充足
与 ‘’‘all or nothing’ 策略不同(apache messos)
多类型资源调度
–采用DRF 算法
–目前支持CPU 和内存两种资源
提供多种资源调度器
–FIFO:任务先进先出(时间,名称等先后)
–fair scheduler : 公平调度 器
–容量调度器
–支持资源按比例分匹配
–支持层级队列划分
–支持资源抢占
5、隔离方案:
–支持内存和cpu 两种资源隔离
–内存隔离
基于线程监控的方案
基于cgroup 的方案
–CPU 隔离
默认不隔离
6、支持的语义:
–请求某个特定节点或机架上的特定资源
–将某些节点加入黑名单,不再为自己分配这些节点上的资源
–请求会换某些资源
不支持的语义:
请求任意节点或机架上的特定资源
超细粒资源
7、运行在yarn 上的框架:mr、(DAG计算框架)tez、storm、spark

8、参考官网配置yran HA
配置 resourcemanager restart
配置nodemanager restart

### Spark on YARN 工作原理及核心概念 #### 1. Spark on YARN 的工作原理 Spark on YARN 是一种将 Spark 应用程序运行在 Hadoop YARN 集群上的模式。在这种模式下,YARN 负责资源管理和调度,而 Spark 则专注于计算任务的执行。其主要流程可以概括为以下几个阶段: - **应用程序提交**:用户通过 `spark-submit` 命令提交 Spark 应用程序到 YARN 集群中[^4]。 - **ResourceManager 交互**:Driver 程序(本地启动或集群内启动)与 YARN 的 ResourceManager 进行通信,申请资源以启动 ApplicationMaster (AM)。 - **ApplicationMaster 启动**:ResourceManager 分配一个 Container 给 AM,并在对应的 NodeManager 上启动 AM。此时,AM 只负责向 ResourceManager 申请资源[^3]。 - **Executor 分配**:AM 向 ResourceManager 请求更多的 Containers 来启动 Executor 实例。这些 Executors 执行具体的计算任务。 - **反向注册**:当 Executors 成功启动后,它们会反向注册到 Driver 程序,从而完成整个任务的初始化过程[^3]。 - **任务执行**:Driver 程序开始执行主函数(main function),并分配任务给各个 Executor 执行。 #### 2. 核心概念 - **RDD(Resilient Distributed Dataset)**:这是 Spark 的核心抽象,表示弹性分布式数据集。RDD 支持高效的容错机制和分布式计算能力,是 Spark Core 的基础[^1]。 - **ApplicationMaster (AM)**:在 Spark on YARN 模式下,AM 是负责与 YARN 协调资源的核心组件。它向 ResourceManager 申请资源,并管理所有 Executor 的生命周期[^3]。 - **Container**:YARN 中的资源单位,表示一个隔离的运行环境,包含一定的 CPU 和内存资源。每个 Executor 或 AM 都运行在一个或多个 Containers 中。 - **Driver Program**:驱动程序,负责解析用户的逻辑代码,生成执行计划,并协调整个 Spark 应用程序的运行。在 Cluster 模式下,Driver 运行在 YARN 集群内部;而在 Client 模式下,Driver 在本地运行[^2]。 - **Executor**:运行在 YARN 的 NodeManager 上,负责执行具体的任务(Task)。每个 Executor 包含一定数量的核心(Cores)和内存资源,用于处理分配的任务[^3]。 #### 3. Spark on YARN 的两种部署模式 - **Client Mode**:Driver 程序运行在客户端机器上,适合调试和开发环境。这种模式下,Driver 和客户端直接交互,便于日志查看和调试[^2]。 - **Cluster Mode**:Driver 程序运行在 YARN 集群内部,适合生产环境。这种模式下,Driver 和 AM 共同运行在集群中,提高了系统的可用性和可靠性[^2]。 #### 4. 内存管理与参数调优 Spark on YARN 的内存管理涉及多个层面,包括 YARN 层面的资源配置、Spark 层面的内存分配策略等。以下是一些关键参数: - `--executor-memory`:指定每个 Executor 的内存大小。 - `--executor-cores`:指定每个 Executor 使用的核心数。 - `--num-executors`:指定启动的 Executor 数量。 - `spark.yarn.executor.memoryOverhead`:指定每个 Executor 的额外开销内存。 通过合理配置这些参数,可以优化 Spark 应用程序的性能,减少资源浪费。 ```python # 示例:使用 spark-submit 提交 Spark on YARN 作业 spark-submit \ --class com.example.MyApp \ --master yarn \ --deploy-mode cluster \ --executor-memory 4g \ --executor-cores 2 \ myapp.jar ``` ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值