什么是 Hadoop Yarn 架构及其组件
已发表: 2020-02-10目录
Hadoop YARN 介绍
YARN 是 Hadoop v2.0 的主要组件。 YARN 通过允许处理和运行存储在 HDFS 中的批处理、流处理、交互式处理和图形处理数据来帮助开放 Hadoop。 通过这种方式,它有助于运行 MapReduce 以外的不同类型的分布式应用程序。
在 YARN 架构中,处理层与资源管理层是分开的。 在 Hadoop 1.0 版本中创建应用程序管理器和资源管理器之间的分离是作业跟踪器的职责。 YARN 允许存储在 HDFS(Hadoop 分布式文件系统)中的数据由各种数据处理引擎处理和运行,例如批处理、流处理、交互处理、图形处理等等。 因此,使用 YARN 可以提高系统的效率。 应用程序的处理通过其不同的组件在 YARN 中进行调度。 许多不同种类的资源也被逐步分配以实现最佳利用。 YARN 对正确使用可用资源有很大帮助,这对于处理大量数据是非常必要的。
为什么选择纱线?
MapReduce 执行资源管理和处理的功能。 Hadoop v1.0 也称为 MapReduce 版本 1 (MRV1)。 Job Tracker 只有一个主控。
你不会相信这个项目如何改变了学生的职业生涯在以前的 Hadoop 版本中,即 Hadoop 版本 1.0,也称为 MapReduce 版本 1 (MRV1),用于自行执行进程和资源管理任务。 它有一个工作跟踪模块,负责一切。 因此,为应用程序分配资源、执行需求调度以及监控系统中的处理作业是单个主机。 Hadoop 1.0 版减少了任务并在称为任务跟踪器的几个子流程上分配了地图。 Task Tracker 还定期报告进程的进度。 但主要问题不在于,问题在于这种单一主控的设计,导致瓶颈问题。 此外,计算资源利用效率低下。 因此,可扩展性成为这个版本的 Hadoop 的一个问题。 但好的一面是,YARN 解决了这个问题,YARN 是其继任者 Hadoop 版本 2.0 中的一个重要核心组件,雅虎和 Hortonworks 在 2012 年推出。 这种缓解背后的基本思想是将 MapReduce 从资源管理和作业调度中分离出来,而不是单个主控。 因此,YARN 现在负责作业调度和资源管理。
在 Hadoop 2.0 中,YARN 引入了 Application Master 和 Resource Manager 的概念。 在 Hadoop 集群中,资源的利用率由资源管理器监控。
YARN 有一些特性因此而闻名,它们是:

- 多租户: YARN 允许访问多个数据处理引擎,例如批处理引擎、流处理引擎、交互式处理引擎、图形处理引擎等等。 这为公司带来了多租户的好处。
- 集群利用率:集群以一种优化的方式被利用,因为集群是在 YARN 的帮助下在 Hadoop 中动态使用的。
- 兼容性:YARN 还兼容 Hadoop 的第一个版本,即 Hadoop 1.0,因为它使用现有的 map-reduce 应用程序。 所以 YARN 也可以与 Hadoop 1.0 一起使用。
- 可扩展性: YARN 资源管理器中的调度程序允许数千个集群和节点由 Hadoop 管理和扩展。
YARN 的组成部分
- 容器:
在 Container 中,可以找到单个节点上的磁盘、CPU 内核、RAM 等物理资源。 容器启动上下文 (CLC) 用于调用容器。 有关依赖项、安全令牌、环境变量的数据,这些数据作为称为容器启动上下文 (CLC) 的记录进行维护。
- 在特定主机上,应用程序只能使用 CPU 和内存中的指定内存。 只有在 Container 授予权限后,才能使用此指定数量的内存。
- Container Launch Context 用于管理 YARN Containers。 它也称为容器生命周期 (CLC)。 用于创建进程的必要命令存储在此记录中。 它还保存节点管理器服务、安全令牌、依赖项、环境变量映射的有效负载。
- 应用大师:
在框架中,当提交单个作业时,它被称为应用程序。 监控应用程序进度、跟踪应用程序状态、与资源管理器协商资源是应用程序管理器的职责。 应用程序运行的所有要求都是通过发送容器启动上下文 (CLC) 来完成的。 应用程序主机通过向节点管理器请求容器来发布容器启动上下文 (CLC)。 资源管理器有时会在应用程序启动后收到健康报告。

- 节点管理器:
节点管理器负责 Hadoop 集群中的各个节点,还管理与每个特定节点相关的容器。 它向资源管理器注册,并将每个节点的健康状态发送到资源管理器,说明节点进程是否已完成对资源的使用。 由于其主要目标是管理资源管理器分配的每个特定节点容器。 节点管理器还会在应用程序主控请求时创建一个容器进程。 当应用程序主机通过 CLC(容器启动上下文)向节点管理器发送并询问附加的容器时,CLC(容器启动上下文)包括应用程序需要执行的所有内容。 然后节点管理器创建请求的进程容器并运行它。 节点管理器还负责监控各个 Container 的资源使用情况,并将其报告给资源管理器。 因此,节点管理器和资源管理器协作以在节点之间进行通信并管理集群中每个节点的资源使用情况。 如果资源管理器指示它,它也可以杀死容器。 最后,节点管理器通过日志管理系统将所有内容记录在其中。
特定节点由节点管理器负责。 节点管理器管理节点的工作流和应用程序。 执行日志管理,节点管理器监控资源使用情况。 资源管理器向节点管理器指示杀死容器。 应用程序主机请求节点管理器启动容器进程。 容器进程的创建是节点管理器的职责。
- 资源管理器:
所有应用程序的资源管理和分配是资源管理器的职责,是 YARN 的主守护进程。 资源管理器收到的请求被转发到相应的节点管理器。 根据应用,资源由资源管理器分配完成。
- 集群的利用率得到优化,例如保持所有资源的使用不受不同类型的限制,如 SLA、公平和容量保证。
- 资源管理器分配可用资源。
- 资源管理器仲裁集群资源。
- 请求的实际处理发生在节点中,节点管理器对其进行管理。 每当接收到任何处理请求时,它将请求部分地传输到其相应的节点管理器。
- 资源管理器是资源分配的最高权限。
资源管理器有两个主要组件,它们是: –

- 应用程序经理 –
应用程序管理器负责管理一组提交的任务或应用程序。 它首先验证和验证提交的应用程序的规范,如果没有足够的可用资源,它可能会拒绝应用程序。 它还确保不存在具有相同 ID 的其他应用程序,这些应用程序可能由错误或恶意客户端引起。 然后它将验证后提交的应用程序转发给调度程序。 最后,它还观察应用程序的状态并管理完成的应用程序以节省一些资源管理器的内存。 应用程序管理器保留已完成应用程序的缓存,并移出旧的、已完成的应用程序,以便为新提交的应用程序提供空间。
- 调度器——
基于资源可用性和应用程序分配,调度程序调度任务。 调度程序不会执行其他任务,例如在失败、跟踪或监视任务后不重新启动作业。 不同类型的调度器插件有 Fair Scheduler 和 Capacity Scheduler,YARN 调度器支持对集群资源进行分区。
Hadoop YARN 中应用程序的工作流程步骤
客户提交申请。
- Application Manager 是由 Resource Manager 分配 Container 启动的。
- 资源管理器和应用程序管理器相互注册。
- 应用程序管理器将容器与资源管理器协商。
- Node Manager 在收到 Application Manager 的通知后启动 Container。
- 应用程序代码的执行在容器中完成。
- 应用程序管理器或资源管理器在被客户端联系后监控应用程序的状态。
- 流程完成后,使用资源管理器取消注册应用程序管理器。
包起来
如果您有兴趣了解有关大数据的更多信息,请查看我们的 PG 大数据软件开发专业文凭课程,该课程专为在职专业人士设计,提供 7 多个案例研究和项目,涵盖 14 种编程语言和工具,实用的动手操作研讨会,超过 400 小时的严格学习和顶级公司的就业帮助。
从世界顶级大学在线学习软件开发课程。 获得行政 PG 课程、高级证书课程或硕士课程,以加快您的职业生涯。