本文翻译自:
http://hortonworks.com/blog/apache-hadoop-yarn-nodemanager/
一、NodeManager 简介
NodeManager 是 Yarn 每个节点的代理,在hadoop集群中负责计算个字的节点。这包含同ResourceManager(RM)保持日期同步,监督container的生命周期,监控container资源的使用情况,跟踪node 心跳,日志管理和一些可以被不同YRAN应用程序使用的辅助服务。
二、NodeManager 组件
NodeManager 架构图
1、NodeStatusUpdater
启动时,该组件在RM注册并发送节点上可用的资源。随后,NM-RM进行通讯更新container状态 ,比如节点新容器启动,容器执行完等等。
此外,RM将发送信号给NodeStatusUpdater 将潜在的已经运行的container 杀掉。(假死的container??)
2、ContainerManager
该组件是NodeManager 的核心。有以下几个子组件组成,每个子组件都承担起管理容器运行在节点上的一系列子功能。
(A)RPC server: ContainerManager 接收来自 Application Masters(AMs) 的启动新容器的请求,或者停止运行的容器。这部分的工作由ContainerTokenSecretManager (下文详述)对所有请求进行授权。在此节点上运行的容器上进行的所有操作 将写入到auditlog(可以被安全工具做后期处理)。
(B)资源本地化服务(ResourceLocalizationService) : 负责安全的下载和组织容器需要的多种类型的文件资源。它最大限度的将文件分配到可用的硬盘。并强制文件下载的访问限制和对资源采取适当的使用限制
(C)容器发布器(Containers Launcher ):为尽可能快的预备和发布容器而维持一个线程池。同时当接受到来自RM或者AMs的请求时清除容器的进程。
(D)辅助服务(Aux Services):NM 通过辅助服务提供一个可扩展功能的配置。这允许每个节点自定义服务(比如特殊的框架请求),NM的rest服务还处于沙箱阶段。这些服务必须在NM启动前配置。在节点上的应用程序的第一个容器启动和应用程序认为容器运行结束时,辅助服务都将被通知到。
(E)容器监控器(ContainersMonitor): 在一个容器启动后,该组件开始监测容器运行时的资源使用。进行强制隔离和公平分配资源例如内存,每个容器都会从RM分配到一定量的这类资源。监控器不断的监控每个容器的使用,如果一个容器超过它限额时,将该容器标志为将被杀掉。这样做是为了保护在同一节点上运行良好的容器免遭运行不良的容器的影响。
(F)LogHandler: 一个插件化的组件,可选择将容器的日志本地化到磁盘或者压缩上传到文件系统。
3、容器执行器(ContainerExecutor): 根据容器的需要在操作系统之下安全的放置文件和文件夹,然后以安全的方式启动和清除与容器的进程。
4、NodeHealthCheckerService: 通过运行一个配置的脚本,提供检查节点的健康状态的功能,同时也通过创建临时文件的特殊方式来监控硬盘的健康状态。系统的任何健康状态的改变将通知到NodeStatusUpdater,进而由它传递给RM.
5、Security
(A)应用程序访问权限管理(ApplicationACLsManager) :NM需要对用户面对的APIs 进行访问限制,比如 在Web UI容器的日志展示只有授权的用户才能获取。这个组件为每个应用程序维护一个ACLs 列表,并负责执行当接受到类似的请求。
(B)容器令牌密钥管理(ContainerToken SecretManager):验证各种各样的请求确保进入的操作
6、WebServer
暴露应用程序列表,在指定时间节点上的运行容器,节点健康状态的相关信息,容器的日志等。
三、关键功能聚焦
1、Container Launch
为促进容器的启动,作为容器的技术规范的一部分,NM期望收到容器运行时间的详细信息。这些包括容器的命令行,环境变量,容器或者任何有安全令牌的一系列的(文件)资源请求。
当接收到容器启动请求,NM先验证请求,如果请求是权限可用的,授权用户执行,分配正确的资源等等。NM接下来做一系列步骤进行启动容器:
A、本地拷贝所有被创建的指定资源(Distributed Cache)
B、隔离为容器创建的工作目录,并将该目录的本地资源标志为可用。
C、使用启动环境和命令行进行启动真实的容器
2、日志聚合(Log Aggregation)
操作用户日志是过去Hadoop的一大痛点,NM 对日志的地址管理问题提供了可选项配置,可在应用程序执行完后移动到文件系(HDFS等)
3、How MapReduce shuffle takes advantage of NM’s Auxiliary-sevices
Shufflte功能要求运行MR 程序将作为一个负责功能实现(Auxiliary Service)。这个服务用Netty web server 启动,知道如何去处理来自Reduce 任务的shuffle 请求。只要是安全请求,MR AM 为shuffle指定服务ID。NM为AM提供shuffle服务端口。
四、总结
在YARN中,Nodemanager 主要限制在管理抽象的容器。例如 只关心进程和该容器相匹配,不关心容器与自身每个应用程序状态管理,例如Mapreduce 任务。它同时也不区分map slots 和reduce slots。由于有上述模块的明显职责分离,NM更容易扩展,代码也跟容易维护。
相关推荐
接下来是npm(Node Package Manager),它是Node.js的默认包管理器,用于安装、管理和分享第三方模块。npm的配置主要涉及初始化项目、安装包、配置全局路径等。初始化项目时,可以使用`npm init`命令创建一个package...
Yarn 是一个现代化的、高性能的 JavaScript 包管理器,由 Facebook 在 2016 年推出,旨在解决 npm(Node Package Manager)在大型项目中的性能和可预测性问题。Yarn v1.22.5 是 Yarn 的一个稳定版本,提供了更快的...
YARN的主要组成部分包括Resource Manager、Node Manager、Application Master和Container。 Resource Manager,即资源管理器,是YARN的心脏,负责全局的资源分配和管理。它由调度器和应用程序管理器两部分组成。...
Yarn是Facebook、Google、Expo和IBM等公司共同开发的产物,它的主要目标是解决npm(Node Package Manager)在大型项目中的性能问题。Yarn通过引入并行下载、缓存和锁定依赖关系等特性,提升了包管理的速度和可靠性...
Yarn是JavaScript的世界中一个流行的包管理工具,它在2016年由Facebook推出,旨在解决npm(Node Package Manager)的一些性能和可预测性问题。`yarn-v1.19.1.tar.gz`是一个包含Yarn源码的压缩包,版本号为1.19.1。这...
Yarn,全称为“Yet Another Resource Negotiator”,最初由Facebook于2016年推出,是一款针对JavaScript开发的开源包管理器,旨在替代原有的npm(Node Package Manager)。Yarn的出现是为了解决npm在处理依赖管理和...
Yarn是Facebook推出的一款JavaScript包管理器,旨在提高npm(Node Package Manager)的性能和可靠性。而Node.js v14.18.1则是一个基于Chrome V8引擎的JavaScript运行环境,用于构建服务器端和网络应用。 Yarn 1.22....
Yarn是Facebook开发的一款流行的JavaScript包管理工具,它在npm(Node Package Manager)的基础上提供了更快、更可靠和更安全的包管理和依赖关系解决方式。在本文中,我们将深入探讨Yarn 1.22.4和1.22.5这两个版本在...
Yarn是JavaScript社区中的一个非常重要的依赖管理工具,它是Facebook、Google、IBM等公司共同开发的一个项目,旨在解决npm(Node Package Manager)在大规模项目中的性能问题和一些其他挑战。Yarn通过提供更稳定的...
用于节点缓存管理器的Redis存储Redis...安装npm install cache-manager-redis-store --save 要么yarn add cache-manager-redis-store使用范例请参阅以下示例,了解如何实现Redis缓存存储。单店var cacheManager = requ
YARN的基本思想是将数据处理和资源管理分开,将原本MapReduce中的JobTracker职责分解为两个独立的角色:Resource Manager(RM)和Application Master(AM)。RM全局负责集群的资源分配和监控,而AM则专注于每个应用...
YARN在前端开发中的应用主要是作为包管理工具,类似于npm(Node Package Manager),用于安装、管理和更新JavaScript库和依赖,使得前端项目构建和协作变得更加高效。 【标签】:“前端开发 VUE javascript yarn ...
Yarn的核心理念是将集群资源管理和应用程序的执行过程分开,由两个独立的进程来负责:Resource Manager和Application Master。Resource Manager全局负责整个集群的资源分配,其内部包含调度器Scheduler和应用程序...
首先,YARN架构主要包括三个主要组件:Resource Manager(资源管理器)、Node Manager(节点管理器)和Application Master(应用程序管理器)。 1. **Resource Manager (RM)** 是整个集群的全局资源管理者,负责...
Yarn v0.18.1是其早期的一个版本,它的出现解决了`npm`(Node Package Manager)在处理依赖关系时的一些问题,尤其是速度和可重复性方面。 Yarn通过引入了锁定文件(`yarn.lock`)的概念,确保了在不同的机器上执行...
Yarn是JavaScript包管理器,它在2016年由Facebook、Google、Expo和MongoDB等公司共同推出,旨在解决npm(Node Package Manager)的一些性能和可预测性问题。Yarn与npm相比,提供了更快的安装速度、更可靠的依赖关系...
Yarn是Facebook开源的一个JavaScript包管理器,它与npm(Node Package Manager)相似,但提供了更高效、可靠和可预测的包依赖管理解决方案。 描述中的“低积分分享”可能意味着这是一个在线社区或论坛上的资源,...
Yarn,全称为“Yet Another Resource Negotiator”,是由Facebook在2016年推出的,是一款替代npm(Node Package Manager)的包管理工具。它的出现旨在解决npm在大型项目中可能出现的速度、可靠性和安全性问题。在...
1. Resource Manager(RM):作为全局资源调度器,RM负责监控集群资源,接受应用程序提交,选择合适的Node Manager(NM)启动Application Master(AM)。RM还负责应用程序的生命周期管理和资源分配。 2. Node ...