NodeManager REST API

概要

NodeManager REST APIを使用すると、ノードのステータスと、そのノードで実行されているアプリケーションおよびコンテナに関する情報を取得できます。

CORSサポートの有効化

NMに対してのみ(RMに対して有効化せずに)クロスオリジンサポート(CORS)を有効にするには、次の設定パラメータを設定してください。

core-site.xmlで、org.apache.hadoop.security.HttpCrossOriginFilterInitializerをhadoop.http.filter.initializersに追加します。yarn-site.xmlで、yarn.nodemanager.webapp.cross-origin.enabledをtrueに設定します。

NodeManager情報API

ノード情報リソースは、その特定のノードに関する全体的な情報を提供します。

URI

次の両方のURIは、クラスタ情報を提供します。

サポートされているHTTP操作

  • GET

サポートされているクエリパラメータ

  None

nodeInfoオブジェクトの要素

プロパティ データ型 説明
id long NodeManager ID
nodeHostName string NodeManagerのホスト名
totalPmemAllocatedContainersMB long コンテナで使用するために割り当てられた物理メモリの量(MB)
totalVmemAllocatedContainersMB long コンテナで使用するために割り当てられた仮想メモリの量(MB)
totalVCoresAllocatedContainers long コンテナで使用するために割り当てられた仮想コア数
vmemCheckEnabled boolean プリエンプションに対して仮想メモリチェックが有効になっているかどうか
pmemCheckEnabled boolean プリエンプションに対して物理メモリチェックが有効になっているかどうか
lastNodeUpdateTime long ヘルスレポートが受信された最後のタイムスタンプ(エポックからのミリ秒)
nmStartupTime long ノードが起動されたタイムスタンプ(エポックからのミリ秒)
healthReport string ノードの診断ヘルスレポート
nodeHealthy boolean ノードが正常かどうかを示すtrue/falseインジケータ
nodeManagerVersion string NodeManagerのバージョン
nodeManagerBuildVersion string ビルドバージョン、ユーザー、チェックサムを含むNodeManagerのビルド文字列
nodeManagerVersionBuiltOn string NodeManagerがビルドされたタイムスタンプ(エポックからのミリ秒)
hadoopVersion string Hadoop commonのバージョン
hadoopBuildVersion string ビルドバージョン、ユーザー、チェックサムを含むHadoop commonのビルド文字列
hadoopVersionBuiltOn string Hadoop commonがビルドされたタイムスタンプ(エポックからのミリ秒)

レスポンス例

JSONレスポンス

HTTPリクエスト

  GET http://nm-http-address:port/ws/v1/node/info

レスポンスヘッダー

  HTTP/1.1 200 OK
  Content-Type: application/json
  Transfer-Encoding: chunked
  Server: Jetty(6.1.26)

レスポンスボディ

{
  "nodeInfo": {
    "healthReport": "",
    "totalVmemAllocatedContainersMB": 17203,
    "totalPmemAllocatedContainersMB": 8192,
    "totalVCoresAllocatedContainers": 8,
    "vmemCheckEnabled": false,
    "pmemCheckEnabled": true,
    "lastNodeUpdateTime": 1485814574224,
    "nodeHealthy": true,
    "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リクエスト

  Accept: application/xml
  GET http://nm-http-address:port/ws/v1/node/info

レスポンスヘッダー

  HTTP/1.1 200 OK
  Content-Type: application/xml
  Content-Length: 983
  Server: Jetty(6.1.26)

レスポンスボディ

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<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

アプリケーションAPIを使用すると、それぞれがアプリケーションを表すリソースのコレクションを取得できます。このリソースに対してGET操作を実行すると、アプリケーションオブジェクトのコレクションを取得します。アプリケーションAPIも参照して、アプリケーションオブジェクトの構文を確認してください。

URI

サポートされているHTTP操作

  • GET

サポートされているクエリパラメータ

複数のパラメータを指定できます。

  • state - アプリケーションの状態
    • user - ユーザー名

apps(アプリケーション)オブジェクトの要素

アプリケーションのリストをリクエストすると、情報はappオブジェクトのコレクションとして返されます。アプリケーションAPIも参照して、appオブジェクトの構文を確認してください。

プロパティ データ型 説明
app appオブジェクトの配列(JSON)/appオブジェクトが0個以上(XML) アプリケーションオブジェクトのコレクション

レスポンス例

JSONレスポンス

HTTPリクエスト

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

レスポンスヘッダー

  HTTP/1.1 200 OK
  Content-Type: application/json
  Transfer-Encoding: chunked
  Server: Jetty(6.1.26)

レスポンスボディ

{
   "apps" : {
      "app" : [
         {
            "containerids" : [
               "container_1326121700862_0003_01_000001",
               "container_1326121700862_0003_01_000002"
            ],
            "user" : "user1",
            "id" : "application_1326121700862_0003",
            "state" : "RUNNING"
         },
         {
            "user" : "user1",
            "id" : "application_1326121700862_0002",
            "state" : "FINISHED"
         }
      ]
   }
}

XMLレスポンス

HTTPリクエスト

  GET http://nm-http-address:port/ws/v1/node/apps
  Accept: application/xml

レスポンスヘッダー

  HTTP/1.1 200 OK
  Content-Type: application/xml
  Content-Length: 400
  Server: Jetty(6.1.26)

レスポンスボディ

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<apps>
  <app>
    <id>application_1326121700862_0002</id>
    <state>FINISHED</state>
    <user>user1</user>
  </app>
  <app>
    <id>application_1326121700862_0003</id>
    <state>RUNNING</state>
    <user>user1</user>
    <containerids>container_1326121700862_0003_01_000002</containerids>
    <containerids>container_1326121700862_0003_01_000001</containerids>
  </app>
</apps>

アプリケーションAPI

アプリケーションリソースには、このNodeManagerで実行された、または実行中の特定のアプリケーションに関する情報が含まれています。

URI

appid値で識別されるアプリケーションのappオブジェクトを取得するには、次のURIを使用します。

サポートされているHTTP操作

  • GET

サポートされているクエリパラメータ

  None

app(アプリケーション)オブジェクトの要素

プロパティ データ型 説明
id string アプリケーションID
user string アプリケーションを開始したユーザー
state string アプリケーションの状態 - 有効な状態は次のとおりです。NEW、INITING、RUNNING、FINISHING_CONTAINERS_WAIT、APPLICATION_RESOURCES_CLEANINGUP、FINISHED
containerids containeridの配列(JSON)/containeridが0個以上(XML) このノードでアプリケーションによって現在使用されているcontaineridのリスト。存在しない場合は、このアプリケーションに対してコンテナが現在実行されていません。

レスポンス例

JSONレスポンス

HTTPリクエスト

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

レスポンスヘッダー

  HTTP/1.1 200 OK
  Content-Type: application/json
  Transfer-Encoding: chunked
  Server: Jetty(6.1.26)

レスポンスボディ

{
   "app" : {
      "containerids" : [
         "container_1326121700862_0005_01_000003",
         "container_1326121700862_0005_01_000001"
      ],
      "user" : "user1",
      "id" : "application_1326121700862_0005",
      "state" : "RUNNING"
   }
}

XMLレスポンス

HTTPリクエスト

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

レスポンスヘッダー

  HTTP/1.1 200 OK
  Content-Type: application/xml
  Content-Length: 281
  Server: Jetty(6.1.26)

レスポンスボディ

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<app>
  <id>application_1326121700862_0005</id>
  <state>RUNNING</state>
  <user>user1</user>
  <containerids>container_1326121700862_0005_01_000003</containerids>
  <containerids>container_1326121700862_0005_01_000001</containerids>
</app>

コンテナAPI

コンテナAPIを使用すると、それぞれがコンテナを表すリソースのコレクションを取得できます。このリソースに対してGET操作を実行すると、コンテナオブジェクトのコレクションを取得します。コンテナAPIも参照して、コンテナオブジェクトの構文を確認してください。

URI

サポートされているHTTP操作

  • GET

サポートされているクエリパラメータ

  None

containersオブジェクトの要素

コンテナのリストをリクエストすると、情報はコンテナオブジェクトのコレクションとして返されます。コンテナAPIも参照して、コンテナオブジェクトの構文を確認してください。

プロパティ データ型 説明
containers コンテナオブジェクトの配列(JSON)/コンテナオブジェクトが0個以上(XML) コンテナオブジェクトのコレクション

レスポンス例

JSONレスポンス

HTTPリクエスト

  GET http://nm-http-address:port/ws/v1/node/containers

レスポンスヘッダー

  HTTP/1.1 200 OK
  Content-Type: application/json
  Transfer-Encoding: chunked
  Server: Jetty(6.1.26)

レスポンスボディ

{
   "containers" : {
      "container" : [
         {
            "nodeId" : "host.domain.com:8041",
            "totalMemoryNeededMB" : 2048,
            "totalVCoresNeeded" : 1,
            "state" : "RUNNING",
            "diagnostics" : "",
            "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",
              "syslog"
            ]
         },
         {
            "nodeId" : "host.domain.com:8041",
            "totalMemoryNeededMB" : 2048,
            "totalVCoresNeeded" : 2,
            "state" : "RUNNING",
            "diagnostics" : "",
            "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",
              "syslog"
            ]
         }
      ]
   }
}

XMLレスポンス

HTTPリクエスト

  GET http://nm-http-address:port/ws/v1/node/containers
  Accept: application/xml

レスポンスヘッダー

  HTTP/1.1 200 OK
  Content-Type: application/xml
  Content-Length: 988
  Server: Jetty(6.1.26)

レスポンスボディ

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<containers>
  <container>
    <id>container_1326121700862_0006_01_000001</id>
    <state>RUNNING</state>
    <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>GUARANTEED</executionType>
    <containerLogFiles>stdout</containerLogFiles>
    <containerLogFiles>stderr</containerLogFiles>
    <containerLogFiles>syslog</containerLogFiles>
  </container>
  <container>
    <id>container_1326121700862_0006_01_000003</id>
    <state>DONE</state>
    <exitCode>0</exitCode>
    <diagnostics>Container killed by the 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>GUARANTEED</executionType>
    <containerLogFiles>stdout</containerLogFiles>
    <containerLogFiles>stderr</containerLogFiles>
    <containerLogFiles>syslog</containerLogFiles>
  </container>
</containers>

コンテナAPI

コンテナリソースには、このNodeManagerで実行されている特定のコンテナに関する情報が含まれています。

URI

containerid値で識別されるコンテナからコンテナオブジェクトを取得するには、次のURIを使用します。

サポートされているHTTP操作

  • GET

サポートされているクエリパラメータ

  None

containerオブジェクトの要素

プロパティ データ型 説明
id string コンテナID
state string コンテナの状態 - 有効な状態は次のとおりです。NEW、LOCALIZING、LOCALIZATION_FAILED、LOCALIZED、RUNNING、EXITED_WITH_SUCCESS、EXITED_WITH_FAILURE、KILLING、CONTAINER_CLEANEDUP_AFTER_KILL、CONTAINER_RESOURCES_CLEANINGUP、DONE
nodeId string コンテナが存在するノードのID
containerLogsLink string コンテナログへのhttpリンク
user string コンテナを開始したユーザーのユーザー名
exitCode int コンテナの終了コード
diagnostics string 失敗したコンテナの診断メッセージ
totalMemoryNeededMB long コンテナに必要なメモリの総量(MB)
totalVCoresNeeded long コンテナに必要な仮想コアの総数
executionType string GUARANTEEDまたはOPPORTUNISTICのコンテナタイプ
containerLogFiles 文字列の配列 コンテナログファイル名

レスポンス例

JSONレスポンス

HTTPリクエスト

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

レスポンスヘッダー

  HTTP/1.1 200 OK
  Content-Type: application/json
  Transfer-Encoding: chunked
  Server: Jetty(6.1.26)

レスポンスボディ

{
   "container" : {
      "nodeId" : "host.domain.com:8041",
      "totalMemoryNeededMB" : 2048,
      "totalVCoresNeeded" : 1,
      "state" : "RUNNING",
      "diagnostics" : "",
      "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",
        "syslog"
      ]
   }
}

XMLレスポンス

HTTPリクエスト

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

レスポンスヘッダー

  HTTP/1.1 200 OK
  Content-Type: application/xml
  Content-Length: 491
  Server: Jetty(6.1.26)

レスポンスボディ

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<container>
  <id>container_1326121700862_0007_01_000001</id>
  <state>RUNNING</state>
  <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>GUARANTEED</executionType>
  <containerLogFiles>stdout</containerLogFiles>
  <containerLogFiles>stderr</containerLogFiles>
  <containerLogFiles>syslog</containerLogFiles>
</container>

補助サービスAPI

補助サービスAPIを使用すると、それぞれが補助サービスを表すリソースのコレクションを取得できます。このリソースに対してGET操作を実行すると、補助サービス情報オブジェクトのコレクションを取得します。

YARN管理者は、PUT操作を使用して、NodeManagerで実行されている補助サービスを更新できます。リクエストの本文は、補助サービスマニフェストファイルと同じ形式である必要があります。

URI

サポートされているHTTP操作

  • GET
  • PUT

サポートされているクエリパラメータ

  None

auxiliaryservicesオブジェクトの要素

補助サービスのリストをリクエストすると、情報はサービス情報オブジェクトのコレクションとして返されます。

プロパティ データ型 説明
services サービス情報オブジェクトの配列(JSON)/サービス情報オブジェクトが0個以上(XML) サービス情報オブジェクトのコレクション

GETレスポンス例

JSONレスポンス

HTTPリクエスト

  GET http://nm-http-address:port/ws/v1/node/auxiliaryservices

レスポンスヘッダー

  HTTP/1.1 200 OK
  Content-Type: application/json
  Transfer-Encoding: chunked
  Server: Jetty(6.1.26)

レスポンスボディ

{
    "services": {
        "service": [
            {
                "name": "timeline_collector",
                "startTime": "2018-12-18 21:24:27",
                "version": "1"
            },
            {
                "name": "mapreduce_shuffle",
                "startTime": "2018-12-18 21:24:27",
                "version": "2"
            }
        ]
    }
}

XMLレスポンス

HTTPリクエスト

  GET http://nm-http-address:port/ws/v1/node/auxiliaryservices
  Accept: application/xml

レスポンスヘッダー

  HTTP/1.1 200 OK
  Content-Type: application/xml
  Content-Length: 299
  Server: Jetty(6.1.26)

レスポンスボディ

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<services>
  <service>
    <name>timeline_collector</name>
    <version>1</version>
    <startTime>2018-12-18 21:00:00</startTime>
  </service>
  <service>
    <name>mapreduce_shuffle</name>
    <version>2</version>
    <startTime>2018-12-18 21:00:00</startTime>
  </service>
</services>