YARN 代表“又一个资源谈判者”。它是在 Hadoop 2.0 中引入的,以消除 Hadoop 1.0 中存在的 Job Tracker 的瓶颈。 YARN 在推出时被描述为“重新设计的资源管理器”,但现在已经发展成为用于大数据处理的大规模分布式操作系统。
YARN 架构基本上将资源管理层与处理层分开。在 Hadoop 1.0 版本中,Job tracker 的职责在资源管理器和应用程序管理器之间拆分。
YARN 还允许不同的数据处理引擎,如图形处理、交互处理、流处理以及批处理来运行和处理存储在 HDFS(Hadoop 分布式文件系统)中的数据,从而使系统更加高效。通过其各种组件,它可以动态分配各种资源并调度应用程序处理。对于大容量数据处理,非常有必要正确管理可用资源,以便每个应用程序都可以利用它们。
YARN 特性: YARN 由于以下特性而广受欢迎——
- 可扩展性: YARN 架构的资源管理器中的调度器允许 Hadoop 扩展和管理数千个节点和集群。
- 兼容性: YARN 支持现有的 map-reduce 应用程序而不会中断,因此它也与 Hadoop 1.0 兼容。
- 集群利用率:由于 YARN 支持 Hadoop 中集群的动态利用率,因此可以优化集群利用率。
- 多租户:它允许多个引擎访问,从而为组织提供多租户的好处。
Hadoop YARN 架构
YARN 架构的主要组件包括:
- 客户端:它提交 map-reduce 作业。
- 资源管理器:它是 YARN 的主守护进程,负责所有应用程序之间的资源分配和管理。每当它接收到处理请求时,它就将它转发给相应的节点管理器,并相应地为完成请求分配资源。它有两个主要组成部分:
- 调度器:它根据分配的应用程序和可用资源进行调度。它是一个纯粹的调度程序,意味着它不执行其他任务,例如监视或跟踪,并且不保证在任务失败时重新启动。 YARN调度器支持Capacity Scheduler、Fair Scheduler等插件对集群资源进行分区。
- 应用管理器:负责接受应用并与资源管理器协商第一个容器。如果任务失败,它还会重新启动应用程序管理器容器。
- 节点管理器:它负责管理 Hadoop 集群上的单个节点,并管理应用程序和工作流以及该特定节点。它的主要工作是跟上节点管理器。它监视资源使用情况,执行日志管理并根据资源管理器的指示杀死容器。它还负责创建容器进程并根据 Application master 的请求启动它。
- Application Master:应用程序是提交给框架的单个作业。应用管理器负责与资源管理器协商资源,跟踪单个应用的状态和监控进度。应用程序主机通过发送包含应用程序运行所需的一切内容的容器启动上下文(CLC)从节点管理器请求容器。应用程序启动后,它会不时向资源管理器发送健康报告。
- 容器:它是单个节点上的物理资源的集合,例如 RAM、CPU 内核和磁盘。容器由容器启动上下文(CLC)调用,CLC 是包含环境变量、安全令牌、依赖项等信息的记录。
Hadoop YARN 中的应用工作流:
- 客户提交申请
- Resource Manager 分配一个容器来启动Application Manager
- 应用程序管理器向资源管理器注册自己
- 应用程序管理器从资源管理器协商容器
- 应用管理器通知节点管理器启动容器
- 应用程序代码在容器中执行
- 客户端联系资源管理器/应用程序管理器以监控应用程序的状态
- 处理完成后,应用程序管理器向资源管理器取消注册