本文翻译自:
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更容易扩展,代码也跟容易维护。
相关推荐
用于节点缓存管理器的Redis存储Redis...安装npm install cache-manager-redis-store --save 要么yarn add cache-manager-redis-store使用范例请参阅以下示例,了解如何实现Redis缓存存储。单店var cacheManager = requ
Yarn is a package manager for your code. It allows you to use and share code with other developers from around the world. Yarn does this quickly, securely, and reliably so you don’t ever have to ...
将软件包下载到node_modules目录。 简单的CLI。 只需解决依赖冲突。 展平依赖性树。 支持锁文件。 (例如yarn.lock或package-lock.json ) 通过CLI添加新程序包。 (像yarn add或npm i 命令一样) 运行生命...
yarn add cache-manager-ioredis 使用范例 请参阅以下示例,了解如何实现IORedis缓存存储。 单店 var cacheManager = require ( 'cache-manager' ) ; var redisStore = require ( 'cache-manager-ioredis' ) ; va
在npmjs网站上,该扩展程序将“ npm i”替换为“ yarn add” 该扩展名更改了npmjs网站上的“复制区域”,因此单击它即可复制“ yarn add Package”。右键单击扩展名图标后,您可以:1.快速打开npmjs网站2.删除扩展...
Node Manager Timeline Server Hadoop Compatible File Systems Amazon S3 Azure Blob Storage OpenStack Swift Auth Overview Examples Configuration Building Tools Hadoop Streaming Hadoop Archives ...
安装npm install --save guess-package-manager@^1.1.3yarn add guess-package-manager@^1.1.3发展历程配置: git clone git@github.com:jaid/guess-package-manager.gitcd guess-package-managernpm install ...
该工具基于argv构建,并提供: 易于使用的命令模块和选项互动壳函数堆栈,可访问以前的结果同步提示安装yarn add @kebab-case/node-command-manager# ornpm i @kebab-case/node-command-manager依赖精油提示同步...
开始Myriad 工作原理Myriad 开发本地 vagrant 设置指南Myriad 的 REST APIMyriad 仪表盘开发Node Manager Binaries 的分布Fine Grained Scaling使用 Docker 部署Myriad 资源管理器 Mesos, YARN 和 cgroups ...
Notice: use node version 8 because of outdated dependencies git clone git@github.com:satoshilabs/password-manager.git cd password-manager npm install yarn -g yarn install 将Chrome / Chromium设置为 ...
安装node.js和yarn 将此 repo 克隆到所需的文件夹路径 在控制台中,从文件夹路径执行cd manager-client , yarn install 在本地 Discourse 实例“插件”文件夹中为此文件夹创建符号链接(例如path/to/your/...
当您在带有package.json , .yvmrc或任何其他文件的任何文件夹中运行任何yarn命令时,YVM都会自动使用正确的yarn版本。 否则,它将使用全局设置的纱线版本。动机跨项目手动管理不同的纱线版本是一件痛苦的事情。 ...
动机是2019年,经过彻底分析,我发现笔记本电脑中的存储空间用完了,我发现大部分存储空间都由node_modules占用。 由于每个项目都有一个单独的node_modules(尽管版本相同,但是重复)。 我还有一些项目,我在蓝色的...
:play_button: 跑步要运行项目,您需要克隆或此存储库,请安装Node Package Manager( )或YARN Package Manager( )。 :globe_with_meridians: 前锋在项目目录中打开命令提示符,打开文件夹并执行以下命令: 与...
:我们使用Node来运行开发Web服务器并构建项目。 根据您的系统,可以从源安装或作为预打包的捆绑包安装Node。 :我们使用纱线来管理节点依赖性。 根据您的系统,可以从源安装或作为预打包的捆绑包安装Yarn。 安装...
yarn add react-native-location-manager-ios 自动连结 react-native link react-native-location-manager-ios 手动链接 在XCode的项目导航器中,右键单击“ Libraries ➜ Add Files to [your project's name] 转...
要运行项目,您需要克隆或download此存储库,请安装Node Package Manager( NPM )或YARN Package Manager( YARN )。 :globe_with_meridians: 网页 在项目目录中打开命令提示符,然后执行以下命令: 与npm # ...
用法为您的新项目创建一个空目录,然后运行: yarn add --dev @jstm/preset-node && yarn project 而已! 现在应设置所有工具。 请注意,您可能需要重新启动IDE才能进行集成,以获取对工具的更改(例如,使用VSCode ...
yarn add --dev react-intl-translations-manager 或者 npm i --save-dev react-intl-translations-manager 设置 基本的 这是此插件最基本用法的示例,在下面的API文档中,您可以找到更多选项。 在package.json中...
Node.js NPM或纱线 世博会 :high_voltage: 如何使用 克隆此存储库: git clone https://github.com/vitorserrano/task-manager.git 安装依赖项: npm install或yarn 启动应用程序: npm start或yarn start :...