学习笔记之Yarn命令

Yarn框架

YARN的基本思想是将资源管理和作业调度/监控的功能分解为单独的守护进程。有一个全局的ResourceManager(RM)和每个应用程序的ApplicationMaster(AM)。应用程序可以是单个作业,也可以是DAG作业。

学习笔记之Yarn命令

ResourceManager是仲裁系统中所有应用程序之间资源的最终权威机构。NodeManager是负责容器的每机器框架代理,监视它们的资源使用情况(cpu,内存,磁盘,网络),并将其报告给ResourceManager / Scheduler。Scheduler负责将资源分配给各种正在运行的应用程序,这些应用程序受到容量,队列等熟悉的限制。Scheduler是纯调度程序,因为它不会监视或跟踪应用程序的状态。

ApplicationsManager负责接受作业提交,协商执行特定于应用程序的ApplicationMaster的第一个容器,并提供失败时重新启动ApplicationMaster容器的服务。每个应用程序的ApplicationMaster负责从调度程序中协商适当的资源容器,跟踪其状态并监视进度。

资源预留通过ReservationSystem,即允许用户在指定时间资源和时间的限制(例如,截止日期),以及后备资源的配置文件,以确保重要jobs.可预见的执行组件ReservationSystem跟踪资源过时,对预留执行准入控制,并动态指示底层调度程序确保预留满员。

为了将YARN扩展到几千个节点之外,YARN 通过YARN Federation功能支持联邦的概念。联邦允许透明地将多个yarn(子)群集在一起,并使它们看起来像一个单一的大型集群。这可以用于实现更大规模,和/或允许将多个独立的群集一起用于非常大的工作,或者对于所有人都具有容量的租户。

Yarn基本命令(用户命令和管理员命令):

YARN命令由bin / yarn脚本调用。运行没有任何参数的yarn脚本会打印所有命令的描述。

用法:yarn [--config confdir] COMMAND[--loglevel loglevel] [GENERIC_OPTIONS] [COMMAND_OPTIONS]

YARN有一个选项解析框架,它使用解析通用选项以及运行类。

COMMAND_OPTIONS

描述

- 配置confdir

覆盖默认的配置目录。缺省值是$ {HADOOP_PREFIX} / conf。

--loglevel loglevel

覆盖日志级别。有效的日志级别是FATAL, ERROR, WARN, INFO, DEBUG, and TRACE. 。默认是INFO。

GENERIC_OPTIONS

多个命令支持的一组常用选项。有关更多信息,请参阅Hadoop 命令手册

COMMAND COMMAND_OPTIONS

以下各节介绍了各种命令及其选项。这些命令已分组为用户命令管理命令

用户命令:

application---用法:yarn application [options]

-appId <ApplicationId>

指定要操作的应用程序ID

-appStates <States>

与-list一起使用,根据输入逗号分隔的应用程序状态列表来过滤应用程序。有效的应用程序状态可以是以下之一:ALL, NEW, NEW_SAVING, SUBMITTED, ACCEPTED, RUNNING, FINISHED, FAILED, KILLED

-appTypes <Types>

与-list一起使用,根据输入逗号分隔的应用程序类型列表来过滤应用程序。

-help

帮帮我

-list

列出来自RM的应用程序。支持可选使用-appTypes根据应用程序类型过滤应用程序,使用-appStates过滤基于应用程序状态的应用程序。

-kill <ApplicationId>

杀死应用程序。

-movetoqueue <Application Id>

将应用程序移动到不同的队列。

-queue<Queue Name>

使用movetoqueue命令指定将应用程序移动到哪个队列。

-status <ApplicationId>

打印应用程序的状态。

-updateLifetime <Timeout>

以秒为单位更新应用程序超时(从请求开始)。ApplicationId可以使用'appId'选项指定。

-updatePriority <Priority>

更新应用程序的优先级。ApplicationId可以使用'appId'选项来传递。

jar---用法:yarn jar <jar> [mainClass]args...

运行一个jar文件。用户可以将他们的YARN代码捆绑到jar文件中并使用此命令执行它。

节点---用法:yarn node [options]

COMMAND_OPTIONS

描述

-all

与-list一起列出所有节点。

-list

列出所有运行的节点。支持可选使用-states来根据节点状态过滤节点,并且-all列出所有节点。

- states<States>

与-list一起使用,根据输入逗号分隔的节点状态列表过滤节点。

-status <NodeId>

打印节点的状态报告。

日志---用法:yarn logs -applicationId<application ID> [options]

COMMAND_OPTIONS

描述

-applicationId <application ID>

指定一个应用程序ID

-appOwner <AppOwner>

AppOwner(如果未指定,则假定为当前用户)

-containerId <ContainerId>

ContainerId(如果指定了节点地址,则必须指定)

-help

帮帮我

-nodeAddress <NodeAddress>

格式为nodename:port的NodeAddress(如果指定了容器标识,则必须指定)

管理员命令:对Hadoop集群的管理员有用的命令。

daemonlog---在守护进程中动态获取/设置由限定类名标识的日志的日志级别。有关更多信息,请参阅Hadoop 命令手册

用法:

hadoop daemonlog -getlevel <host:port> <classname> [-protocol(http |https)] hdoop daemonlog -setlevel <host:port> <classname> <level> [-protocol(http | https)]

命令选项

描述

-getlevel host:port classname [-protocol(http | https)]

host:port运行的守护程序中打印由限定类名标识的日志的日志级别。所述-protocol标志指定用于连接的协议。

-sevelvel host:port classname level [-protocol(http | https)]

设置由host:port运行的守护进程中由限定类名标识的日志的日志级别。所述-protocol标志指定用于连接的协议。

在守护进程中动态获取/设置由限定类名标识的日志的日志级别。默认情况下,该命令发送一个HTTP请求,但可以通过使用参数-protocol https来发送HTTPS请求来覆盖。举例:$ bin / hadoopdaemonlog -getlevel 127.0.0.1:50470org.apache.hadoop.hdfs.server.namenode.NameNode DEBUG -protocol https

resourcemanager---用法:yarn resourcemanager [-format-state-store]

COMMAND_OPTIONS

描述

-format-state-store

格式化RMStateStore。这将清除RMStateStore,并且在不再需要过去的应用程序时非常有用。这应该只在ResourceManager未运行时运行。

-remove-application-from-state-store <appId>

从RMStateStore中删除应用程序。这应该只在ResourceManager未运行时运行。

启动ResourceManager

rmadmin

用法:yarn rmadmin     -refreshQueues      -refreshNodes[-g|graceful [timeout in seconds] -client|server]      -refreshNodesResources      -refreshSuperUserGroupsConfiguration      -refreshUserToGroupsMappings      -refreshAdminAcls      -refreshServiceAcl      -getGroups [username]      -addToClusterNodeLabels<"label1(exclusive=true),label2(exclusive=false),label3">      -removeFromClusterNodeLabels<label1,label2,label3> (label splitted by ",")      -replaceLabelsOnNode<"node1[:port]=label1,label2 node2[:port]=label1,label2">[-failOnUnknownNodes]     -directlyAccessNodeLabelStore     -refreshClusterMaxPriority     -updateNodeResource [NodeID] [MemSize] [vCores] ([OvercommitTimeout])      -transitionToActive [--forceactive]<serviceId>     -transitionToStandby <serviceId>      -failover [--forcefence] [--forceactive]<serviceId> <serviceId>     -getServiceState <serviceId>     -getAllServiceState     -checkHealth <serviceId>     -help [cmd]

COMMAND_OPTIONS

描述

-refreshQueues

重新加载队列的acls,状态和调度程序的特定属性。ResourceManager将重新加载mapred-queues配置文件。

-refreshNodes [-g |优雅[超时秒] -client |服务器]

刷新ResourceManager中的主机信息。这里[-g | graceful [timeout in seconds] -client | server]是可选的,如果我们指定了超时,那么在将NodeManager标记为停用之前,ResourceManager将等待超时。-client |服务器指示是否应该由客户端或ResourceManager处理超时跟踪。客户端跟踪是阻塞的,而服务器端跟踪不是。省略超时或超时值-1表示无限超时。已知问题:如果发生RM HA故障转移,服务器端跟踪将立即停用。

-refreshNodesResources

在ResourceManager中刷新NodeManagers的资源。

-refreshSuperUserGroupsConfiguration

刷新超级用户代理组映射。

-refreshUserToGroupsMappings

刷新用户到组映射。

-refreshAdminAcls

刷新用于管理ResourceManager的acls

-refreshServiceAcl

重新加载服务级授权策略文件ResourceManager将重新加载授权策略文件。

-getGroups [username]

获取指定用户所属的组。

-addToClusterNodeLabels <“label1(exclusive = true),label2(exclusive = false),label3”>

添加到群集节点标签。默认排他性是正确的。

-removeFromClusterNodeLabels <label1,label2,label3>(标签分割为“,”)

从群集节点标签中删除。

-replaceLabelsOnNode <“node1 [:port] = label1,label2 node2 [:port] = label1,label2”> [-failOnUnknownNodes]

替换节点上的标签(请注意,我们现在不支持在单个主机上指定多个标签。)-failOnUnknownNodes是可选的,当我们设置此选项时,如果指定的节点未知,它将失败。

-directlyAccessNodeLabelStore

这是DEPRECATED,将在未来的版本中删除。直接访问节点标签存储,使用此选项,所有与节点标签相关的操作都不会连接RM。相反,他们将直接访问/修改存储的节点标签。默认情况下,它是错误的(通过RM访问)。并且请注意:如果您将yarn.node-labels.fs-store.root-dir配置到本地目录(而不是NFS或HDFS),则此选项仅适用于运行RM的计算机上运行的命令。

-refreshClusterMaxPriority

刷新群集最大优先级

-updateNodeResource [NodeID] [MemSize] [vCores]([OvercommitTimeout])

更新特定节点上的资源。

-transitionToActive [-forceactive] [-forcemanual] <serviceId>

将服务转换为活动状态。如果使用-forceactive选项,请尝试使目标处于活动状态而不检查是否没有活动节点。如果启用自动故障转移,则不能使用此命令。尽管您可以通过-forcemanual选项覆盖此选项,但您需要谨慎。如果启用自动故障转移,则不能使用此命令。

-transitionToStandby [-forcemanual] <serviceId>

将服务转换为待机状态。如果启用自动故障转移,则不能使用此命令。尽管您可以通过-forcemanual选项覆盖此选项,但您需要谨慎。

-failover [-forceactive] <serviceId1> <serviceId2>

启动从serviceId1到serviceId2的故障转移。尝试故障转移到目标服务,即使它没有准备好,如果使用了-forceactive选项。如果启用自动故障转移,则不能使用此命令。

-getServiceState <serviceId>

返回服务的状态。

-getAllServiceState

返回所有服务的状态。

-checkHealth <serviceId>

请求该服务执行健康检查。如果检查失败,RMAdmin工具将以非零退出代码退出。

help[cmd]

如果没有指定,则显示给定命令的帮助或所有命令。

运行ResourceManager管理客户端

 

schedulerconf--用法--yarn schedulerconf [options]

COMMAND_OPTIONS

描述

-add <“queuePath1:key1 = val1,key2 = val2; queuePath2:key3 = val3”>

用分号分隔要添加的队列的值及其队列配置。本示例添加队列“queuePath1”(完整路径名称),该队列具有队列配置key1 = val1和key2 = val2。它还添加了队列“queuePath2”,它具有队列配置key3 = val3。

-remove <“queuePath1; queuePath2”>

分号分隔队列以除去。此示例删除queuePath1和queuePath2队列(完整路径名称)。注意:队列必须在被删除之前进入“ 已停止”状态。

-update <“queuePath1:key1 = val1,key2 = val2; queuePath2:key3 = val3”>

分号应该更新配置的队列的分隔值。本例为queuePath1(全路径名)的队列配置设置key1 = val1和key2 = val2,并为queuePath2的队列配置设置key3 = val3。

-global <key1 = val1,key2 = val2>

更新调度程序全局配置。此示例为调度程序的全局配置设置key1 = val1和key2 = val2。

更新调度程序配置。请注意,此功能处于alpha阶段,可能会发生变化。