Hadoop 文档

General

Common

HDFS

MapReduce

MapReduce REST APIs

YARN

YARN REST APIs

YARN Service

Submarine

Hadoop Compatible File Systems

Auth

Tools

Reference

Configuration

总览

NodeManager REST API允许用户获取节点上的状态以及有关在该节点上运行的应用程序和容器的信息。

启用CORS支持

要仅对NM启用跨域支持(CORS)(不对RM启用跨域支持),请设置以下配置参数:

在core-site.xml中,将org.apache.hadoop.security.HttpCrossOriginFilterInitializer添加到hadoop.http.filter.initializers中。在yarn-site.xml中,将yarn.nodemanager.webapp.cross-origin.enabled设置为true。

NodeManager信息API

节点信息资源提供有关该特定节点的总体信息。

支持HTTP操作

  • 得到

查询参数支持

  没有

nodeInfo对象的元素

物产 数据类型 描述
ID 长 NodeManager ID
nodeHostName 串 NodeManager的主机名
totalPmemAllocatedContainersMB 长 分配给容器使用的物理内存量,以MB为单位
totalVmemAllocatedContainersMB 长 分配给容器使用的虚拟内存量,以MB为单位
totalVCoresAllocatedContainers 长 分配供容器使用的虚拟核心数
vmemCheckEnabled 布尔值 是否为抢占启用了虚拟内存检查
pmemCheckEnabled 布尔值 是否为抢占启用了物理内存检查
lastNodeUpdateTime 长 收到运行状况报告的最后时间戳(自时期以来以毫秒为单位)
nmStartupTime 长 节点启动的时间戳(自纪元以来的毫秒数)
健康报告 串 节点的诊断健康报告
节点健康 布尔值 节点是否健康的真/假指示
nodeManagerVersion 串 NodeManager的版本
nodeManagerBuildVersion 串 具有版本,用户和校验和的NodeManager构建字符串
nodeManagerVersionBuiltOn 串 构建NodeManager的时间戳(自纪元以来以毫秒为单位)
hadoopVersion 串 Hadoop通用版本
hadoopBuildVersion 串 具有构建版本,用户和校验和的Hadoop通用构建字符串
hadoopVersionBuiltOn 串 建立hadoop common的时间戳(自纪元以来以毫秒为单位)

回应范例

JSON回应

HTTP请求:

  获取http:// nm-http-address:port / ws / v1 / node / info

响应标题:

  HTTP / 1.1 200 OK
  内容类型:application / json
  传输编码:分块
  服务器:码头(6.1.26)

响应主体:

{
  “ nodeInfo”:{
    “ healthReport”:“”,
    “ totalVmemAllocatedContainersMB”:17203,
    “ totalPmemAllocatedContainersMB”:8192,
    “ totalVCoresAllocatedContainers”:8
    “ vmemCheckEnabled”:否,
    “ pmemCheckEnabled”:是的,
    “ lastNodeUpdateTime”:1485814574224,
    “ nodeHealthy”:是的,
    “ nodeManagerVersion”:“ 3.0.0”,
    “ nodeManagerBuildVersion”:“ 3.0.0”,
    “ nodeManagerVersionBuiltOn”:“ 2017-01-30T17:42Z”,
    “ hadoopVersion”:“ 3.0.0”,
    “ hadoopBuildVersion”:“ 3.0.0”,
    “ hadoopVersionBuiltOn”:“ 2017-01-30T17:39Z”,
    “ id”:“ host.domain.com:46077”,
    “ nodeHostName”:“ host.domain.com”,
    “ nmStartupTime”:1485800887841
  }
}

XML回应

HTTP请求:

  接受:application / xml
  获取http:// nm-http-address:port / ws / v1 / node / info

响应标题:

  HTTP / 1.1 200 OK
  内容类型:application / xml
  内容长度:983
  服务器:码头(6.1.26)

响应主体:

<?xml版本=“ 1.0”编码=“ UTF-8”独立=“是”?>
<nodeInfo>
    <healthReport> </ healthReport>
    <totalVmemAllocatedContainersMB> 17203 </ totalVmemAllocatedContainersMB>
    <totalPmemAllocatedContainersMB> 8192 </ totalPmemAllocatedContainersMB>
    <totalVCoresAllocatedContainers> 8 </ totalVCoresAllocatedContainers>
    <vmemCheckEnabled> false </ vmemCheckEnabled>
    <pmemCheckEnabled> true </ pmemCheckEnabled>
    <lastNodeUpdateTime> 1485815774203 </ lastNodeUpdateTime>
    <nodeHealthy> true </ nodeHealthy>
    <nodeManagerVersion> 3.0.0 </ nodeManagerVersion>
    <nodeManagerBuildVersion> 3.0.0 </ nodeManagerBuildVersion>
    <nodeManagerVersionBuiltOn> 2017-01-30T17:42Z </ nodeManagerVersionBuiltOn>
    <hadoopVersion> 3.0.0 </ hadoopVersion>
    <hadoopBuildVersion> 3.0.0 </ hadoopBuildVersion>
    <hadoopVersionBuiltOn> 2017-01-30T17:39Z </ hadoopVersionBuiltOn>
    <id> host.domain.com:46077 </ id>
    <nodeHostName> host.domain.com </ nodeHostName>
    <nmStartupTime> 1485800887841 </ nmStartupTime>
</ nodeInfo>

应用程式API

使用Applications API,您可以获得资源的集合,每个资源代表一个应用程序。在此资源上运行GET操作时,将获得应用程序对象的集合。另请参阅应用程序API,以了解应用程序对象的语法。

支持HTTP操作

  • 得到

查询参数支持

可以指定多个参数。

  • 状态-应用程序状态
    • 用户-用户名

应用程序(Applications)对象的元素

当您请求应用程序列表时,该信息将作为应用程序对象的集合返回。另请参阅应用程序API,了解应用程序对象的语法。

物产 数据类型 描述
应用程式 应用程序对象数组(JSON)/零个或多个应用程序对象(XML) 应用程序对象的集合

回应范例

JSON回应

HTTP请求:

  获取http:// nm-http-address:port / ws / v1 / node / apps

响应标题:

  HTTP / 1.1 200 OK
  内容类型:application / json
  传输编码:分块
  服务器:码头(6.1.26)

响应主体:

{
   “应用” : {
      “ app”:[
         {
            “ containerids”:[
               “ container_1326121700862_0003_01_000001”,
               “容器_1326121700862_0003_01_000002”
            ],
            “ user”:“ user1”,
            “ id”:“ application_1326121700862_0003”,
            “ state”:“正在运行”
         },
         {
            “ user”:“ user1”,
            “ id”:“ application_1326121700862_0002”,
            “ state”:“完成”
         }
      ]
   }
}

XML回应

HTTP请求:

  获取http:// nm-http-address:port / ws / v1 / node / apps
  接受:application / xml

响应标题:

  HTTP / 1.1 200 OK
  内容类型:application / xml
  内容长度:400
  服务器:码头(6.1.26)

响应主体:

<?xml版本=“ 1.0”编码=“ UTF-8”独立=“是”?>
<apps>
  <app>
    <id> application_1326121700862_0002 </ id>
    <state>完成</ state>
    <user> user1 </ user>
  </ app>
  <app>
    <id> application_1326121700862_0003 </ id>
    <状态>运行中</状态>
    <user> user1 </ user>
    <containerids> container_1326121700862_0003_01_000002 </ containerids>
    <containerids> container_1326121700862_0003_01_000001 </ containerids>
  </ app>
</ apps>

应用程式API

应用程序资源包含有关已在此NodeManager上运行或正在运行的特定应用程序的信息。

URI

使用以下URI获取由appid值标识的应用程序的应用程序对象。

支持HTTP操作

  • 得到

查询参数支持

  没有

应用程序(应用程序)对象的元素

物产 数据类型 描述
ID 串 申请编号
用户 串 启动应用程序的用户
州 串 应用程序的状态-有效状态为:新,正在初始化,正在运行,FINISHING_CONTAINERS_WAIT,APPLICATION_RESOURCES_CLEANINGUP,已完成
容器编号 containerids(JSON)/零个或多个containerids(XML)的数组 应用程序当前在此节点上使用的容器标识列表。如果不存在,则该应用程序当前没有容器在运行。

回应范例

JSON回应

HTTP请求:

  GET http:// nm-http-address:port / ws / v1 / node / apps / application_1326121700862_0005

响应标题:

  HTTP / 1.1 200 OK
  内容类型:application / json
  传输编码:分块
  服务器:码头(6.1.26)

响应主体:

{
   “ app”:{
      “ containerids”:[
         “ container_1326121700862_0005_01_000003”,
         “容器_1326121700862_0005_01_000001”
      ],
      “ user”:“ user1”,
      “ id”:“ application_1326121700862_0005”,
      “ state”:“正在运行”
   }
}

XML回应

HTTP请求:

  GET http:// nm-http-address:port / ws / v1 / node / apps / application_1326121700862_0005
  接受:application / xml

响应标题:

  HTTP / 1.1 200 OK
  内容类型:application / xml
  内容长度:281
  服务器:码头(6.1.26)

响应主体:

<?xml版本=“ 1.0”编码=“ UTF-8”独立=“是”?>
<app>
  <id> application_1326121700862_0005 </ id>
  <状态>运行中</状态>
  <user> user1 </ user>
  <containerids> container_1326121700862_0005_01_000003 </ containerids>
  <containerids> container_1326121700862_0005_01_000001 </ containerids>
</ app>

容器API

使用容器API,您可以获得资源的集合,每个资源代表一个容器。在此资源上运行GET操作时,将获得容器对象的集合。另请参见Container API,以获取容器对象的语法。

支持HTTP操作

  • 得到

查询参数支持

  没有

容器对象的元素

当您请求容器列表时,该信息将作为容器对象的集合返回。另请参见Container API,以获取容器对象的语法。

物产 数据类型 描述
货柜 容器对象数组(JSON)/零个或多个容器对象(XML) 容器对象的集合

回应范例

JSON回应

HTTP请求:

  获取http:// nm-http-address:port / ws / v1 / node / containers

响应标题:

  HTTP / 1.1 200 OK
  内容类型:application / json
  传输编码:分块
  服务器:码头(6.1.26)

响应主体:

{
   “容器”:{
      “容器” : [
         {
            “ nodeId”:“ host.domain.com:8041”,
            “ totalMemoryNeededMB”:2048,
            “ totalVCoresNeeded”:1,
            “ state”:“ RUNNING”,
            “诊断”:“”,
            “ containerLogsLink”:“ http://host.domain.com:8042/node/containerlogs/container_1326121700862_0006_01_000001/user1”,
            “ user”:“ user1”,
            “ id”:“ container_1326121700862_0006_01_000001”,
            “ exitCode”:-1000,
            “ executionType”:“ GUARANTEED”,
            “ containerLogFiles”:[
              “ stdout”,
              “ stderr”,
              “系统日志”
            ]
         },
         {
            “ nodeId”:“ host.domain.com:8041”,
            “ totalMemoryNeededMB”:2048,
            “ totalVCoresNeeded”:2
            “ state”:“ RUNNING”,
            “诊断”:“”,
            “ containerLogsLink”:“ http://host.domain.com:8042/node/containerlogs/container_1326121700862_0006_01_000003/user1”,
            “ user”:“ user1”,
            “ id”:“ container_1326121700862_0006_01_000003”,
            “ exitCode”:-1000,
            “ executionType”:“ GUARANTEED”,
            “ containerLogFiles”:[
              “ stdout”,
              “ stderr”,
              “系统日志”
            ]
         }
      ]
   }
}

XML回应

HTTP请求:

  获取http:// nm-http-address:port / ws / v1 / node / containers
  接受:application / xml

响应标题:

  HTTP / 1.1 200 OK
  内容类型:application / xml
  内容长度:988
  服务器:码头(6.1.26)

响应主体:

<?xml版本=“ 1.0”编码=“ UTF-8”独立=“是”?>
<容器>
  <容器>
    <id> container_1326121700862_0006_01_000001 </ id>
    <状态>运行中</状态>
    <exitCode> -1000 </ exitCode>
    <diagnostics />
    <user> user1 </ user>
    <totalMemoryNeededMB> 2048 </ totalMemoryNeededMB>
    <totalVCoresNeeded> 1 </ totalVCoresNeeded>
    <containerLogsLink> http://host.domain.com:8042/node/containerlogs/container_1326121700862_0006_01_000001/user1 </ containerLogsLink>
    <nodeId> host.domain.com:8041 </ nodeId>
    <executionType>已保证</ executionType>
    <containerLogFiles> stdout </ containerLogFiles>
    <containerLogFiles> stderr </ containerLogFiles>
    <containerLogFiles> syslog </ containerLogFiles>
  </ container>
  <容器>
    <id> container_1326121700862_0006_01_000003 </ id>
    <state>完成</ state>
    <exitCode> 0 </ exitCode>
    <diagnostics>容器被ApplicationMaster杀死。</ diagnostics>
    <user> user1 </ user>
    <totalMemoryNeededMB> 2048 </ totalMemoryNeededMB>
    <totalVCoresNeeded> 2 </ totalVCoresNeeded>
    <containerLogsLink> http://host.domain.com:8042/node/containerlogs/container_1326121700862_0006_01_000003/user1 </ containerLogsLink>
    <nodeId> host.domain.com:8041 </ nodeId>
    <executionType>已保证</ executionType>
    <containerLogFiles> stdout </ containerLogFiles>
    <containerLogFiles> stderr </ containerLogFiles>
    <containerLogFiles> syslog </ containerLogFiles>
  </ container>
</容器>

容器API

容器资源包含有关在此NodeManager上运行的特定容器的信息。

URI

使用以下URI从由containerid值标识的容器中获取容器对象。

支持HTTP操作

  • 得到

查询参数支持

  没有

容器对象的元素

物产 数据类型 描述
ID 串 容器编号
州 串 容器状态-有效状态为:新,已定位,已定位_失败,已定位,正在运行,EXITED_WITH_SUCCESS,EXITED_WITH_FAILURE,杀死,CONTAINER_CLEANEDUP_AFTER_KILL,CONTAINER_RESOURCES_CLEANINGUP,已完成
nodeId 串 容器所在节点的ID
containerLogsLink 串 容器日志的http链接
用户 串 启动容器的用户的用户名
exitCode 整型 容器的退出代码
诊断 串 故障容器的诊断消息
totalMemoryNeededMB 长 容器所需的总内存量(以MB为单位)
需要的总VCores 长 容器所需的虚拟核心总数
executionType 串 保证类型或机会类型的容器
containerLogFiles 字符串数组 容器日志文件名

回应范例

JSON回应

HTTP请求:

  GET http:// nm-http-address:port / ws / v1 / nodes / containers / container_1326121700862_0007_01_000001

响应标题:

  HTTP / 1.1 200 OK
  内容类型:application / json
  传输编码:分块
  服务器:码头(6.1.26)

响应主体:

{
   “容器” : {
      “ nodeId”:“ host.domain.com:8041”,
      “ totalMemoryNeededMB”:2048,
      “ totalVCoresNeeded”:1,
      “ state”:“ RUNNING”,
      “诊断”:“”,
      “ containerLogsLink”:“ http://host.domain.com:8042/node/containerlogs/container_1326121700862_0007_01_000001/user1”,
      “ user”:“ user1”,
      “ id”:“ container_1326121700862_0007_01_000001”,
      “ exitCode”:-1000,
      “ executionType”:“ GUARANTEED”,
      “ containerLogFiles”:[
        “ stdout”,
        “ stderr”,
        “系统日志”
      ]
   }
}

XML回应

HTTP请求:

  GET http:// nm-http-address:port / ws / v1 / node / containers / container_1326121700862_0007_01_000001
  接受:application / xml

响应标题:

  HTTP / 1.1 200 OK
  内容类型:application / xml
  内容长度:491
  服务器:码头(6.1.26)

响应主体:

<?xml版本=“ 1.0”编码=“ UTF-8”独立=“是”?>
<容器>
  <id> container_1326121700862_0007_01_000001 </ id>
  <状态>运行中</状态>
  <exitCode> -1000 </ exitCode>
  <diagnostics />
  <user> user1 </ user>
  <totalMemoryNeededMB> 2048 </ totalMemoryNeededMB>
  <totalVCoresNeeded> 1 </ totalVCoresNeeded>
  <containerLogsLink> http://host.domain.com:8042/node/containerlogs/container_1326121700862_0007_01_000001/user1 </ containerLogsLink>
  <nodeId> host.domain.com:8041 </ nodeId>
  <executionType>已保证</ executionType>
  <containerLogFiles> stdout </ containerLogFiles>
  <containerLogFiles> stderr </ containerLogFiles>
  <containerLogFiles> syslog </ containerLogFiles>
</ container>