Hadoop YARN:从MapReduce1.0的缺陷到资源调度优化

0 下载量 165 浏览量 更新于2024-08-28 收藏 300KB PDF 举报
Hadoop-YARN是Hadoop框架在Hadoop 2.0版本中对MapReduce 1.0进行的重要改进,旨在解决原有的资源管理和任务调度中存在的问题。在MapReduce 1.0中,主要缺陷体现在以下几个方面: 1. **单点故障**:原有的JobTracker是中心化的,一旦这个节点出现问题,可能导致整个系统无法正常运行,存在较高的故障风险。 2. **资源负载不均衡**:JobTracker承担了过多职责,如任务管理和资源分配,这使得在任务增多时,尤其是当节点数量达到4000个时,内存消耗过大,可能导致性能瓶颈和资源浪费。 3. **内存管理不足**:MapReduce 1.0的资源分配策略过于简单,仅基于MapReduce任务的数量,而不考虑CPU和内存的实际需求,易引发内存溢出问题。 4. **资源划分不合理**:强制定义了slot的概念,如Mapslot和Reduceslot,这种硬性划分限制了系统的灵活性,可能导致资源利用率不高。 在Hadoop 2.0引入的YARN架构中,MapReduce的功能被分解为两个独立的部分:计算框架和资源管理调度框架。资源管理调度功能独立出来后,形成了ResourceManager(RM),它是一个全局的资源调度器,包括调度器和应用程序管理器两部分。 - **ResourceManager (RM)**:作为核心组件,RM负责整个集群的资源管理和分配,通过调度器将资源以容器的形式分配给应用程序。调度器支持多种策略,如根据数据位置进行就近计算,优化资源利用。同时,RM允许用户自定义调度器以满足特定需求。 - **Scheduler**:负责根据应用程序的需求和资源可用性,决定如何分配容器,确保资源的有效利用。 - **Container**:动态资源分配单元,封装了CPU、内存、磁盘等资源,为每个应用程序设置资源上限,避免过度消耗。 - **ApplicationMaster (AM)**:在YARN上运行的MapReduce 2.0版本中,AM负责向RM申请资源,并分配给其内部任务,同时进行任务调度和容错管理。 - **NodeManager**:负责单个节点的资源管理,接收来自RM和AM的命令,执行具体的资源分配操作。 通过这种方式,Hadoop-YARN实现了计算框架和资源管理的解耦,提高了系统的稳定性和资源利用率,使得Hadoop能够更好地适应大规模分布式计算环境的需求。同时,YARN的设计也为其他分布式计算框架和定制化调度策略提供了灵活性。