yarn logs -applicationid命令(yarn application status)Yarn 作为一款优秀的开源集群管理工具 可以用它来运行 Hadoop Spark Flink 等大数据处理任务 所有的分布式计算框架 都是主从模式 ResourceMana 作为集群的管理员 是任务提交的入口 一般企业的大数据处理平台会在 Yarn 的基础中做进一步的封装 以 web 应用的形式提供更高级的大数据处理平台 如果 web 应用通过 shell 的方式提交任务将显得太重 而且不利于任务状态的监控 幸好 Yarn 提供了 ResourceMana 的 REST API 可以很方便的向集群提交
Yarn作为一款优秀的开源集群管理工具,可以用它来运行Hadoop,Spark,Flink等大数据处理任务。所有的分布式计算框架,都是主从模式,ResourceManager作为集群的管理员,是任务提交的入口。一般企业的大数据处理平台会在Yarn的基础中做进一步的封装,以web应用的形式提供更高级的大数据处理平台。如果web应用通过shell的方式提交任务将显得太重,而且不利于任务状态的监控。幸好Yarn提供了ResourceManager的REST API,可以很方便的向集群提交、杀死任务或者监控任务的状态,本文将简要介绍ResourceManager REST API的使用方法。
先通过POST请求生成application_id再通过这个id来提交任务。
通过POST请求rm-http-address:port/ws/v1/cluster/apps/new-application,不需要参数,ResourceManager将返回application_id与集群可用资源配额,如下:
请求url
请求参数:无
返回数据
返回json字段说明
| Item |
Data Type |
Description |
| application-id |
string |
The newly created application id |
| maximum-resource-capability |
object |
The maximum resource capabilities available on this cluster |
maximum-resource-capability元素说明
| Item |
Data Type |
Description |
| memory |
int |
容器可用的最大内存 |
| vCores |
int |
容器可用的最大核心数 |
提交应用程序API可用于提交应用程序。如果提交申请,则必须首先使用Cluster New Application API获得一个应用程序ID 。应用程序ID必须是请求正文的一部分。响应包含指向应用程序页面的URL,可用于跟踪应用程序的状态和进度。
通过POST请求rm-http-address:port/ws/v1/cluster/apps提交任务
请求url
请求参数
请求参数说明
| Item |
Data Type |
Description |
| application-id |
string |
申请编号 |
| application-name |
string |
申请名称 |
| queue |
string |
应将应用程序提交到的队列的名称 |
| priority |
int |
应用程序的优先级 |
| am-container-spec |
object |
应用程序主容器启动上下文,如下所述 |
| unmanaged-AM |
boolean |
该应用程序是否使用非托管应用程序主机 |
| max-app-attempts |
int |
此应用程序的最大尝试次数 |
| resource |
object |
应用程序主机需要的资源,如下所述 |
| application-type |
string |
应用程序类型(MapReduce,Pig,Hive等) |
| keep-containers-across-application-attmpts |
boolean |
YARN是否应保留此应用程序使用的容器而不是销毁它们 |
| application-tags |
object |
应用程序标签列表,请参阅有关如何指定标签的请求示例 |
am-container-spec对象的元素
应该使用am-container-spec对象为应用程序主机提供容器启动上下文。
| Item |
Data Type |
Description |
| local-resources |
object |
描述需要本地化的资源的对象,如下所述 |
| environment |
object |
容器的环境变量,指定为键值对 |
| commands |
object |
用于启动容器的命令(应按执行顺序) |
| service-data |
object |
特定于应用程序的服务数据;key是辅助服务的名称,值是您希望传递的数据的base-64编码 |
| credentials |
object |
您的应用程序运行所需的凭据,如下所述 |
| application-acls |
object |
您的应用程序的ACLs;密钥可以是“ VIEW_APP”或“ MODIFY_APP”,值是具有权限的用户列表 |
local-resource对象的元素
| Item |
Data Type |
Description |
| resource |
string |
要本地化的资源的位置 |
| type |
string |
资源类型;选项是“ ARCHIVE”,“ FILE”和“ PATTERN” |
| visibility |
string |
可见要本地化的资源;选项是“ PUBLIC”,“ PRIVATE”和“ APPLICATION” |
| size |
long |
要本地化的资源大小 |
| timestamp |
long |
要本地化的资源的时间戳 |
credentials对象的元素
| Item |
Data Type |
Description |
| tokens |
object |
您希望传递给应用程序的令牌,指定为键值对。密钥是令牌的标识符,值是令牌(应使用相应的Web服务获取) |
| secrets |
object |
您希望在应用程序中使用的机密,指定为键值对。它们的键是标识符,值是密钥的base-64编码 |
resource对象的元素
| Item |
Data Type |
Description |
| memory |
int |
每个容器所需的内存 |
| vCores |
int |
每个容器所需的虚拟核心 |
返回数据: 无
提交后ResourceManager不会返回信息。从请求的参数可以看出,如果想通过Yarn来管理某个分布式计算任务,必须有对应的ApplicationMaser实现,如上例中的AppMaster.jar,其执行入口类为org.apache.hadoop.yarn.applications.distributedshell.ApplicationMaster。常见的分布式计算任务如Hadoop、Spark与Flink都有,但Flink-yarn项目对Flink 1.9貌似还 没有实现对应的ApplicationMaster,所以Flink 1.9的任务目前还不能通过Rest API提交(1.7可以)。
通过GET请求rm-http-address:port/ws/v1/cluster/apps将获取到所有任务的信息列表,如
请求url
请求参数(可选)
可以为GET操作指定多个参数。开始时间和结束时间都有一个begin和end参数,以允许您指定范围。例如,可以请求在2021年3月2日早上09:00:00和早上10:00:00之间启动的所有应用程序,其中startedTimeBegin = 1614646800000&startedTimeEnd = 1614650400000。如果未指定Begin参数,则默认为0;如果未指定End参数,则默认为无穷大。
返回数据
字段说明
| Item |
DataType |
Description |
| id |
string |
应用的application-id |
| user |
string |
提交任务的用户名 |
| name |
string |
应用程序的名称 |
| queue |
string |
应用程序所属消息队列 |
| state |
string |
应用程序当前状态 |
| finalStatus |
string |
应用程序最终状态 |
| progress |
double |
应用程序进度 |
| trackingUI |
string |
追踪UI显示名称 |
| trackingUrl |
string |
追踪UI的url |
| clusterId |
string |
集群id |
| applicationType |
string |
应用程序类型 |
| priority |
int |
应用程序优先级 |
| startedTime |
long |
应用程序开始时间 |
| launchTime |
long |
应用程序加载时间 |
| finishedTime |
long |
应用程序完成时间 |
| elapsedTime |
long |
应用程序消耗时间(finished-start) |
| amContainerLogs |
string |
am容器日志地址 |
| amHostHttpAddress |
string |
am的主机http地址 |
| amRPCAddress |
string |
am的RPC地址 |
| allocatedMB |
string |
初始化内存大小 |
| allocatedVCores |
string |
初始化核心数 |
| reservedMB |
string |
保留内存 |
| reservedVCores |
string |
保留核心数 |
| runningContainers |
string |
正在运行的容器数 |
| memorySeconds |
int |
所有的container每秒消耗的内存总和 |
| vcoreSecond |
string |
所有的container每秒消耗的核心数总和 |
| queueUsagePercentage |
double |
所属队列的资源使用百分比 |
| clusterUsagePercentage |
double |
所属集群的资源使用百分比 |
| logAggregationStatus |
string |
日志聚合状态 |
| unmanagedApplication |
boolean |
未被管理的应用程序 |
通过GET请求rm-http-address:port/ws/v1/cluster/apps/{appid},如
通过Cluster Application State API来完成,当然需要得到RM web service的授权才能进行这种操作,URI为rm-http-address:port/ws/v1/cluster/apps/{appid}/state,如
通过GET请求该URI
将返回的application_id为application_1613349389113_0001的任务的状态
然会参数列举说明
| Item |
Data Type |
Description |
| state |
string |
The application state - can be one of “NEW”, “NEW_SAVING”, “SUBMITTED”, “ACCEPTED”, “RUNNING”, “FINISHED”, “FAILED”, “KILLED” |
或者通过PUT请求来kill一个job
返回结果为
其实的state的状态为当前程序的状态【RUNNING, ACCEPTED】
重新通过GET请求该任务的状态
发现该任务已经被kill了
主要通过访问rm-http-address:port/ws/v1/cluster/apps/{appid}/priority来完成。统一需要得到RM web services的授权
通过GET请求上面的URI,如
将返回application_id为application_1613349389113_0001的任务的优先级
如果这项任务非常重要,你想让它优先执行,可通过PUT请求来修改其优先级
主要通过GET请求访问rm-http-address:port/ws/v1/cluster来完成。
通过GET请求上面的URI,如
请求参数: 无
返回数据
返回数据字段说明
| Item |
Data Type |
Description |
| id |
long |
集群ID |
| startedOn |
long |
集群启动的时间(从纪元开始以毫秒为单位) |
| state |
string |
ResourceManager状态-有效值为:NOTINITED,INITED,STARTED,STOPPED |
| haState |
string |
ResourceManager HA状态-有效值为:INITIALIZING,ACTIVE,STANDBY,STOPPED |
| rmStateStoreName |
string |
实现ResourceManager状态存储的类的完全限定名称 |
| resourceManagerVersion |
string |
ResourceManager的版本 |
| resourceManagerBuildVersion |
string |
ResourceManager构建字符串以及构建版本,用户和校验和 |
| resourceManagerVersionBuiltOn |
string |
生成ResourceManager的时间戳(自纪元以来以毫秒为单位) |
| hadoopVersion |
string |
Hadoop通用版本 |
| hadoopBuildVersion |
string |
具有构建版本,用户和校验和的Hadoop通用构建字符串 |
| hadoopVersionBuiltOn |
string |
建立hadoop common的时间戳(自纪元以来以毫秒为单位) |
| haZooKeeperConnectionState |
string |
ZooKeeper高可用性服务的连接状态 |
通过GET请求rm-http-address:port/ws/v1/cluster/metrics来完成。
通过GET请求上面URI,如
请求参数: 无
返回数据
返回数据字段说明
| Item |
Data Type |
Description |
| appsSubmitted |
int |
提交的应用程序数量 |
| appsCompleted |
int |
完成的应用程序数量 |
| appsPending |
int |
等待的应用程序数量 |
| appsRunning |
int |
正在运行的应用程序数量 |
| appsFailed |
int |
失败的应用程序数量 |
| appsKilled |
int |
被杀死的应用程序数量 |
| reservedMB |
long |
保留的内存量(MB) |
| availableMB |
long |
可用的内存量(MB) |
| allocatedMB |
long |
分配的内存量(MB) |
| totalMB |
long |
总内存量(MB) |
| reservedVirtualCores |
long |
保留的虚拟核心数 |
| availableVirtualCores |
long |
可用虚拟核心数 |
| allocatedVirtualCores |
long |
分配的虚拟核心数 |
| totalVirtualCores |
long |
虚拟核心总数 |
| containersAllocated |
int |
分配的容器数 |
| containersReserved |
int |
保留的容器数 |
| containersPending |
int |
待处理的容器数 |
| totalNodes |
int |
节点总数 |
| activeNodes |
int |
活动节点数 |
| lostNodes |
int |
丢失的节点数 |
| unhealthyNodes |
int |
不良节点数 |
| decommissioningNodes |
int |
停用的节点数 |
| decommissionedNodes |
int |
退役的节点数 |
| rebootedNodes |
int |
重新启动的节点数 |
| shutdownNodes |
int |
关闭的节点数 |
调度程序资源包含有关集群中配置的当前调度程序的信息。它目前支持Fifo,容量和公平调度程序。根据配置哪个调度程序,您将获得不同的信息,因此请务必查看类型信息。
请求URI
请求参数: 无
返回数据
使用应用程序尝试API,您可以获得代表应用程序尝试的资源的集合。在此资源上运行GET操作时,将获得App Attempt对象的集合。
请求URI
请求参数: 无
返回数据
| Item |
Data Type |
Description |
| id |
string |
应用尝试ID |
| nodeId |
string |
尝试运行的节点的节点ID |
| nodeHttpAddress |
string |
尝试运行的节点的节点http地址 |
| logsLink |
string |
应用程序尝试日志的http链接 |
| containerId |
string |
应用尝试容器的ID |
| startTime |
long |
尝试的开始时间(自纪元以来以毫秒为单位) |
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ri-ji/52501.html