首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
01 | 大数据技术发展史:大数据的前世今生
02 | 大数据应用发展史:从搜索引擎到人工智能
03 | 大数据应用领域:数据驱动一切
04 | 移动计算比移动数据更划算
05 | 从RAID看垂直伸缩到水平伸缩的演化
06 | 新技术层出不穷,HDFS依然是存储的王者
07 | 为什么说MapReduce既是编程模型又是计算框架?
08 | MapReduce如何让数据完成一次旅行?
09 | 为什么我们管Yarn叫作资源调度框架?
10 | 模块答疑:我们能从Hadoop学到什么?
11 | Hive是如何让MapReduce实现SQL操作的?
12 | 我们并没有觉得MapReduce速度慢,直到Spark出现
13 | 同样的本质,为何Spark可以更高效?
14 | BigTable的开源实现:HBase
15 | 流式计算的代表:Storm、Flink、Spark Streaming
16 | ZooKeeper是如何保证数据一致性的?
17 | 模块答疑:这么多技术,到底都能用在什么场景里?
18 | 如何自己开发一个大数据SQL引擎?
19 | Spark的性能优化案例分析(上)
20 | Spark的性能优化案例分析(下)
21 | 从阿里内部产品看海量数据处理系统的设计(上):Doris的立项
22 | 从阿里内部产品看海量数据处理系统的设计(下):架构与创新
23 | 大数据基准测试可以带来什么好处?
24 | 从大数据性能测试工具Dew看如何快速开发大数据系统
25 | 模块答疑:我能从大厂的大数据开发实践中学到什么?
26 | 互联网产品 + 大数据产品 = 大数据平台
27 | 大数据从哪里来?
28 | 知名大厂如何搭建大数据平台?
29 | 盘点可供中小企业参考的商业大数据平台
30 | 当大数据遇上物联网
31 | 模块答疑:为什么大数据平台至关重要?
32 | 互联网运营数据指标与可视化监控
33 | 一个电商网站订单下降的数据分析案例
34 | A/B测试与灰度发布必知必会
35 | 如何利用大数据成为“增长黑客”?
36 | 模块答疑:为什么说数据驱动运营?
37 | 如何对数据进行分类和预测?
38 | 如何发掘数据之间的关系?
39 | 如何预测用户的喜好?
40 | 机器学习的数学原理是什么?
41 | 从感知机到神经网络算法
42 | 模块答疑:软件工程师如何进入人工智能领域?
当前位置:
首页>>
技术小册>>
从零开始学大数据
小册名称:从零开始学大数据
### 09 | 为什么我们管Yarn叫作资源调度框架? 在深入探讨Yarn(Yet Another Resource Negotiator,另一种资源协调者)为何被称为资源调度框架之前,我们首先需要理解Yarn在大数据生态系统中的位置和作用。Yarn是Hadoop 2.0版本中引入的一个关键组件,它标志着Hadoop从一个单一的大数据计算引擎,发展成为集存储、计算、资源管理为一体的完整大数据平台。这一变革不仅提升了Hadoop的可扩展性和灵活性,还促进了大数据技术的多元化发展。本章将详细解析Yarn的设计背景、架构原理、工作流程,以及为何它被视为资源调度框架的核心要素。 #### 一、Yarn的产生背景 在Hadoop 1.x版本中,MapReduce计算框架和分布式文件系统HDFS共同构成了Hadoop的核心。作业管理主要由JobTracker负责,它同时承担了资源管理和作业调度的双重职责。然而,这种设计存在诸多局限性: 1. **单点故障问题**:JobTracker是整个系统的单点故障源,一旦出现故障,整个集群的作业调度将受到影响。 2. **扩展性差**:随着集群规模的扩大,JobTracker需要处理的任务和资源请求急剧增加,导致性能瓶颈。 3. **资源利用率低**:由于JobTracker与TaskTracker之间的紧密耦合,使得资源分配不够灵活,难以适应多样化的计算需求。 为了克服这些限制,Hadoop 2.0引入了Yarn,将资源管理和作业调度分离成两个独立的组件:ResourceManager(RM)和ApplicationMaster(AM)。这一变革不仅提高了系统的稳定性和可扩展性,还使得Hadoop能够支持多种计算框架,如Spark、Tez、Storm等,从而构建了一个更加开放和灵活的大数据生态系统。 #### 二、Yarn的架构原理 Yarn的架构设计遵循了“依赖倒转原则”,即高层模块不应依赖于低层模块的具体实现,而应依赖于抽象接口。Yarn主要由ResourceManager、NodeManager、ApplicationMaster和Container四个核心组件构成: 1. **ResourceManager(RM)**: - 职责:作为全局的资源管理器,RM负责整个系统的资源管理和分配。它接收来自客户端的资源请求,并根据调度策略为应用程序分配资源。 - 组件:RM由调度器(Scheduler)和应用程序管理器(Applications Manager, ASM)组成。调度器根据容量、队列等限制条件,将系统中的资源分配给各个应用程序;ASM则负责应用程序的提交、监控和故障恢复。 2. **NodeManager(NM)**: - 职责:负责管理集群中每个节点上的资源。NM接收来自RM的资源分配指令,并在本地节点上启动和管理Container。 - 功能:NM定时向RM汇报本节点的资源使用情况和各个Container的运行状态,确保资源信息的实时性和准确性。 3. **ApplicationMaster(AM)**: - 职责:作为应用程序的代理,AM负责向RM申请资源,并根据应用程序的需求将资源分配给内部任务。AM还负责任务的监控和容错处理。 - 流程:每个应用程序在Yarn上运行时,都会启动一个对应的AM。AM首先向RM注册自己,并申请资源。获得资源后,AM会在相应的NodeManager上启动Container,并在其中运行应用程序的任务。 4. **Container**: - 定义:Container是Yarn中的资源抽象,它封装了节点上的多维度资源,如内存、CPU、磁盘等。每个Container都是独立的资源单元,用于运行特定的任务。 - 特点:Container是一个动态资源划分单位,其资源量根据应用程序的需求动态生成。Yarn通过轻量级资源隔离机制(如Cgroups)确保不同Container之间的资源隔离。 #### 三、Yarn的工作流程 Yarn的工作流程可以概括为以下几个步骤: 1. **应用程序提交**: - 客户端向ResourceManager提交应用程序,包括应用程序的配置信息、资源需求等。 2. **资源分配与ApplicationMaster启动**: - ResourceManager根据集群资源和调度策略,为应用程序分配第一个Container,并在其中启动ApplicationMaster。 - ApplicationMaster启动后,向ResourceManager注册自己,并开始申请后续的资源。 3. **资源申请与任务分发**: - ApplicationMaster采用轮询的方式向ResourceManager申请资源。 - ResourceManager根据调度策略分配资源,并通知相应的NodeManager启动Container。 - ApplicationMaster在获得资源后,将任务分发到对应的Container上运行。 4. **任务执行与监控**: - Container中的任务执行时,会向ApplicationMaster汇报自己的状态和进度。 - ApplicationMaster监控任务的执行情况,并在必要时进行容错处理。 5. **资源释放与应用程序结束**: - 当应用程序的所有任务都执行完成后,ApplicationMaster会向ResourceManager注销自己,并释放所有占用的资源。 #### 四、Yarn作为资源调度框架的优势 Yarn之所以被称为资源调度框架,主要基于以下几个方面的优势: 1. **统一资源管理**:Yarn通过ResourceManager实现了对集群资源的统一管理,为上层应用程序提供了一个统一的资源请求和分配接口。这使得不同计算框架能够共享集群资源,提高了资源利用率。 2. **灵活的资源调度**:Yarn内置了多种资源调度算法(如Fair Scheduler、Capacity Scheduler等),并支持用户自定义调度算法。这种灵活性使得Yarn能够根据实际需求进行资源分配,满足不同应用场景的需求。 3. **高可用性**:Yarn的架构设计遵循了高可用性原则,通过冗余部署和故障转移机制确保系统的稳定运行。即使在ResourceManager或NodeManager出现故障时,系统也能快速恢复并继续提供服务。 4. **多租户支持**:Yarn支持多租户环境,允许多个用户或应用程序同时运行在同一个集群上。通过资源隔离和配额管理机制,Yarn确保了不同租户之间的资源使用互不干扰。 5. **可扩展性**:Yarn的架构设计具有良好的可扩展性,能够支持大规模集群的部署和管理。随着集群规模的扩大,Yarn可以通过增加节点和优化调度策略来应对更高的计算需求。 综上所述,Yarn作为Hadoop生态系统中的资源调度框架,通过其独特的架构设计和工作流程,实现了对集群资源的统一管理、灵活调度和高效利用。它不仅支持多种计算框架的并发运行,还提高了系统的稳定性、可扩展性和多租户能力。因此,Yarn在大数据领域得到了广泛的应用和认可。
上一篇:
08 | MapReduce如何让数据完成一次旅行?
下一篇:
10 | 模块答疑:我们能从Hadoop学到什么?
该分类下的相关小册推荐:
云计算那些事儿:从IaaS到PaaS进阶(二)
部署kubernetes集群实战
从 0 开始学架构
云计算Linux基础训练营(下)
Ansible自动化运维平台
RPC实战与核心原理
云计算那些事儿:从IaaS到PaaS进阶(一)
分布式技术原理与算法解析
Web服务器Apache详解
构建可视化数据分析系统-ELK
RocketMQ入门与实践
Linux系统管理小册