Hadoop 入门笔记—核心组件 YARN

2021年11月24日 阅读数:4
这篇文章主要向大家介绍Hadoop 入门笔记—核心组件 YARN,主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。

做者:幻好安全

来源:恒生LIGHT云社区markdown

基本概述

Apache YARN (Yet Another Resource Negotiator) 是 Hadoop 中的资源管理和做业调度系统, 在 Hadoop 2.x 时才被引入。网络

用户能够将各类服务框架部署在 YARN 上,由 YARN 进行统一地管理和资源分配。架构

Yarn在 Hadoop2.x 时才被推出,在 Hadoop1.x 时,主要由 MapReduce 进行资源分配,因为考虑到若是 MapReduce 在计算中挂掉了,那么资源调度也将中止工做,因而在新版本中将资源调度这部分功能剥离开,才有 Yarn。框架

yarn_architecture-1636888697252.gif

核心架构

Yarn 的主要架构分为四个部分:ResourceManager、NodeManager、ApplicationMaster、Container分布式

ResourceManager

  • ResourceManager 一般在独立的部署在一台机器做为应用运行,集群中只有一个,负责整个系统的资源管理和分配。
  • ResourceManager 主要由两个组件构成:调度器(Scheduler)和应用程序管理器(Applications Manager,ASM)。可以根据应用程序优先级、队列容量、数据位置等信息,作出决策,经过安全的、共享的、多租户的方式制定分配策略,调度集群资源。

NodeManager

  • NodeManager 是 YARN 集群中的每一个具体节点的管理者。主要负责该节点内全部容器的生命周期的管理,监视资源和跟踪节点健康。
  • NodeManager 主要用来处理来自ResourceManagerApplicationMaster的命令。

一个节点启动时,它会向 ResourceManager 进行注册并推送可用资源信息。在运行期,经过 NodeManager 和 ResourceManager 协同工做,这些信息会不断被更新并保障整个集群发挥出最佳状态。ide

ApplicationMaster

  • 在用户提交一个应用程序时,YARN 会启动一个轻量级的进程ApplicationMaster
  • ApplicationMaster 负责协调来自ResourceManager 的资源,并经过NodeManager 监视容器内资源的使用状况,同时还负责任务的监控与容错。

ApplicationMaster 将能将数据进行拆分,并根据应用的运行状态动态匹配资源需求,可以监控跟踪任务状态和进度,报告应用的进度信息。oop

Container

  • Container是 YARN 中的资源抽象,它封装了某个节点上的多维度资源,如内存、CPU、磁盘、网络等。
  • ApplicationMasterResourceManager 申请资源时,ResourceManagerApplicationMaster 返回的资源是用Container 表示的。
  • YARN 会为每一个任务分配一个Container,该任务只能使用该Container 中描述的资源。
  • ApplicationMaster 可在Container 内运行任何类型的任务。

工做流程

YARN 应用提交的整个工做流程:.net

  • 首先客户端提交任务到 YARN 上,ResourceManager 提交应用并请求一个ApplicationMaster 实例;
  • ResourceManager 会选择一个可运行的NodeManager,并在Container 中启动并运行ApplicationMaster 实例;
  • 启动中的ApplicationMasterResourceManager 注册本身,启动成功后与RM保持心跳。
  • ApplicationMasterResourceManager 发送请求,获取须要的Container 资源;
  • ApplicationMaster 经过获取到的Container 资源执行分布式计算。
  • 应用运行结束后,ApplicationMasterResourceManager 注销本身,并容许属于它的container 被收回。

总结

Yarn 主要在 Hadoop 体系中负责服务资源的调度分配,可以最大限度的利用机器资源,高效调配,达到资源利用的最大化。code