ResourceManager REST API

概要

ResourceManager REST APIを使用すると、ユーザーはクラスターに関する情報を取得できます。クラスターの状態、クラスターのメトリクス、スケジューラ情報、クラスター内のノードに関する情報、およびクラスター上のアプリケーションに関する情報などです。

CORSサポートの有効化

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

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

クラスター情報API

クラスター情報リソースは、クラスターに関する全体的な情報を提供します。

URI

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

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

  • GET

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

  None

clusterInfoオブジェクトの要素

項目 データ型 説明
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 commonのバージョン
hadoopBuildVersion string ビルドバージョン、ユーザー、およびチェックサムを含むHadoop commonビルド文字列
hadoopVersionBuiltOn string hadoop commonが構築されたときのタイムスタンプ(エポックからのミリ秒単位)
haZooKeeperConnectionState string 高可用性サービスのZooKeeper接続の状態

応答例

JSON応答

HTTPリクエスト

  GET http://rm-http-address:port/ws/v1/cluster/info

応答ヘッダー

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

応答本文

{
  "clusterInfo":
  {
    "id":1324053971963,
    "startedOn":1324053971963,
    "state":"STARTED",
    "haState":"ACTIVE",
    "rmStateStoreName":"org.apache.hadoop.yarn.server.resourcemanager.recovery.NullRMStateStore",
    "resourceManagerVersion":"3.0.0-SNAPSHOT",
    "resourceManagerBuildVersion":"3.0.0-SNAPSHOT from unknown by user1 source checksum 11111111111111111111111111111111",
    "resourceManagerVersionBuiltOn":"2016-01-01T01:00Z",
    "hadoopVersion":"3.0.0-SNAPSHOT",
    "hadoopBuildVersion":"3.0.0-SNAPSHOT from unknown by user1 source checksum 11111111111111111111111111111111",
    "hadoopVersionBuiltOn":"2016-01-01T01:00Z",
    "haZooKeeperConnectionState": "ResourceManager HA is not enabled."  }
}

XML応答

HTTPリクエスト

  Accept: application/xml
  GET http://rm-http-address:port/ws/v1/cluster/info

応答ヘッダー

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

応答本文

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<clusterInfo>
  <id>1476912658570</id>
  <startedOn>1476912658570</startedOn>
  <state>STARTED</state>
  <haState>ACTIVE</haState>
  <rmStateStoreName>org.apache.hadoop.yarn.server.resourcemanager.recovery.NullRMStateStore</rmStateStoreName>
  <resourceManagerVersion>3.0.0-SNAPSHOT</resourceManagerVersion>
  <resourceManagerBuildVersion>3.0.0-SNAPSHOT from unknown by user1 source checksum 11111111111111111111111111111111</resourceManagerBuildVersion>
  <resourceManagerVersionBuiltOn>2016-01-01T01:00Z</resourceManagerVersionBuiltOn>
  <hadoopVersion>3.0.0-SNAPSHOT</hadoopVersion>
  <hadoopBuildVersion>3.0.0-SNAPSHOT from unknown by user1 source checksum 11111111111111111111111111111111</hadoopBuildVersion>
  <hadoopVersionBuiltOn>2016-01-01T01:00Z</hadoopVersionBuiltOn>
  <haZooKeeperConnectionState>ResourceManager HA is not enabled.</haZooKeeperConnectionState>
</clusterInfo>

クラスターメトリクスAPI

クラスターメトリクスリソースは、クラスターに関するいくつかの全体的なメトリクスを提供します。詳細なメトリクスは、jmxインターフェースから取得する必要があります。

URI

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

  • GET

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

  None

clusterMetricsオブジェクトの要素

項目 データ型 説明
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 シャットダウンされたノードの数

応答例

JSON応答

HTTPリクエスト

  GET http://rm-http-address:port/ws/v1/cluster/metrics

応答ヘッダー

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

応答本文

{
  "clusterMetrics":
  {
    "appsSubmitted":0,
    "appsCompleted":0,
    "appsPending":0,
    "appsRunning":0,
    "appsFailed":0,
    "appsKilled":0,
    "reservedMB":0,
    "availableMB":17408,
    "allocatedMB":0,
    "reservedVirtualCores":0,
    "availableVirtualCores":7,
    "allocatedVirtualCores":1,
    "containersAllocated":0,
    "containersReserved":0,
    "containersPending":0,
    "totalMB":17408,
    "totalVirtualCores":8,
    "totalNodes":1,
    "lostNodes":0,
    "unhealthyNodes":0,
    "decommissioningNodes":0,
    "decommissionedNodes":0,
    "rebootedNodes":0,
    "activeNodes":1,
    "shutdownNodes":0
  }
}

XML応答

HTTPリクエスト

  GET http://rm-http-address:port/ws/v1/cluster/metrics
  Accept: application/xml

応答ヘッダー

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

応答本文

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<clusterMetrics>
  <appsSubmitted>0</appsSubmitted>
  <appsCompleted>0</appsCompleted>
  <appsPending>0</appsPending>
  <appsRunning>0</appsRunning>
  <appsFailed>0</appsFailed>
  <appsKilled>0</appsKilled>
  <reservedMB>0</reservedMB>
  <availableMB>17408</availableMB>
  <allocatedMB>0</allocatedMB>
  <reservedVirtualCores>0</reservedVirtualCores>
  <availableVirtualCores>7</availableVirtualCores>
  <allocatedVirtualCores>1</allocatedVirtualCores>
  <containersAllocated>0</containersAllocated>
  <containersReserved>0</containersReserved>
  <containersPending>0</containersPending>
  <totalMB>17408</totalMB>
  <totalVirtualCores>8</totalVirtualCores>
  <totalNodes>1</totalNodes>
  <lostNodes>0</lostNodes>
  <unhealthyNodes>0</unhealthyNodes>
  <decommissioningNodes>0</decommissioningNodes>
  <decommissionedNodes>0</decommissionedNodes>
  <rebootedNodes>0</rebootedNodes>
  <activeNodes>1</activeNodes>
  <shutdownNodes>0</shutdownNodes>
</clusterMetrics>

クラスタースケジューラーAPI

スケジューラーリソースには、クラスターで現在構成されているスケジューラーに関する情報が含まれています。現在、Fifo、Capacity、およびFair Schedulerがサポートされています。構成されているスケジューラーに応じて異なる情報が取得されるため、必ずタイプ情報を確認してください。

URI

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

  • GET

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

  None

Capacity Scheduler API

キャパシティスケジューラーは、階層型キューをサポートしています。この1つのリクエストは、すべてのキューとそれらが持つサブキューに関する情報を出力します。ジョブを実際に送信できるキューは、リーフキューと呼ばれます。これらのキューには、追加のデータが関連付けられています。

schedulerInfoオブジェクトの要素

項目 データ型 説明
type string スケジューラータイプ - capacityScheduler
capacity float 親キューに対する割合で設定されたキュー容量
usedCapacity float 使用済みのキュー容量(割合)
maxCapacity float 親キューに対する割合で設定された最大キュー容量
queueName string キューの名前
queues キューの配列(JSON)/ゼロ個以上のキューオブジェクト(XML) キューリソースのコレクション
health 単一のヘルスオブジェクト キャパシティスケジューラのヘルス指標。この指標は 2.8.0 から存在していましたが、出力が適切にフォーマットされていませんでした。そのため、ユーザーはこのフィールドをクリーンに利用することができませんでした。これは 3.2.0 以降で最適化されています。

親キューの queues オブジェクトの要素

項目 データ型 説明
capacity float 親キューに対する割合で設定されたキュー容量
usedCapacity float 使用済みのキュー容量(割合)
maxCapacity float 親キューに対する割合で設定された最大キュー容量
absoluteCapacity float このキューがクラスター全体で使用できる絶対容量の割合
absoluteMaxCapacity float このキューがクラスター全体で使用できる絶対最大容量の割合
absoluteUsedCapacity float このキューがクラスター全体で使用している絶対使用容量の割合
numApplications int 現在キューにあるアプリケーションの数
usedResources string キューが現在使用しているリソースを記述する文字列
queueName string キューの名前
state QueueState の文字列 キューの状態
queues キューの配列(JSON)/ゼロ個以上のキューオブジェクト(XML) サブキュー情報のコレクション。キューにサブキューがない場合は省略されます。
resourcesUsed 単一のリソースオブジェクト このキューで使用されているリソースの合計量

リーフキューの queues オブジェクトの要素 - 親のすべての要素を含みますが、'queues' は除き、さらに以下を含みます

項目 データ型 説明
type String キューのタイプ - capacitySchedulerLeafQueueInfo
numActiveApplications int このキューにあるアクティブなアプリケーションの数
numPendingApplications int このキューにある保留中のアプリケーションの数
numContainers int 使用中のコンテナの数
allocatedContainers int このキューで割り当てられたコンテナの数
reservedContainers int このキューで予約されたコンテナの数
pendingContainers int このキューで保留中のコンテナの数
maxApplications int このキューが持つことができるアプリケーションの最大数
maxApplicationsPerUser int このキューがユーザーごとに持つことができるアプリケーションの最大数
maxActiveApplications int このキューが持つことができるアクティブなアプリケーションの最大数
maxActiveApplicationsPerUser int このキューがユーザーごとに持つことができるアクティブなアプリケーションの最大数
userLimit int 構成で設定された最小ユーザー制限パーセント
userLimitFactor float 構成で設定されたユーザー制限ファクター
users ユーザーの配列(JSON)/ゼロ以上のユーザーオブジェクト(XML) 使用されているリソースを含むユーザーオブジェクトのコレクション

ユーザーのユーザーオブジェクトの要素

項目 データ型 説明
username String リソースを使用しているユーザーのユーザー名
resourcesUsed 単一のリソースオブジェクト このキューでユーザーが使用しているリソースの量
numActiveApplications int このキューでのこのユーザーのアクティブなアプリケーションの数
numPendingApplications int このキューでのこのユーザーの保留中のアプリケーションの数

ユーザーとキューの resourcesUsed のリソースオブジェクトの要素

項目 データ型 説明
memory int 使用されているメモリ量 (MB 単位)
vCores int 仮想コアの数

schedulerInfo のヘルスオブジェクトの要素

項目 データ型 説明
lastrun long アプリケーションが開始された時刻 (エポックからのミリ秒単位)
operationsInfo 操作の配列(JSON)/操作オブジェクト(XML) 操作オブジェクトのコレクション
lastRunDetails lastRunDetails の配列(JSON)/lastRunDetail オブジェクト(XML) lastRunDetail オブジェクトのコレクション

ヘルス内の operation オブジェクトの要素

項目 データ型 説明
operation string 操作のタイプ
nodeId string 操作が関連付けられているノードの ID
containerId string 操作が関連付けられているコンテナの ID
queue string 操作が関連付けられているキューの名前

ヘルス内の lastRunDetail オブジェクトの要素

項目 データ型 説明
operation string 操作のタイプ
count long 操作が関連付けられているノードの ID
resources 単一のリソースオブジェクト 操作が関連付けられているリソース

応答例

JSON応答

HTTPリクエスト

  GET http://rm-http-address:port/ws/v1/cluster/scheduler

応答ヘッダー

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

応答本文

{
    "scheduler": {
        "schedulerInfo": {
            "capacity": 100.0,
            "maxCapacity": 100.0,
            "queueName": "root",
            "queues": {
                "queue": [
                    {
                        "absoluteCapacity": 10.5,
                        "absoluteMaxCapacity": 50.0,
                        "absoluteUsedCapacity": 0.0,
                        "capacity": 10.5,
                        "maxCapacity": 50.0,
                        "numApplications": 0,
                        "queueName": "a",
                        "queues": {
                            "queue": [
                                {
                                    "absoluteCapacity": 3.15,
                                    "absoluteMaxCapacity": 25.0,
                                    "absoluteUsedCapacity": 0.0,
                                    "capacity": 30.000002,
                                    "maxCapacity": 50.0,
                                    "numApplications": 0,
                                    "queueName": "a1",
                                    "queues": {
                                        "queue": [
                                            {
                                                "absoluteCapacity": 2.6775,
                                                "absoluteMaxCapacity": 25.0,
                                                "absoluteUsedCapacity": 0.0,
                                                "capacity": 85.0,
                                                "maxActiveApplications": 1,
                                                "maxActiveApplicationsPerUser": 1,
                                                "maxApplications": 267,
                                                "maxApplicationsPerUser": 267,
                                                "maxCapacity": 100.0,
                                                "numActiveApplications": 0,
                                                "numApplications": 0,
                                                "numContainers": 0,
                                                "numPendingApplications": 0,
                                                "queueName": "a1a",
                                                "resourcesUsed": {
                                                    "memory": 0,
                                                    "vCores": 0
                                                },
                                                "state": "RUNNING",
                                                "type": "capacitySchedulerLeafQueueInfo",
                                                "usedCapacity": 0.0,
                                                "usedResources": "<memory:0, vCores:0>",
                                                "userLimit": 100,
                                                "userLimitFactor": 1.0,
                                                "users": null
                                            },
                                            {
                                                "absoluteCapacity": 0.47250003,
                                                "absoluteMaxCapacity": 25.0,
                                                "absoluteUsedCapacity": 0.0,
                                                "capacity": 15.000001,
                                                "maxActiveApplications": 1,
                                                "maxActiveApplicationsPerUser": 1,
                                                "maxApplications": 47,
                                                "maxApplicationsPerUser": 47,
                                                "maxCapacity": 100.0,
                                                "numActiveApplications": 0,
                                                "numApplications": 0,
                                                "numContainers": 0,
                                                "numPendingApplications": 0,
                                                "queueName": "a1b",
                                                "resourcesUsed": {
                                                    "memory": 0,
                                                    "vCores": 0
                                                },
                                                "state": "RUNNING",
                                                "type": "capacitySchedulerLeafQueueInfo",
                                                "usedCapacity": 0.0,
                                                "usedResources": "<memory:0, vCores:0>",
                                                "userLimit": 100,
                                                "userLimitFactor": 1.0,
                                                "users": null
                                            }
                                        ]
                                    },
                                    "resourcesUsed": {
                                        "memory": 0,
                                        "vCores": 0
                                    },
                                    "state": "RUNNING",
                                    "usedCapacity": 0.0,
                                    "usedResources": "<memory:0, vCores:0>"
                                },
                                {
                                    "absoluteCapacity": 7.35,
                                    "absoluteMaxCapacity": 50.0,
                                    "absoluteUsedCapacity": 0.0,
                                    "capacity": 70.0,
                                    "maxActiveApplications": 1,
                                    "maxActiveApplicationsPerUser": 100,
                                    "maxApplications": 735,
                                    "maxApplicationsPerUser": 73500,
                                    "maxCapacity": 100.0,
                                    "numActiveApplications": 0,
                                    "numApplications": 0,
                                    "numContainers": 0,
                                    "numPendingApplications": 0,
                                    "queueName": "a2",
                                    "resourcesUsed": {
                                        "memory": 0,
                                        "vCores": 0
                                    },
                                    "state": "RUNNING",
                                    "type": "capacitySchedulerLeafQueueInfo",
                                    "usedCapacity": 0.0,
                                    "usedResources": "<memory:0, vCores:0>",
                                    "userLimit": 100,
                                    "userLimitFactor": 100.0,
                                    "users": null
                                }
                            ]
                        },
                        "resourcesUsed": {
                            "memory": 0,
                            "vCores": 0
                        },
                        "state": "RUNNING",
                        "usedCapacity": 0.0,
                        "usedResources": "<memory:0, vCores:0>"
                    },
                    {
                        "absoluteCapacity": 89.5,
                        "absoluteMaxCapacity": 100.0,
                        "absoluteUsedCapacity": 0.0,
                        "capacity": 89.5,
                        "maxCapacity": 100.0,
                        "numApplications": 2,
                        "queueName": "b",
                        "queues": {
                            "queue": [
                                {
                                    "absoluteCapacity": 53.7,
                                    "absoluteMaxCapacity": 100.0,
                                    "absoluteUsedCapacity": 0.0,
                                    "capacity": 60.000004,
                                    "maxActiveApplications": 1,
                                    "maxActiveApplicationsPerUser": 100,
                                    "maxApplications": 5370,
                                    "maxApplicationsPerUser": 537000,
                                    "maxCapacity": 100.0,
                                    "numActiveApplications": 1,
                                    "numApplications": 2,
                                    "numContainers": 0,
                                    "numPendingApplications": 1,
                                    "queueName": "b1",
                                    "resourcesUsed": {
                                        "memory": 0,
                                        "vCores": 0
                                    },
                                    "state": "RUNNING",
                                    "type": "capacitySchedulerLeafQueueInfo",
                                    "usedCapacity": 0.0,
                                    "usedResources": "<memory:0, vCores:0>",
                                    "userLimit": 100,
                                    "userLimitFactor": 100.0,
                                    "users": {
                                        "user": [
                                            {
                                                "numActiveApplications": 0,
                                                "numPendingApplications": 1,
                                                "resourcesUsed": {
                                                    "memory": 0,
                                                    "vCores": 0
                                                },
                                                "username": "user2"
                                            },
                                            {
                                                "numActiveApplications": 1,
                                                "numPendingApplications": 0,
                                                "resourcesUsed": {
                                                    "memory": 0,
                                                    "vCores": 0
                                                },
                                                "username": "user1"
                                            }
                                        ]
                                    }
                                },
                                {
                                    "absoluteCapacity": 35.3525,
                                    "absoluteMaxCapacity": 100.0,
                                    "absoluteUsedCapacity": 0.0,
                                    "capacity": 39.5,
                                    "maxActiveApplications": 1,
                                    "maxActiveApplicationsPerUser": 100,
                                    "maxApplications": 3535,
                                    "maxApplicationsPerUser": 353500,
                                    "maxCapacity": 100.0,
                                    "numActiveApplications": 0,
                                    "numApplications": 0,
                                    "numContainers": 0,
                                    "numPendingApplications": 0,
                                    "queueName": "b2",
                                    "resourcesUsed": {
                                        "memory": 0,
                                        "vCores": 0
                                    },
                                    "state": "RUNNING",
                                    "type": "capacitySchedulerLeafQueueInfo",
                                    "usedCapacity": 0.0,
                                    "usedResources": "<memory:0, vCores:0>",
                                    "userLimit": 100,
                                    "userLimitFactor": 100.0,
                                    "users": null
                                },
                                {
                                    "absoluteCapacity": 0.4475,
                                    "absoluteMaxCapacity": 100.0,
                                    "absoluteUsedCapacity": 0.0,
                                    "capacity": 0.5,
                                    "maxActiveApplications": 1,
                                    "maxActiveApplicationsPerUser": 100,
                                    "maxApplications": 44,
                                    "maxApplicationsPerUser": 4400,
                                    "maxCapacity": 100.0,
                                    "numActiveApplications": 0,
                                    "numApplications": 0,
                                    "numContainers": 0,
                                    "numPendingApplications": 0,
                                    "queueName": "b3",
                                    "resourcesUsed": {
                                        "memory": 0,
                                        "vCores": 0
                                    },
                                    "state": "RUNNING",
                                    "type": "capacitySchedulerLeafQueueInfo",
                                    "usedCapacity": 0.0,
                                    "usedResources": "<memory:0, vCores:0>",
                                    "userLimit": 100,
                                    "userLimitFactor": 100.0,
                                    "users": null
                                }
                            ]
                        },
                        "resourcesUsed": {
                            "memory": 0,
                            "vCores": 0
                        },
                        "state": "RUNNING",
                        "usedCapacity": 0.0,
                        "usedResources": "<memory:0, vCores:0>"
                    }
                ]
            },
            "health": {
                "lastrun": 1326381444693,
                "operationsInfo": [
                    {
                        "operation": "last-allocation",
                        "nodeId": "N/A",
                        "containerId": "N/A",
                        "queue": "N/A"
                    },
                    {
                        "operation": "last-release",
                        "nodeId": "host.domain.com:8041",
                        "containerId": "container_1326821518301_0005_01_000001",
                        "queue": "root.default"
                    },
                    {
                        "operation": "last-preemption",
                        "nodeId": "N/A",
                        "containerId": "N/A",
                        "queue": "N/A"
                    },
                    {
                        "operation": "last-reservation",
                        "nodeId": "N/A",
                        "containerId": "N/A",
                        "queue": "N/A"
                    }
                ],
                "lastRunDetails": [
                    {
                        "operation": "releases",
                        "count": 0,
                        "resources": {
                            "memory": 0,
                            "vCores": 0
                        }
                    },
                    {
                        "operation": "allocations",
                        "count": 0,
                        "resources": {
                            "memory": 0,
                            "vCores": 0
                        }
                    },
                    {
                        "operation": "reservations",
                        "count": 0,
                        "resources": {
                            "memory": 0,
                            "vCores": 0
                        }
                    }
                ]
            },
            "type": "capacityScheduler",
            "usedCapacity": 0.0
        }
    }
}
```json

**XML response**

HTTP Request:

      Accept: application/xml
      GET http://rm-http-address:port/ws/v1/cluster/scheduler

Response Header:

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

Response Body:

```xml
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<scheduler>
  <schedulerInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="capacityScheduler">
    <capacity>100.0</capacity>
    <usedCapacity>0.0</usedCapacity>
    <maxCapacity>100.0</maxCapacity>
    <queueName>root</queueName>
    <queues>
      <queue>
        <capacity>10.5</capacity>
        <usedCapacity>0.0</usedCapacity>
        <maxCapacity>50.0</maxCapacity>
        <absoluteCapacity>10.5</absoluteCapacity>
        <absoluteMaxCapacity>50.0</absoluteMaxCapacity>
        <absoluteUsedCapacity>0.0</absoluteUsedCapacity>
        <numApplications>0</numApplications>
        <usedResources>&lt;memory:0, vCores:0&gt;</usedResources>
        <queueName>a</queueName>
        <state>RUNNING</state>
        <queues>
          <queue>
            <capacity>30.000002</capacity>
            <usedCapacity>0.0</usedCapacity>
            <maxCapacity>50.0</maxCapacity>
            <absoluteCapacity>3.15</absoluteCapacity>
            <absoluteMaxCapacity>25.0</absoluteMaxCapacity>
            <absoluteUsedCapacity>0.0</absoluteUsedCapacity>
            <numApplications>0</numApplications>
            <usedResources>&lt;memory:0, vCores:0&gt;</usedResources>
            <queueName>a1</queueName>
            <state>RUNNING</state>
            <queues>
              <queue xsi:type="capacitySchedulerLeafQueueInfo">
                <capacity>85.0</capacity>
                <usedCapacity>0.0</usedCapacity>
                <maxCapacity>100.0</maxCapacity>
                <absoluteCapacity>2.6775</absoluteCapacity>
                <absoluteMaxCapacity>25.0</absoluteMaxCapacity>
                <absoluteUsedCapacity>0.0</absoluteUsedCapacity>
                <numApplications>0</numApplications>
                <usedResources>&lt;memory:0, vCores:0&gt;</usedResources>
                <queueName>a1a</queueName>
                <state>RUNNING</state>
                <resourcesUsed>
                  <memory>0</memory>
                  <vCores>0</vCores>
                </resourcesUsed>
                <numActiveApplications>0</numActiveApplications>
                <numPendingApplications>0</numPendingApplications>
                <numContainers>0</numContainers>
                <maxApplications>267</maxApplications>
                <maxApplicationsPerUser>267</maxApplicationsPerUser>
                <maxActiveApplications>1</maxActiveApplications>
                <maxActiveApplicationsPerUser>1</maxActiveApplicationsPerUser>
                <userLimit>100</userLimit>
                <users/>
                <userLimitFactor>1.0</userLimitFactor>
              </queue>
              <queue xsi:type="capacitySchedulerLeafQueueInfo">
                <capacity>15.000001</capacity>
                <usedCapacity>0.0</usedCapacity>
                <maxCapacity>100.0</maxCapacity>
                <absoluteCapacity>0.47250003</absoluteCapacity>
                <absoluteMaxCapacity>25.0</absoluteMaxCapacity>
                <absoluteUsedCapacity>0.0</absoluteUsedCapacity>
                <numApplications>0</numApplications>
                <usedResources>&lt;memory:0, vCores:0&gt;</usedResources>
                <queueName>a1b</queueName>
                <state>RUNNING</state>
                <resourcesUsed>
                  <memory>0</memory>
                  <vCores>0</vCores>
                </resourcesUsed>
                <numActiveApplications>0</numActiveApplications>
                <numPendingApplications>0</numPendingApplications>
                <numContainers>0</numContainers>
                <maxApplications>47</maxApplications>
                <maxApplicationsPerUser>47</maxApplicationsPerUser>
                <maxActiveApplications>1</maxActiveApplications>
                <maxActiveApplicationsPerUser>1</maxActiveApplicationsPerUser>
                <userLimit>100</userLimit>
                <users/>
                <userLimitFactor>1.0</userLimitFactor>
              </queue>
            </queues>
            <resourcesUsed>
              <memory>0</memory>
              <vCores>0</vCores>
            </resourcesUsed>
          </queue>
          <queue xsi:type="capacitySchedulerLeafQueueInfo">
            <capacity>70.0</capacity>
            <usedCapacity>0.0</usedCapacity>
            <maxCapacity>100.0</maxCapacity>
            <absoluteCapacity>7.35</absoluteCapacity>
            <absoluteMaxCapacity>50.0</absoluteMaxCapacity>
            <absoluteUsedCapacity>0.0</absoluteUsedCapacity>
            <numApplications>0</numApplications>
            <usedResources>&lt;memory:0, vCores:0&gt;</usedResources>
            <queueName>a2</queueName>
            <state>RUNNING</state>
            <resourcesUsed>
              <memory>0</memory>
              <vCores>0</vCores>
            </resourcesUsed>
            <numActiveApplications>0</numActiveApplications>
            <numPendingApplications>0</numPendingApplications>
            <numContainers>0</numContainers>
            <maxApplications>735</maxApplications>
            <maxApplicationsPerUser>73500</maxApplicationsPerUser>
            <maxActiveApplications>1</maxActiveApplications>
            <maxActiveApplicationsPerUser>100</maxActiveApplicationsPerUser>
            <userLimit>100</userLimit>
            <users/>
            <userLimitFactor>100.0</userLimitFactor>
          </queue>
        </queues>
        <resourcesUsed>
          <memory>0</memory>
          <vCores>0</vCores>
        </resourcesUsed>
      </queue>
      <queue>
        <capacity>89.5</capacity>
        <usedCapacity>0.0</usedCapacity>
        <maxCapacity>100.0</maxCapacity>
        <absoluteCapacity>89.5</absoluteCapacity>
        <absoluteMaxCapacity>100.0</absoluteMaxCapacity>
        <absoluteUsedCapacity>0.0</absoluteUsedCapacity>
        <numApplications>2</numApplications>
        <usedResources>&lt;memory:0, vCores:0&gt;</usedResources>
        <queueName>b</queueName>
        <state>RUNNING</state>
        <queues>
          <queue xsi:type="capacitySchedulerLeafQueueInfo">
            <capacity>60.000004</capacity>
            <usedCapacity>0.0</usedCapacity>
            <maxCapacity>100.0</maxCapacity>
            <absoluteCapacity>53.7</absoluteCapacity>
            <absoluteMaxCapacity>100.0</absoluteMaxCapacity>
            <absoluteUsedCapacity>0.0</absoluteUsedCapacity>
            <numApplications>2</numApplications>
            <usedResources>&lt;memory:0, vCores:0&gt;</usedResources>
            <queueName>b1</queueName>
            <state>RUNNING</state>
            <resourcesUsed>
              <memory>0</memory>
              <vCores>0</vCores>
            </resourcesUsed>
            <numActiveApplications>1</numActiveApplications>
            <numPendingApplications>1</numPendingApplications>
            <numContainers>0</numContainers>
            <maxApplications>5370</maxApplications>
            <maxApplicationsPerUser>537000</maxApplicationsPerUser>
            <maxActiveApplications>1</maxActiveApplications>
            <maxActiveApplicationsPerUser>100</maxActiveApplicationsPerUser>
            <userLimit>100</userLimit>
            <users>
              <user>
                <username>user2</username>
                <resourcesUsed>
                  <memory>0</memory>
                  <vCores>0</vCores>
                </resourcesUsed>
                <numPendingApplications>1</numPendingApplications>
                <numActiveApplications>0</numActiveApplications>
              </user>
              <user>
                <username>user1</username>
                <resourcesUsed>
                  <memory>0</memory>
                  <vCores>0</vCores>
                </resourcesUsed>
                <numPendingApplications>0</numPendingApplications>
                <numActiveApplications>1</numActiveApplications>
              </user>
            </users>
            <userLimitFactor>100.0</userLimitFactor>
          </queue>
          <queue xsi:type="capacitySchedulerLeafQueueInfo">
            <capacity>39.5</capacity>
            <usedCapacity>0.0</usedCapacity>
            <maxCapacity>100.0</maxCapacity>
            <absoluteCapacity>35.3525</absoluteCapacity>
            <absoluteMaxCapacity>100.0</absoluteMaxCapacity>
            <absoluteUsedCapacity>0.0</absoluteUsedCapacity>
            <numApplications>0</numApplications>
            <usedResources>&lt;memory:0, vCores:0&gt;</usedResources>
            <queueName>b2</queueName>
            <state>RUNNING</state>
            <resourcesUsed>
              <memory>0</memory>
              <vCores>0</vCores>
            </resourcesUsed>
            <numActiveApplications>0</numActiveApplications>
            <numPendingApplications>0</numPendingApplications>
            <numContainers>0</numContainers>
            <maxApplications>3535</maxApplications>
            <maxApplicationsPerUser>353500</maxApplicationsPerUser>
            <maxActiveApplications>1</maxActiveApplications>
            <maxActiveApplicationsPerUser>100</maxActiveApplicationsPerUser>
            <userLimit>100</userLimit>
            <users/>
            <userLimitFactor>100.0</userLimitFactor>
          </queue>
          <queue xsi:type="capacitySchedulerLeafQueueInfo">
            <capacity>0.5</capacity>
            <usedCapacity>0.0</usedCapacity>
            <maxCapacity>100.0</maxCapacity>
            <absoluteCapacity>0.4475</absoluteCapacity>
            <absoluteMaxCapacity>100.0</absoluteMaxCapacity>
            <absoluteUsedCapacity>0.0</absoluteUsedCapacity>
            <numApplications>0</numApplications>
            <usedResources>&lt;memory:0, vCores:0&gt;</usedResources>
            <queueName>b3</queueName>
            <state>RUNNING</state>
            <resourcesUsed>
              <memory>0</memory>
              <vCores>0</vCores>
            </resourcesUsed>
            <numActiveApplications>0</numActiveApplications>
            <numPendingApplications>0</numPendingApplications>
            <numContainers>0</numContainers>
            <maxApplications>44</maxApplications>
            <maxApplicationsPerUser>4400</maxApplicationsPerUser>
            <maxActiveApplications>1</maxActiveApplications>
            <maxActiveApplicationsPerUser>100</maxActiveApplicationsPerUser>
            <userLimit>100</userLimit>
            <users/>
            <userLimitFactor>100.0</userLimitFactor>
          </queue>
        </queues>
        <resourcesUsed>
          <memory>0</memory>
          <vCores>0</vCores>
        </resourcesUsed>
      </queue>
    </queues>
    <health>
      <lastrun>1326381444693</lastrun>
      <operationsInfo>
        <operation>last-allocation</operation>
        <nodeId>N/A</nodeId>
        <containerId>N/A</containerId>
        <queue>N/A</queue>
      </operationsInfo>
      <operationsInfo>
        <operation>last-release</operation>
        <nodeId>host.domain.com:8041</nodeId>
        <containerId>container_1326821518301_0005_01_000001</containerId>
        <queue>root.default</queue>
      </operationsInfo>
      <operationsInfo>
        <operation>last-preemption</operation>
        <nodeId>N/A</nodeId>
        <containerId>N/A</containerId>
        <queue>N/A</queue>
      </operationsInfo>
      <operationsInfo>
        <operation>last-reservation</operation>
        <nodeId>N/A</nodeId>
        <containerId>N/A</containerId>
        <queue>N/A</queue>
      </operationsInfo>
      <lastRunDetails>
        <operation>releases</operation>
        <count>0</count>
        <resources>
          <memory>0</memory>
          <vCores>0</vCores>
        </resources>
      </lastRunDetails>
      <lastRunDetails>
        <operation>allocations</operation>
        <count>0</count>
        <resources>
          <memory>0</memory>
          <vCores>0</vCores>
        </resources>
      </lastRunDetails>
      <lastRunDetails>
        <operation>reservations</operation>
        <count>0</count>
        <resources>
          <memory>0</memory>
          <vCores>0</vCores>
        </resources>
      </lastRunDetails>
    </health>
  </schedulerInfo>
</scheduler>

Fifo スケジューラ API

schedulerInfoオブジェクトの要素

項目 データ型 説明
type string スケジューラのタイプ - fifoScheduler
capacity float パーセンテージでのキュー容量
usedCapacity float 使用済みのキュー容量(割合)
qstate string キューの状態 - 有効な値は、STOPPED、RUNNING です
minQueueMemoryCapacity int 最小キューメモリ容量
maxQueueMemoryCapacity int 最大キューメモリ容量
numNodes int ノードの総数
usedNodeCapacity int 使用済みノード容量
availNodeCapacity int 利用可能なノード容量
totalNodeCapacity int ノードの総容量
numContainers int コンテナの数

応答例

JSON応答

HTTPリクエスト

  GET http://rm-http-address:port/ws/v1/cluster/scheduler

応答ヘッダー

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

応答本文

{
  "scheduler":
  {
    "schedulerInfo":
    {
      "type":"fifoScheduler",
      "capacity":1,
      "usedCapacity":"NaN",
      "qstate":"RUNNING",
      "minQueueMemoryCapacity":1024,
      "maxQueueMemoryCapacity":10240,
      "numNodes":0,
      "usedNodeCapacity":0,
      "availNodeCapacity":0,
      "totalNodeCapacity":0,
      "numContainers":0
    }
  }
}

XML応答

HTTPリクエスト

  GET http://rm-http-address:port/ws/v1/cluster/scheduler
  Accept: application/xml

応答ヘッダー

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

応答本文

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<scheduler>
  <schedulerInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="fifoScheduler">
    <capacity>1.0</capacity>
    <usedCapacity>NaN</usedCapacity>
    <qstate>RUNNING</qstate>
    <minQueueMemoryCapacity>1024</minQueueMemoryCapacity>
    <maxQueueMemoryCapacity>10240</maxQueueMemoryCapacity>
    <numNodes>0</numNodes>
    <usedNodeCapacity>0</usedNodeCapacity>
    <availNodeCapacity>0</availNodeCapacity>
    <totalNodeCapacity>0</totalNodeCapacity>
    <numContainers>0</numContainers>
  </schedulerInfo>
</scheduler>

フェアスケジューラ API

schedulerInfoオブジェクトの要素

項目 データ型 説明
type string スケジューラのタイプ - fairScheduler
rootQueue ルートキューオブジェクト ルートキューリソースのコレクション

すべてのキューオブジェクトの要素

項目 データ型 説明
maxApps int キューが持つことができるアプリケーションの最大数
minResources 単一のリソースオブジェクト キューに保証されている構成済みの最小リソース
maxResources 単一のリソースオブジェクト キューに許可されている構成済みの最大リソース
usedResources 単一のリソースオブジェクト キュー内のコンテナに割り当てられたリソースの合計
fairResources 単一のリソースオブジェクト キューの公平なリソース共有
clusterResources 単一のリソースオブジェクト クラスターの容量
queueName string キューの名前
schedulingPolicy string キューで使用されるスケジューリングポリシーの名前
childQueues キューの配列(JSON)/キューオブジェクト(XML) サブキュー情報のコレクション。キューに子キューがない場合、またはリーフキューの場合は省略されます。
allocatedContainers int 割り当てられたコンテナの数
demandResources 単一のリソースオブジェクト このキュー内のコンテナによって要求され、スケジューラによって満たされていないリソース
pendingContainers int 保留中のコンテナの数
preemptable ブール値 このキュー内のコンテナをプリエンプトできる場合は true
reservedContainers int 予約済みのコンテナの数
steadyFairResources 単一のリソースオブジェクト キューの安定した公平な共有

リーフキューオブジェクトの追加要素 ('childQueues' プロパティを除く)

項目 データ型 説明
type string キューのタイプ - fairSchedulerLeafQueueInfo
numActiveApps int このキューにあるアクティブなアプリケーションの数
numPendingApps int このキューにある保留中のアプリケーションの数

キュー内の (cluster/demand/fair/max/min/used/*)Resources オブジェクトの要素

項目 データ型 説明
memory int 使用されているメモリ量 (MB 単位)
vCores int 仮想コアの数

応答例

JSON応答

HTTPリクエスト

  GET http://rm-http-address:port/ws/v1/cluster/scheduler

応答ヘッダー

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

応答本文

{
    "scheduler": {
        "schedulerInfo": {
            "rootQueue": {
                "allocatedContainers": 0,
                "childQueues": {
                    "queue": [
                        {
                            "allocatedContainers": 0,
                            "clusterResources": {
                                "memory": 8192,
                                "vCores": 8
                            },
                            "demandResources": {
                                "memory": 0,
                                "vCores": 0
                            },
                            "fairResources": {
                                "memory": 0,
                                "vCores": 0
                            },
                            "maxApps": 2147483647,
                            "maxResources": {
                                "memory": 8192,
                                "vCores": 8
                            },
                            "minResources": {
                                "memory": 0,
                                "vCores": 0
                            },
                            "numActiveApps": 0,
                            "numPendingApps": 0,
                            "pendingContainers": 0,
                            "preemptable": true,
                            "queueName": "root.default",
                            "reservedContainers": 0,
                            "schedulingPolicy": "fair",
                            "steadyFairResources": {
                                "memory": 4096,
                                "vCores": 0
                            },
                            "type": "fairSchedulerLeafQueueInfo",
                            "usedResources": {
                                "memory": 0,
                                "vCores": 0
                            }
                        },
                        {
                            "allocatedContainers": 0,
                            "childQueues": {
                                "queue": [
                                    {
                                        "allocatedContainers": 0,
                                        "clusterResources": {
                                            "memory": 8192,
                                            "vCores": 8
                                        },
                                        "demandResources": {
                                            "memory": 0,
                                            "vCores": 0
                                        },
                                        "fairResources": {
                                            "memory": 10000,
                                            "vCores": 0
                                        },
                                        "maxApps": 2147483647,
                                        "maxResources": {
                                            "memory": 8192,
                                            "vCores": 8
                                        },
                                        "minResources": {
                                            "memory": 5000,
                                            "vCores": 0
                                        },
                                        "numActiveApps": 0,
                                        "numPendingApps": 0,
                                        "pendingContainers": 0,
                                        "preemptable": true,
                                        "queueName": "root.sample_queue.sample_sub_queue",
                                        "reservedContainers": 0,
                                        "schedulingPolicy": "fair",
                                        "steadyFairResources": {
                                            "memory": 4096,
                                            "vCores": 0
                                        },
                                        "type": "fairSchedulerLeafQueueInfo",
                                        "usedResources": {
                                            "memory": 0,
                                            "vCores": 0
                                        }
                                    }
                                ]
                            },
                            "clusterResources": {
                                "memory": 8192,
                                "vCores": 8
                            },
                            "demandResources": {
                                "memory": 0,
                                "vCores": 0
                            },
                            "fairResources": {
                                "memory": 10000,
                                "vCores": 0
                            },
                            "maxApps": 50,
                            "maxResources": {
                                "memory": 8192,
                                "vCores": 0
                            },
                            "minResources": {
                                "memory": 10000,
                                "vCores": 0
                            },
                            "pendingContainers": 0,
                            "preemptable": true,
                            "queueName": "root.sample_queue",
                            "reservedContainers": 0,
                            "schedulingPolicy": "fair",
                            "steadyFairResources": {
                                "memory": 4096,
                                "vCores": 0
                            },
                            "usedResources": {
                                "memory": 0,
                                "vCores": 0
                            }
                        }
                    ]
                },
                "clusterResources": {
                    "memory": 8192,
                    "vCores": 8
                },
                "demandResources": {
                    "memory": 0,
                    "vCores": 0
                },
                "fairResources": {
                    "memory": 8192,
                    "vCores": 8
                },
                "maxApps": 2147483647,
                "maxResources": {
                    "memory": 8192,
                    "vCores": 8
                },
                "minResources": {
                    "memory": 0,
                    "vCores": 0
                },
                "pendingContainers": 0,
                "preemptable": true,
                "queueName": "root",
                "reservedContainers": 0,
                "schedulingPolicy": "fair",
                "steadyFairResources": {
                    "memory": 8192,
                    "vCores": 8
                },
                "usedResources": {
                    "memory": 0,
                    "vCores": 0
                }
            },
            "type": "fairScheduler"
        }
    }
}

XML応答

HTTPリクエスト

  GET http://rm-http-address:port/ws/v1/cluster/scheduler
  Accept: application/xml

応答ヘッダー

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

応答本文

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<scheduler>
  <schedulerInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="fairScheduler">
    <rootQueue>
      <maxApps>2147483647</maxApps>
      <minResources>
        <memory>0</memory>
        <vCores>0</vCores>
      </minResources>
      <maxResources>
        <memory>8192</memory>
        <vCores>8</vCores>
      </maxResources>
      <usedResources>
        <memory>0</memory>
        <vCores>0</vCores>
      </usedResources>
      <demandResources>
        <memory>0</memory>
        <vCores>0</vCores>
      </demandResources>
      <steadyFairResources>
        <memory>8192</memory>
        <vCores>8</vCores>
      </steadyFairResources>
      <fairResources>
        <memory>8192</memory>
        <vCores>8</vCores>
      </fairResources>
      <clusterResources>
        <memory>8192</memory>
        <vCores>8</vCores>
      </clusterResources>
      <pendingContainers>0</pendingContainers>
      <allocatedContainers>0</allocatedContainers>
      <reservedContainers>0</reservedContainers>
      <queueName>root</queueName>
      <schedulingPolicy>fair</schedulingPolicy>
      <preemptable>true</preemptable>
      <childQueues>
        <queue xsi:type="fairSchedulerLeafQueueInfo">
          <maxApps>2147483647</maxApps>
          <minResources>
            <memory>0</memory>
            <vCores>0</vCores>
          </minResources>
          <maxResources>
            <memory>8192</memory>
            <vCores>8</vCores>
          </maxResources>
          <usedResources>
            <memory>0</memory>
            <vCores>0</vCores>
          </usedResources>
          <demandResources>
            <memory>0</memory>
            <vCores>0</vCores>
          </demandResources>
          <steadyFairResources>
            <memory>4096</memory>
            <vCores>0</vCores>
          </steadyFairResources>
          <fairResources>
            <memory>0</memory>
            <vCores>0</vCores>
          </fairResources>
          <clusterResources>
            <memory>8192</memory>
            <vCores>8</vCores>
          </clusterResources>
          <pendingContainers>0</pendingContainers>
          <allocatedContainers>0</allocatedContainers>
          <reservedContainers>0</reservedContainers>
          <queueName>root.default</queueName>
          <schedulingPolicy>fair</schedulingPolicy>
          <preemptable>true</preemptable>
          <numPendingApps>0</numPendingApps>
          <numActiveApps>0</numActiveApps>
        </queue>
        <queue>
          <maxApps>50</maxApps>
          <minResources>
            <memory>0</memory>
            <vCores>0</vCores>
          </minResources>
          <maxResources>
            <memory>8192</memory>
            <vCores>0</vCores>
          </maxResources>
          <usedResources>
            <memory>0</memory>
            <vCores>0</vCores>
          </usedResources>
          <demandResources>
            <memory>0</memory>
            <vCores>0</vCores>
          </demandResources>
          <steadyFairResources>
            <memory>4096</memory>
            <vCores>0</vCores>
          </steadyFairResources>
          <fairResources>
            <memory>10000</memory>
            <vCores>0</vCores>
          </fairResources>
          <clusterResources>
            <memory>8192</memory>
            <vCores>8</vCores>
          </clusterResources>
          <pendingContainers>0</pendingContainers>
          <allocatedContainers>0</allocatedContainers>
          <reservedContainers>0</reservedContainers>
          <queueName>root.sample_queue</queueName>
          <schedulingPolicy>fair</schedulingPolicy>
          <preemptable>true</preemptable>
          <childQueues>
            <queue xsi:type="fairSchedulerLeafQueueInfo">
              <maxApps>2147483647</maxApps>
              <minResources>
                <memory>5000</memory>
                <vCores>0</vCores>
              </minResources>
              <maxResources>
                <memory>8192</memory>
                <vCores>8</vCores>
              </maxResources>
              <usedResources>
                <memory>0</memory>
                <vCores>0</vCores>
              </usedResources>
              <demandResources>
                <memory>0</memory>
                <vCores>0</vCores>
              </demandResources>
              <steadyFairResources>
                <memory>4096</memory>
                <vCores>0</vCores>
              </steadyFairResources>
              <fairResources>
                <memory>10000</memory>
                <vCores>0</vCores>
              </fairResources>
              <clusterResources>
                <memory>8192</memory>
                <vCores>8</vCores>
              </clusterResources>
              <pendingContainers>0</pendingContainers>
              <allocatedContainers>0</allocatedContainers>
              <reservedContainers>0</reservedContainers>
              <queueName>root.sample_queue.sample_sub_queue</queueName>
              <schedulingPolicy>fair</schedulingPolicy>
              <preemptable>true</preemptable>
              <numPendingApps>0</numPendingApps>
              <numActiveApps>0</numActiveApps>
            </queue>
          </childQueues>
        </queue>
      </childQueues>
    </rootQueue>
  </schedulerInfo>
</scheduler>

クラスターアプリケーション API

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

URI

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

  • GET

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

GET 操作には、複数のパラメーターを指定できます。開始時間と終了時間には、範囲を指定できるように開始および終了パラメーターがあります。たとえば、startedTimeBegin=1324256400&startedTimeEnd=1324303200 で、2011 年 12 月 19 日の午前 1 時から午後 2 時の間に開始されたすべてのアプリケーションを要求できます。開始パラメーターが指定されていない場合、デフォルトは 0 で、終了パラメーターが指定されていない場合、デフォルトは無限大です。この API のすべてのクエリパラメーターは、すべてのアプリケーションをフィルタリングします。ただし、queue クエリパラメーターは、指定されたキューに現在ある未完了のアプリケーションのみを暗黙的にフィルタリングします。

  • state [非推奨] - アプリケーションの状態
    • states - 指定されたアプリケーション状態に一致するアプリケーション。コンマ区切りのリストとして指定されます。
    • finalStatus - アプリケーションの最終状態 - アプリケーション自体によって報告されます
    • user - ユーザー名
    • queue - 現在このキューにある未完了のアプリケーション
    • limit - 返されるアプリオブジェクトの合計数
    • startedTimeBegin - 開始時間がこの時間から始まるアプリケーション (エポックからのミリ秒単位で指定)
    • startedTimeEnd - 開始時間がこの時間で終わるアプリケーション (エポックからのミリ秒単位で指定)
    • finishedTimeBegin - 終了時間がこの時間から始まるアプリケーション (エポックからのミリ秒単位で指定)
    • finishedTimeEnd - 終了時間がこの時間で終わるアプリケーション (エポックからのミリ秒単位で指定)
    • applicationTypes - 指定されたアプリケーションタイプに一致するアプリケーション。コンマ区切りのリストとして指定されます。
    • applicationTags - 指定されたアプリケーションタグのいずれかに一致するアプリケーション。コンマ区切りのリストとして指定されます。
    • name - アプリケーションの名前
    • deSelects - 結果でスキップされる汎用フィールド。

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

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

項目 データ型 説明
app アプリオブジェクトの配列(JSON)/ゼロ以上のアプリケーションオブジェクト(XML) アプリケーションオブジェクトのコレクション

deSelects パラメーターの要素

特定の情報を必要としないリクエスタがオーバーヘッドを削減するのに役立ちます。

現在サポートされている項目

項目 データ型 説明
resouceRequests コンマ区切りの文字列 返信でアプリケーションのリソース要求をスキップします

応答例

JSON応答

HTTPリクエスト

  GET http://rm-http-address:port/ws/v1/cluster/apps

応答ヘッダー

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

応答本文

{
  "apps":
  {
    "app":
    [
      {
        "id": "application_1476912658570_0002",
        "user": "user2",
        "name": "word count",
        "queue": "default",
        "state": "FINISHED",
        "finalStatus": "SUCCEEDED",
        "progress": 100,
        "trackingUI": "History",
        "trackingUrl": "http://host.domain.com:8088/cluster/app/application_1476912658570_0002",
        "diagnostics": "...",
        "clusterId": 1476912658570,
        "applicationType": "MAPREDUCE",
        "applicationTags": "",
        "priority": -1,
        "startedTime": 1476913457320,
        "finishedTime": 1476913761898,
        "elapsedTime": 304578,
        "amContainerLogs": "http://host.domain.com:8042/node/containerlogs/container_1476912658570_0002_02_000001/user2",
        "amHostHttpAddress": "host.domain.com:8042",
        "allocatedMB": 0,
        "allocatedVCores": 0,
        "runningContainers": 0,
        "memorySeconds": 206464,
        "vcoreSeconds": 201,
        "queueUsagePercentage": 0,
        "clusterUsagePercentage": 0,
        "preemptedResourceMB": 0,
        "preemptedResourceVCores": 0,
        "numNonAMContainerPreempted": 0,
        "numAMContainerPreempted": 0,
        "logAggregationStatus": "DISABLED",
        "unmanagedApplication": false,
        "appNodeLabelExpression": "",
        "amNodeLabelExpression": "",
        "resourceRequests": [
        {
            "capability": {
                "memory": 4096,
                "virtualCores": 1
            },
            "nodeLabelExpression": "",
            "numContainers": 0,
            "priority": {
                "priority": 0
            },
            "relaxLocality": true,
            "resourceName": "*"
        },
        {
            "capability": {
                "memory": 4096,
                "virtualCores": 1
            },
            "nodeLabelExpression": "",
            "numContainers": 0,
            "priority": {
                "priority": 20
            },
            "relaxLocality": true,
            "resourceName": "host1.domain.com"
        },
        {
            "capability": {
                "memory": 4096,
                "virtualCores": 1
            },
            "nodeLabelExpression": "",
            "numContainers": 0,
            "priority": {
                "priority": 20
            },
            "relaxLocality": true,
            "resourceName": "host2.domain.com"
        }]
      },
      {
        "id": "application_1476912658570_0001",
        "user": "user1",
        "name": "Sleep job",
        "queue": "default",
        "state": "FINISHED",
        "finalStatus": "SUCCEEDED",
        "progress": 100,
        "trackingUI": "History",
        "trackingUrl": "http://host.domain.com:8088/cluster/app/application_1476912658570_0001",
        "diagnostics": "...",
        "clusterId": 1476912658570,
        "applicationType": "YARN",
        "applicationTags": "",
        "priority": -1,
        "startedTime": 1476913464750,
        "finishedTime": 1476913863175,
        "elapsedTime": 398425,
        "amContainerLogs": "http://host.domain.com:8042/node/containerlogs/container_1476912658570_0001_02_000001/user1",
        "amHostHttpAddress": "host.domain.com:8042",
        "allocatedMB": 0,
        "allocatedVCores": 0,
        "runningContainers": 0,
        "memorySeconds": 205410,
        "vcoreSeconds": 200,
        "queueUsagePercentage": 0,
        "clusterUsagePercentage": 0,
        "preemptedResourceMB": 0,
        "preemptedResourceVCores": 0,
        "numNonAMContainerPreempted": 0,
        "numAMContainerPreempted": 0,
        "logAggregationStatus": "DISABLED",
        "unmanagedApplication": false,
        "appNodeLabelExpression": "",
        "amNodeLabelExpression": "",
        "resourceRequests": [
        {
            "capability": {
                "memory": 4096,
                "virtualCores": 1
            },
            "nodeLabelExpression": "",
            "numContainers": 0,
            "priority": {
                "priority": 0
            },
            "relaxLocality": true,
            "resourceName": "*"
        },
        {
            "capability": {
                "memory": 4096,
                "virtualCores": 1
            },
            "nodeLabelExpression": "",
            "numContainers": 0,
            "priority": {
                "priority": 20
            },
            "relaxLocality": true,
            "resourceName": "host3.domain.com"
        },
        {
            "capability": {
                "memory": 4096,
                "virtualCores": 1
            },
            "nodeLabelExpression": "",
            "numContainers": 0,
            "priority": {
                "priority": 20
            },
            "relaxLocality": true,
            "resourceName": "host4.domain.com"
        }]
      }
    ]
  }
}

XML応答

HTTPリクエスト

  GET http://rm-http-address:port/ws/v1/cluster/apps
  Accept: application/xml

応答ヘッダー

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

応答本文

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<apps>
    <app>
        <id>application_1476912658570_0002</id>
        <user>user2</user>
        <name>word count</name>
        <queue>default</queue>
        <state>FINISHED</state>
        <finalStatus>SUCCEEDED</finalStatus>
        <progress>100.0</progress>
        <trackingUI>History</trackingUI>
        <trackingUrl>http://host.domain.com:8088/cluster/app/application_1476912658570_0002</trackingUrl>
        <diagnostics>...</diagnostics>
        <clusterId>1476912658570</clusterId>
        <applicationType>YARN</applicationType>
        <applicationTags></applicationTags>
        <priority>-1</priority>
        <startedTime>1476913457320</startedTime>
        <finishedTime>1476913761898</finishedTime>
        <elapsedTime>304578</elapsedTime>
        <amContainerLogs>http://host.domain.com:8042/node/containerlogs/container_1476912658570_0002_02_000001/user2</amContainerLogs>
        <amHostHttpAddress>host.domain.com:8042</amHostHttpAddress>
        <allocatedMB>-1</allocatedMB>
        <allocatedVCores>-1</allocatedVCores>
        <runningContainers>-1</runningContainers>
        <memorySeconds>206464</memorySeconds>
        <vcoreSeconds>201</vcoreSeconds>
        <queueUsagePercentage>0.0</queueUsagePercentage>
        <clusterUsagePercentage>0.0</clusterUsagePercentage>
        <preemptedResourceMB>0</preemptedResourceMB>
        <preemptedResourceVCores>0</preemptedResourceVCores>
        <numNonAMContainerPreempted>0</numNonAMContainerPreempted>
        <numAMContainerPreempted>0</numAMContainerPreempted>
        <logAggregationStatus>DISABLED</logAggregationStatus>
        <unmanagedApplication>false</unmanagedApplication>
        <appNodeLabelExpression></appNodeLabelExpression>
        <amNodeLabelExpression></amNodeLabelExpression>
        <resourceRequests>
          <capability>
            <memory>4096</memory>
            <virtualCores>1</virtualCores>
          </capability>
          <nodeLabelExpression/>
          <numContainers>0</numContainers>
          <priority>
            <priority>0</priority>
          </priority>
          <relaxLocality>true</relaxLocality>
          <resourceName>*</resourceName>
        </resourceRequests>
        <resourceRequests>
          <capability>
            <memory>4096</memory>
            <virtualCores>1</virtualCores>
          </capability>
          <nodeLabelExpression/>
          <numContainers>0</numContainers>
          <priority>
            <priority>20</priority>
          </priority>
          <relaxLocality>true</relaxLocality>
          <resourceName>host1.domain.com</resourceName>
        </resourceRequests>
        <resourceRequests>
          <capability>
            <memory>4096</memory>
            <virtualCores>1</virtualCores>
          </capability>
          <nodeLabelExpression/>
          <numContainers>0</numContainers>
          <priority>
            <priority>20</priority>
          </priority>
          <relaxLocality>true</relaxLocality>
          <resourceName>host2.domain.com</resourceName>
        </resourceRequests>
    </app>
    <app>
        <id>application_1476912658570_0001</id>
        <user>user1</user>
        <name>Sleep job</name>
        <queue>default</queue>
        <state>FINISHED</state>
        <finalStatus>SUCCEEDED</finalStatus>
        <progress>100.0</progress>
        <trackingUI>History</trackingUI>
        <trackingUrl>http://host.domain.com:8088/cluster/app/application_1476912658570_0001</trackingUrl>
        <diagnostics>...</diagnostics>
        <clusterId>1476912658570</clusterId>
        <applicationType>YARN</applicationType>
        <applicationTags></applicationTags>
        <priority>-1</priority>
        <startedTime>1476913464750</startedTime>
        <finishedTime>1476913863175</finishedTime>
        <elapsedTime>398425</elapsedTime>
        <amContainerLogs>http://host.domain.com:8042/node/containerlogs/container_1476912658570_0001_02_000001/user1</amContainerLogs>
        <amHostHttpAddress>host.domain.com:8042</amHostHttpAddress>
        <allocatedMB>-1</allocatedMB>
        <allocatedVCores>-1</allocatedVCores>
        <runningContainers>-1</runningContainers>
        <memorySeconds>205410</memorySeconds>
        <vcoreSeconds>200</vcoreSeconds>
        <queueUsagePercentage>0.0</queueUsagePercentage>
        <clusterUsagePercentage>0.0</clusterUsagePercentage>
        <preemptedResourceMB>0</preemptedResourceMB>
        <preemptedResourceVCores>0</preemptedResourceVCores>
        <numNonAMContainerPreempted>0</numNonAMContainerPreempted>
        <numAMContainerPreempted>0</numAMContainerPreempted>
        <logAggregationStatus>DISABLED</logAggregationStatus>
        <unmanagedApplication>false</unmanagedApplication>
        <appNodeLabelExpression></appNodeLabelExpression>
        <amNodeLabelExpression></amNodeLabelExpression>
        <resourceRequests>
          <capability>
            <memory>4096</memory>
            <virtualCores>1</virtualCores>
          </capability>
          <nodeLabelExpression/>
          <numContainers>0</numContainers>
          <priority>
            <priority>0</priority>
          </priority>
          <relaxLocality>true</relaxLocality>
          <resourceName>*</resourceName>
        </resourceRequests>
        <resourceRequests>
          <capability>
            <memory>4096</memory>
            <virtualCores>1</virtualCores>
          </capability>
          <nodeLabelExpression/>
          <numContainers>0</numContainers>
          <priority>
            <priority>20</priority>
          </priority>
          <relaxLocality>true</relaxLocality>
          <resourceName>host1.domain.com</resourceName>
        </resourceRequests>
        <resourceRequests>
          <capability>
            <memory>4096</memory>
            <virtualCores>1</virtualCores>
          </capability>
          <nodeLabelExpression/>
          <numContainers>0</numContainers>
          <priority>
            <priority>20</priority>
          </priority>
          <relaxLocality>true</relaxLocality>
          <resourceName>host2.domain.com</resourceName>
        </resourceRequests>
    </app>
</apps>

クラスターアプリケーション統計 API

アプリケーション統計 API を使用すると、トリプルのコレクションを取得できます。各トリプルには、ResourceManager コンテキストでのアプリケーションタイプ、アプリケーション状態、およびこのタイプとこの状態のアプリケーションの数が含まれています。パフォーマンス上の懸念があるため、現在、クエリごとに最大 1 つの applicationType のみをサポートしていることに注意してください。将来的には、クエリごとに複数の applicationType と、より多くの統計をサポートする可能性があります。このリソースに対して GET 操作を実行すると、statItem オブジェクトのコレクションが得られます。

URI

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

  • GET

必須のクエリパラメーター

2 つのパラメーターを指定できます。パラメーターは大文字と小文字が区別されません。

  • states - アプリケーションの状態。コンマ区切りのリストとして指定されます。states が提供されていない場合、API はすべてのアプリケーション状態を列挙し、その数を返します。
    • applicationTypes - アプリケーションのタイプ。コンマ区切りのリストとして指定されます。applicationTypes が提供されていない場合、API は任意のアプリケーションタイプのアプリケーションをカウントします。この場合、レスポンスは * を表示して、任意のアプリケーションタイプを示します。一時的に、最大 1 つの applicationType のみをサポートしていることに注意してください。それ以外の場合、ユーザーは BadRequestException を予期します。

appStatInfo (statItems) オブジェクトの要素

統計項目のリストを要求すると、情報は statItem オブジェクトのコレクションとして返されます

項目 データ型 説明
statItem statItem オブジェクトの配列(JSON)/ゼロ以上の statItem オブジェクト(XML) statItem オブジェクトのコレクション

応答例

JSON応答

HTTPリクエスト

  GET http://rm-http-address:port/ws/v1/cluster/appstatistics?states=accepted,running,finished&applicationTypes=mapreduce

応答ヘッダー

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

応答本文

{
  "appStatInfo":
  {
    "statItem":
    [
       {
          "state" : "accepted",
          "type" : "mapreduce",
          "count" : 4
       },
       {
          "state" : "running",
          "type" : "mapreduce",
          "count" : 1
       },
       {
          "state" : "finished",
          "type" : "mapreduce",
          "count" : 7
       }
    ]
  }
}

XML応答

HTTPリクエスト

  GET http://rm-http-address:port/ws/v1/cluster/appstatistics?states=accepted,running,finished&applicationTypes=mapreduce
  Accept: application/xml

応答ヘッダー

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

応答本文

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<appStatInfo>
  <statItem>
    <state>accepted</state>
    <type>mapreduce</type>
    <count>4</count>
  </statItem>
  <statItem>
    <state>running</state>
    <type>mapreduce</type>
    <count>1</count>
  </statItem>
  <statItem>
    <state>finished</state>
    <type>mapreduce</type>
    <count>7</count>
  </statItem>
</appStatInfo>

クラスターアプリケーション API

アプリケーションリソースには、クラスターに送信された特定のアプリケーションに関する情報が含まれています。

URI

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

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

  • GET

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

  None

app(Application)オブジェクトの要素

セキュリティ設定によっては、ユーザーがすべてのフィールドを表示できるとは限りません。

項目 データ型 説明
id string アプリケーションID
user string アプリケーションを開始したユーザー
name string アプリケーション名
queue string アプリケーションが送信されたキュー
state string ResourceManagerによるアプリケーションの状態。有効な値は、YarnApplicationState列挙型のメンバー(NEW、NEW_SAVING、SUBMITTED、ACCEPTED、RUNNING、FINISHED、FAILED、KILLED)です。
finalStatus string 完了した場合のアプリケーションの最終ステータス。アプリケーション自体によって報告されます。有効な値は、FinalApplicationStatus列挙型のメンバー(UNDEFINED、SUCCEEDED、FAILED、KILLED)です。
progress float パーセントで表したアプリケーションの進捗状況
trackingUI string 現在トラッキングURLが指している場所。履歴(履歴サーバーの場合)またはApplicationMaster。
trackingUrl string アプリケーションの追跡に使用できるWeb URL
diagnostics string 詳細な診断情報
clusterId long クラスターID
applicationType string アプリケーションの種類
applicationTags string アプリケーションのコンマ区切りのタグ
priority string 送信されたアプリケーションの優先度
startedTime long アプリケーションが開始された時刻 (エポックからのミリ秒単位)
finishedTime long アプリケーションが完了した時間(エポックからのミリ秒単位)
elapsedTime long アプリケーションが開始されてからの経過時間(ミリ秒単位)
amContainerLogs string アプリケーションマスターコンテナログのURL
amHostHttpAddress string アプリケーションマスターのノードのHTTPアドレス
amRPCAddress string アプリケーションマスターのRPCアドレス
allocatedMB int アプリケーションの実行中のコンテナに割り当てられたメモリの合計(MB単位)
allocatedVCores int アプリケーションの実行中のコンテナに割り当てられた仮想コアの合計
runningContainers int アプリケーションで現在実行中のコンテナの数
memorySeconds long アプリケーションが割り当てたメモリ量(メガバイト秒)
vcoreSeconds long アプリケーションが割り当てたCPUリソース量(仮想コア秒)
queueUsagePercentage float アプリが使用しているキューのリソースの割合
clusterUsagePercentage float アプリが使用しているクラスターのリソースの割合。
preemptedResourceMB long プリエンプトされたコンテナで使用されるメモリ
preemptedResourceVCores long プリエンプトされたコンテナで使用される仮想コアの数
numNonAMContainerPreempted int プリエンプトされた標準コンテナの数
numAMContainerPreempted int プリエンプトされたアプリケーションマスターコンテナの数
logAggregationStatus string ログ集約のステータス。有効な値は、LogAggregationStatus列挙型のメンバー(DISABLED、NOT_START、RUNNING、RUNNING_WITH_FAILURE、SUCCEEDED、FAILED、TIME_OUT)です。
unmanagedApplication ブール値 アプリケーションがアンマネージドであるかどうか。
appNodeLabelExpression string デフォルトでアプリケーションのコンテナが実行されるノードを識別するために使用されるノードラベル式。
amNodeLabelExpression string アプリケーションのAMコンテナが実行されるノードを識別するために使用されるノードラベル式。

応答例

JSON応答

HTTPリクエスト

  GET http://rm-http-address:port/ws/v1/cluster/apps/application_1476912658570_0002

応答ヘッダー

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

応答本文

{
  "app": {
    "id": "application_1476912658570_0002",
    "user": "user2",
    "name": "word count",
    "queue": "default",
    "state": "FINISHED",
    "finalStatus": "SUCCEEDED",
    "progress": 100,
    "trackingUI": "History",
    "trackingUrl": "http://host.domain.com:8088/cluster/app/application_1476912658570_0002",
    "diagnostics": "...",
    "clusterId": 1476912658570,
    "applicationType": "YARN",
    "applicationTags": "",
    "priority": -1,
    "startedTime": 1476913457320,
    "finishedTime": 1476913761898,
    "elapsedTime": 304578,
    "amContainerLogs": "http://host.domain.com:8042/node/containerlogs/container_1476912658570_0002_02_000001/dr.who",
    "amHostHttpAddress": "host.domain.com:8042",
    "allocatedMB": -1,
    "allocatedVCores": -1,
    "runningContainers": -1,
    "memorySeconds": 206464,
    "vcoreSeconds": 201,
    "queueUsagePercentage": 0,
    "clusterUsagePercentage": 0,
    "preemptedResourceMB": 0,
    "preemptedResourceVCores": 0,
    "numNonAMContainerPreempted": 0,
    "numAMContainerPreempted": 0,
    "logAggregationStatus": "DISABLED",
    "unmanagedApplication": false,
    "appNodeLabelExpression": "",
    "amNodeLabelExpression": ""
  }
}

XML応答

HTTPリクエスト

  GET http://rm-http-address:port/ws/v1/cluster/apps/application_1326821518301_0005
  Accept: application/xml

応答ヘッダー

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

応答本文

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<app>
    <id>application_1476912658570_0002</id>
    <user>user2</user>
    <name>word count</name>
    <queue>default</queue>
    <state>FINISHED</state>
    <finalStatus>SUCCEEDED</finalStatus>
    <progress>100.0</progress>
    <trackingUI>History</trackingUI>
    <trackingUrl>http://host.domain.com:8088/cluster/app/application_1476912658570_0002</trackingUrl>
    <diagnostics>...</diagnostics>
    <clusterId>1476912658570</clusterId>
    <applicationType>YARN</applicationType>
    <applicationTags></applicationTags>
    <priority>-1</priority>
    <startedTime>1476913457320</startedTime>
    <finishedTime>1476913761898</finishedTime>
    <elapsedTime>304578</elapsedTime>
    <amContainerLogs>http://host.domain.com:8042/node/containerlogs/container_1476912658570_0002_02_000001/dr.who</amContainerLogs>
    <amHostHttpAddress>host.domain.com:8042</amHostHttpAddress>
    <allocatedMB>-1</allocatedMB>
    <allocatedVCores>-1</allocatedVCores>
    <runningContainers>-1</runningContainers>
    <memorySeconds>206464</memorySeconds>
    <vcoreSeconds>201</vcoreSeconds>
    <queueUsagePercentage>0.0</queueUsagePercentage>
    <clusterUsagePercentage>0.0</clusterUsagePercentage>
    <preemptedResourceMB>0</preemptedResourceMB>
    <preemptedResourceVCores>0</preemptedResourceVCores>
    <numNonAMContainerPreempted>0</numNonAMContainerPreempted>
    <numAMContainerPreempted>0</numAMContainerPreempted>
    <logAggregationStatus>DISABLED</logAggregationStatus>
    <unmanagedApplication>false</unmanagedApplication>
    <appNodeLabelExpression></appNodeLabelExpression>
    <amNodeLabelExpression></amNodeLabelExpression>
</app>

クラスターアプリケーション試行API

アプリケーション試行APIを使用すると、アプリケーション試行を表すリソースのコレクションを取得できます。このリソースに対してGET操作を実行すると、アプリ試行オブジェクトのコレクションが取得されます。

URI

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

  • GET

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

  None

appAttemptsオブジェクトの要素

アプリ試行のリストをリクエストすると、情報はアプリ試行オブジェクトの配列として返されます。

appAttempts

項目 データ型 説明
appAttempt アプリ試行オブジェクトの配列(JSON)/ゼロ以上のアプリ試行オブジェクト(XML) アプリ試行オブジェクトのコレクション

appAttemptオブジェクトの要素

項目 データ型 説明
id string アプリ試行ID
nodeId string 試行が実行されたノードのノードID
nodeHttpAddress string 試行が実行されたノードのノードHTTPアドレス
logsLink string アプリ試行ログへのHTTPリンク
containerId string アプリ試行のコンテナのID
startTime long 試行の開始時間(エポックからのミリ秒単位)

応答例

JSON応答

HTTPリクエスト

  GET http://rm-http-address:port/ws/v1/cluster/apps/application_1326821518301_0005/appattempts

応答ヘッダー

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

応答本文

{
   "appAttempts" : {
      "appAttempt" : [
         {
            "nodeId" : "host.domain.com:8041",
            "nodeHttpAddress" : "host.domain.com:8042",
            "startTime" : 1326381444693,
            "id" : 1,
            "logsLink" : "http://host.domain.com:8042/node/containerlogs/container_1326821518301_0005_01_000001/user1",
            "containerId" : "container_1326821518301_0005_01_000001"
         }
      ]
   }
}

XML応答

HTTPリクエスト

  GET http://rm-http-address:port/ws/v1/cluster/apps/application_1326821518301_0005/appattempts
  Accept: application/xml

応答ヘッダー

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

応答本文

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<appAttempts>
  <appttempt>
    <nodeHttpAddress>host.domain.com:8042</nodeHttpAddress>
    <nodeId>host.domain.com:8041</nodeId>
    <id>1</id>
    <startTime>1326381444693</startTime>
    <containerId>container_1326821518301_0005_01_000001</containerId>
    <logsLink>http://host.domain.com:8042/node/containerlogs/container_1326821518301_0005_01_000001/user1</logsLink>
  </appAttempt>
</appAttempts>

アプリケーション試行APIのコンテナ

アプリケーション試行APIのコンテナを使用すると、アプリケーション試行に属するコンテナのリストを取得できます。

URI

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

  • GET

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

  None

containersオブジェクトの要素

コンテナのリストをリクエストすると、情報はコンテナオブジェクトの配列として返されます。

containers

項目 データ型 説明
containers アプリコンテナオブジェクトの配列(JSON)/ゼロ以上のコンテナオブジェクト(XML) アプリコンテナオブジェクトのコレクション

containerオブジェクトの要素

項目 データ型 説明
containerId string コンテナID
allocatedMB long コンテナに割り当てられたメモリ量(MB単位)
allocatedVCores int コンテナに割り当てられた仮想コアの量
assignedNodeId string 試行が実行されたノードのノードID
priority int コンテナの割り当てられた優先度
startedTime long 試行の開始時間(エポックからのミリ秒単位)
finishedTime long 試行の終了時間(エポックからのミリ秒単位)。完了していない場合は0
elapsedTime long startedTimeからの経過時間(ミリ秒単位)
logUrl string コンテナのログを確認するために使用できるWeb URL
containerExitStatus int コンテナの最終終了ステータス
containerState string コンテナの状態。NEW、RUNNING、またはCOMPLETEにすることができます。
nodeHttpAddress string 試行が実行されたノードのノードHTTPアドレス
nodeId string 試行が実行されたノードのノードID
allocatedResources リソースの配列(JSON)/ゼロ以上のリソースオブジェクト(XML) コンテナに割り当てられたリソース

resourceオブジェクトの要素

項目 データ型 説明
memory int コンテナの最大メモリ
vCores int コンテナの最大仮想コア数

JSON応答

HTTPリクエスト

  GET http://rm-http-address:port/ws/v1/cluster/apps/{appid}/appattempts/{appAttemptId}/containers

応答ヘッダー

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

応答本文

{
  "containers" : {
    "container": [
      {
      "containerId": "container_1531404209605_0008_01_000001",
      "allocatedMB": "1536",
      "allocatedVCores": "1",
      "assignedNodeId": "host.domain.com:37814",
      "priority": "0",
      "startedTime": "1531405909444",
      "finishedTime": "0",
      "elapsedTime": "4112",
      "logUrl": "http://host.domain.com:8042/node/containerlogs/container_1531404209605_0008_01_000001/systest",
      "containerExitStatus": "0",
      "containerState": "RUNNING",
      "nodeHttpAddress": "http://host.domain.com:8042",
      "nodeId": "host.domain.com:37814",
      "allocatedResources": [
         {
            "key": "memory-mb",
            "value": "1536"
         },
         {
            "key": "vcores",
            "value": "1"
         }
       ]
      }
    ]
  }
}

XML応答

HTTPリクエスト

  GET http://rm-http-address:port/ws/v1/cluster/apps/{appid}/appattempts/{appAttemptId}/containers
  Accept: application/xml

応答ヘッダー

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

応答本文

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<containers>
  <container>
    <containerId>container_1531404209605_0008_01_000001</containerId>
    <allocatedMB>1536</allocatedMB>
    <allocatedVCores>1</allocatedVCores>
    <assignedNodeId>host.domain.com:37814</assignedNodeId>
    <priority>0</priority>
    <startedTime>1531405909444</startedTime>
    <finishedTime>0</finishedTime>
    <elapsedTime>4112</elapsedTime>
    <logUrl>
    http://host.domain.com:8042/node/containerlogs/container_1531404209605_0008_01_000001/systest
    </logUrl>
    <containerExitStatus>0</containerExitStatus>
    <containerState>RUNNING</containerState>
    <nodeHttpAddress>http://host.domain.com:8042</nodeHttpAddress>
    <nodeId>host.domain.com:37814</nodeId>
    <allocatedResources>
      <entry>
        <key>memory-mb</key>
        <value>1536</value>
      </entry>
      <entry>
        <key>vcores</key>
        <value>1</value>
      </entry>
    </allocatedResources>
  </container>
</containers>

アプリケーション試行APIの特定のコンテナ

アプリケーション試行APIの特定のコンテナを使用すると、アプリケーション試行に属し、コンテナIDで選択された特定のコンテナに関する情報を取得できます。

URI

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

  • GET

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

  None

containerオブジェクトの要素

項目 データ型 説明
containerId string コンテナID
allocatedMB long コンテナに割り当てられたメモリ量(MB単位)
allocatedVCores int コンテナに割り当てられた仮想コアの量
assignedNodeId string 試行が実行されたノードのノードID
priority int コンテナの割り当てられた優先度
startedTime long 試行の開始時間(エポックからのミリ秒単位)
finishedTime long 試行の終了時間(エポックからのミリ秒単位)。完了していない場合は0
elapsedTime long startedTimeからの経過時間(ミリ秒単位)
logUrl string コンテナのログを確認するために使用できるWeb URL
containerExitStatus int コンテナの最終終了ステータス
containerState string コンテナの状態。NEW、RUNNING、またはCOMPLETEにすることができます。
nodeHttpAddress string 試行が実行されたノードのノードHTTPアドレス
nodeId string 試行が実行されたノードのノードID
allocatedResources リソースの配列(JSON)/ゼロ以上のリソースオブジェクト(XML) コンテナに割り当てられたリソース

resourceオブジェクトの要素

項目 データ型 説明
memory int コンテナの最大メモリ
vCores int コンテナの最大仮想コア数

JSON応答

HTTPリクエスト

  GET http://rm-http-address:port/ws/v1/cluster/apps/{appid}/appattempts/{appAttemptId}/containers/{containerId}

応答ヘッダー

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

応答本文

{
  "container": {
    "containerId": "container_1531404209605_0008_01_000001",
    "allocatedMB": "1536",
    "allocatedVCores": "1",
    "assignedNodeId": "host.domain.com:37814",
    "priority": "0",
    "startedTime": "1531405909444",
    "finishedTime": "0",
    "elapsedTime": "4112",
    "logUrl": "http://host.domain.com:8042/node/containerlogs/container_1531404209605_0008_01_000001/systest",
    "containerExitStatus": "0",
    "containerState": "RUNNING",
    "nodeHttpAddress": "http://host.domain.com:8042",
    "nodeId": "host.domain.com:37814",
    "allocatedResources": [
       {
          "key": "memory-mb",
          "value": "1536"
       },
       {
          "key": "vcores",
          "value": "1"
       }
    ]
  }
}

XML応答

HTTPリクエスト

  GET http://rm-http-address:port/ws/v1/cluster/apps/{appid}/appattempts/{appAttemptId}/containers/{containerId}
  Accept: application/xml

応答ヘッダー

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

応答本文

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

<container>
  <containerId>container_1531404209605_0008_01_000001</containerId>
  <allocatedMB>1536</allocatedMB>
  <allocatedVCores>1</allocatedVCores>
  <assignedNodeId>host.domain.com:37814</assignedNodeId>
  <priority>0</priority>
  <startedTime>1531405909444</startedTime>
  <finishedTime>0</finishedTime>
  <elapsedTime>4112</elapsedTime>
  <logUrl>
  http://host.domain.com:8042/node/containerlogs/container_1531404209605_0008_01_000001/systest
  </logUrl>
  <containerExitStatus>0</containerExitStatus>
  <containerState>RUNNING</containerState>
  <nodeHttpAddress>http://host.domain.com:8042</nodeHttpAddress>
  <nodeId>host.domain.com:37814</nodeId>
  <allocatedResources>
    <entry>
      <key>memory-mb</key>
      <value>1536</value>
    </entry>
    <entry>
      <key>vcores</key>
      <value>1</value>
    </entry>
  </allocatedResources>
</container>

クラスターノードAPI

ノードAPIを使用すると、各ノードを表すリソースのコレクションを取得できます。このリソースに対してGET操作を実行すると、ノードオブジェクトのコレクションが取得されます。

URI

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

  • GET

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

  • states - ノードの状態。コンマ区切りのリストとして指定されます。有効な値は、NEW、RUNNING、UNHEALTHY、DECOMMISSIONING、DECOMMISSIONED、LOST、REBOOTED、SHUTDOWNです。

nodesオブジェクトの要素

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

項目 データ型 説明
node ノードオブジェクトの配列(JSON)/ゼロ以上のノードオブジェクト(XML) ノードオブジェクトのコレクション

応答例

JSON応答

HTTPリクエスト

  GET http://rm-http-address:port/ws/v1/cluster/nodes

応答ヘッダー

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

応答本文

{
  "nodes":
  {
    "node":
    [
      {
        "rack":"\/default-rack",
        "state":"RUNNING",
        "id":"host.domain.com:54158",
        "nodeHostName":"host.domain.com",
        "nodeHTTPAddress":"host.domain.com:8042",
        "lastHealthUpdate": 1476995346399,
        "version": "3.0.0-alpha2-SNAPSHOT",
        "healthReport":"",
        "numContainers":0,
        "usedMemoryMB":0,
        "availMemoryMB":8192,
        "usedVirtualCores":0,
        "availableVirtualCores":8,
        "resourceUtilization":
        {
          "nodePhysicalMemoryMB":1027,
          "nodeVirtualMemoryMB":1027,
          "nodeCPUUsage":0.016661113128066063,
          "aggregatedContainersPhysicalMemoryMB":0,
          "aggregatedContainersVirtualMemoryMB":0,
          "containersCPUUsage":0
        }
      },
      {
        "rack":"\/default-rack",
        "state":"RUNNING",
        "id":"host.domain.com:54158",
        "nodeHostName":"host.domain.com",
        "nodeHTTPAddress":"host.domain.com:8042",
        "lastHealthUpdate":1476995346399,
        "version":"3.0.0-alpha2-SNAPSHOT",
        "healthReport":"",
        "numContainers":0,
        "usedMemoryMB":0,
        "availMemoryMB":8192,
        "usedVirtualCores":0,
        "availableVirtualCores":8,
        "resourceUtilization":
        {
          "nodePhysicalMemoryMB":1027,
          "nodeVirtualMemoryMB":1027,
          "nodeCPUUsage":0.016661113128066063,
          "aggregatedContainersPhysicalMemoryMB":0,
          "aggregatedContainersVirtualMemoryMB":0,
          "containersCPUUsage":0
        }
      }
    ]
  }
}

XML応答

HTTPリクエスト

  GET http://rm-http-address:port/ws/v1/cluster/nodes
  Accept: application/xml

応答ヘッダー

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

応答本文

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<nodes>
  <node>
    <rack>/default-rack</rack>
    <state>RUNNING</state>
    <id>host1.domain.com:54158</id>
    <nodeHostName>host1.domain.com</nodeHostName>
    <nodeHTTPAddress>host1.domain.com:8042</nodeHTTPAddress>
    <lastHealthUpdate>1476995346399</lastHealthUpdate>
    <version>3.0.0-SNAPSHOT</version>
    <healthReport></healthReport>
    <numContainers>0</numContainers>
    <usedMemoryMB>0</usedMemoryMB>
    <availMemoryMB>8192</availMemoryMB>
    <usedVirtualCores>0</usedVirtualCores>
    <availableVirtualCores>8</availableVirtualCores>
    <resourceUtilization>
        <nodePhysicalMemoryMB>1027</nodePhysicalMemoryMB>
        <nodeVirtualMemoryMB>1027</nodeVirtualMemoryMB>
        <nodeCPUUsage>0.006664445623755455</nodeCPUUsage>
        <aggregatedContainersPhysicalMemoryMB>0</aggregatedContainersPhysicalMemoryMB>
        <aggregatedContainersVirtualMemoryMB>0</aggregatedContainersVirtualMemoryMB>
        <containersCPUUsage>0.0</containersCPUUsage>
    </resourceUtilization>
  </node>
  <node>
    <rack>/default-rack</rack>
    <state>RUNNING</state>
    <id>host2.domain.com:54158</id>
    <nodeHostName>host2.domain.com</nodeHostName>
    <nodeHTTPAddress>host2.domain.com:8042</nodeHTTPAddress>
    <lastHealthUpdate>1476995346399</lastHealthUpdate>
    <version>3.0.0-SNAPSHOT</version>
    <healthReport></healthReport>
    <numContainers>0</numContainers>
    <usedMemoryMB>0</usedMemoryMB>
    <availMemoryMB>8192</availMemoryMB>
    <usedVirtualCores>0</usedVirtualCores>
    <availableVirtualCores>8</availableVirtualCores>
    <resourceUtilization>
        <nodePhysicalMemoryMB>1027</nodePhysicalMemoryMB>
        <nodeVirtualMemoryMB>1027</nodeVirtualMemoryMB>
        <nodeCPUUsage>0.006664445623755455</nodeCPUUsage>
        <aggregatedContainersPhysicalMemoryMB>0</aggregatedContainersPhysicalMemoryMB>
        <aggregatedContainersVirtualMemoryMB>0</aggregatedContainersVirtualMemoryMB>
        <containersCPUUsage>0.0</containersCPUUsage>
    </resourceUtilization>
  </node>
</nodes>

クラスターノードAPI

ノードリソースには、クラスター内のノードに関する情報が含まれています。

URI

nodeid値で識別されるノードからノードオブジェクトを取得するには、次のURIを使用します。

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

  • GET

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

  None

nodeオブジェクトの要素

項目 データ型 説明
rack string このノードのラックの場所
state string ノードの状態。有効な値は、NEW、RUNNING、UNHEALTHY、DECOMMISSIONING、DECOMMISSIONED、LOST、REBOOTED、SHUTDOWNです。
id string ノードID
nodeHostName string ノードのホスト名
nodeHTTPAddress string ノードのHTTPアドレス
lastHealthUpdate long ノードが最後にヘルスを報告した時間(エポックからのミリ秒単位)
version string ノードで実行されているHadoopのバージョン
healthReport string 詳細なヘルスレポート
numContainers int ノードで現在実行中のコンテナの合計数
usedMemoryMB long ノードで現在使用されているメモリの合計量(MB単位)
availMemoryMB long ノードで現在利用可能なメモリの合計量(MB単位)
usedVirtualCores long ノードで現在使用されている仮想コアの合計数
availableVirtualCores long ノードで利用可能な仮想コアの合計数
resourceUtilization object ノードのリソース使用率
totalResource object ノードのリソース

resourceUtilizationオブジェクトには、次の要素が含まれています

項目 データ型 説明
nodePhysicalMemoryMB int ノードの物理メモリ使用率
nodeVirtualMemoryMB int ノードの仮想メモリ使用率
nodeCPUUsage double ノードのCPU使用率
aggregatedContainersPhysicalMemoryMB int コンテナの集約された物理メモリ使用率
aggregatedContainersVirtualMemoryMB int コンテナの集約された仮想メモリ使用率
containersCPUUsage double コンテナの集約されたCPU使用率

応答例

JSON応答

HTTPリクエスト

  GET http://rm-http-address:port/ws/v1/cluster/nodes/h2:1235

応答ヘッダー

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

応答本文

{
  "node":
  {
    "rack":"\/default-rack",
    "state":"RUNNING",
    "id":"host.domain.com:54158",
    "nodeHostName":"host.domain.com",
    "nodeHTTPAddress":"host.domain.com:8042",
    "lastHealthUpdate":1476916746399,
    "version":"3.0.0-SNAPSHOT",
    "healthReport":"",
    "numContainers":0,
    "usedMemoryMB":0,
    "availMemoryMB":8192,
    "usedVirtualCores":0,
    "availableVirtualCores":8,
    "resourceUtilization":
    {
      "nodePhysicalMemoryMB": 968,
      "nodeVirtualMemoryMB": 968,
      "nodeCPUUsage": 0.01332889124751091,
      "aggregatedContainersPhysicalMemoryMB": 0,
      "aggregatedContainersVirtualMemoryMB": 0,
      "containersCPUUsage": 0
    },
    "totalResource":
    {
      "memory": 2048,
      "vCores": 5
    }
  }
}

XML応答

HTTPリクエスト

  GET http://rm-http-address:port/ws/v1/cluster/node/h2:1235
  Accept: application/xml

応答ヘッダー

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

応答本文

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<node>
  <rack>/default-rack</rack>
  <state>RUNNING</state>
  <id>host.domain.com:54158</id>
  <nodeHostName>host.domain.com</nodeHostName>
  <nodeHTTPAddress>host.domain.com:8042</nodeHTTPAddress>
  <lastHealthUpdate>1476916746399</lastHealthUpdate>
  <version>3.0.0-SNAPSHOT</version>
  <healthReport></healthReport>
  <numContainers>0</numContainers>
  <usedMemoryMB>0</usedMemoryMB>
  <availMemoryMB>8192</availMemoryMB>
  <usedVirtualCores>0</usedVirtualCores>
  <availableVirtualCores>8</availableVirtualCores>
  <resourceUtilization>
    <nodePhysicalMemoryMB>968</nodePhysicalMemoryMB>
    <nodeVirtualMemoryMB>968</nodeVirtualMemoryMB>
    <nodeCPUUsage>0.01332889124751091</nodeCPUUsage>
    <aggregatedContainersPhysicalMemoryMB>0</aggregatedContainersPhysicalMemoryMB>
    <aggregatedContainersVirtualMemoryMB>0</aggregatedContainersVirtualMemoryMB>
    <containersCPUUsage>0.0</containersCPUUsage>
  </resourceUtilization>
  <totalResource>
    <memory>2048</memory>
    <vCores>5</vCores>
  </totalResource>
</node>

クラスターノード更新リソースAPI

ノードの合計リソースを更新します。

URI

nodeid値で識別されるノードオブジェクトのリソースを更新するには、次のURIを使用します。

  http://rm-http-address:port/ws/v1/cluster/nodes/{nodeid}/resource

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

  POST

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

  None

resourceOptionオブジェクトの要素

項目 データ型 説明
memory long ノードに設定するメモリの合計量(MB単位)
vcores long ノードに設定する仮想コアの合計数
overCommitTimeout long コンテナをプリエンプトするタイムアウト

応答例

JSON応答

HTTPリクエスト

  POST http://rm-http-address:port/ws/v1/cluster/nodes/h2:1235/resource

リクエストボディ

{
  "resource":
  {
    "memory": 1024,
    "vCores": 3
  },
  "overCommitTimeout": -1
}

応答ヘッダー

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

応答本文

{
  "resourceInfo":
  {
    "memory": 8192,
    "vCores": 5
  }
}

XML応答

HTTPリクエスト

  GET http://rm-http-address:port/ws/v1/cluster/node/h2:1235/resource
  Accept: application/xml

リクエストボディ

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<resourceOption>
  <resource>
    <memory>8192</memory>
    <vCores>5</vCores>
  </resource>
  <overCommitTimeout>1000</overCommitTimeout>
</resourceOption>

応答ヘッダー

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

応答本文

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<resourceInfo>
  <memory>8192</memory>
  <vCores>5</vCores>
</resourceInfo>

クラスター書き込み可能API

以下のセクションでは、アプリケーションの作成と変更を可能にするAPIについて説明します。これらのAPIは現在アルファ版であり、将来変更される可能性があります。

クラスター新規アプリケーションAPI

新規アプリケーションAPIを使用すると、クラスター送信アプリケーションAPIの一部としてアプリケーションを送信するために使用できるアプリケーションIDを取得できます。レスポンスには、クラスターで利用可能な最大リソース機能も含まれています。

この機能は現在アルファ段階であり、将来変更される可能性があります。

URI

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

  • POST

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

  None

NewApplicationオブジェクトの要素

NewApplicationレスポンスには、次の要素が含まれています

項目 データ型 説明
application-id string 新しく作成されたアプリケーションID
maximum-resource-capabilities object このクラスターで利用可能な最大リソース機能

maximum-resource-capabilitesオブジェクトには、次の要素が含まれています

項目 データ型 説明
memory int コンテナで利用可能な最大メモリ
vCores int コンテナで利用可能な最大コア数

応答例

JSON応答

HTTPリクエスト

  POST http://rm-http-address:port/ws/v1/cluster/apps/new-application

応答ヘッダー

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

応答本文

{
  "application-id":"application_1404198295326_0003",
  "maximum-resource-capability":
    {
      "memory":8192,
      "vCores":32
    }
}

XML応答

HTTPリクエスト

  POST http://rm-http-address:port/ws/v1/cluster/apps/new-application

応答ヘッダー

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

応答本文

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<NewApplication>
  <application-id>application_1404198295326_0003</application-id>
  <maximum-resource-capability>
    <memory>8192</memory>
    <vCores>32</vCores>
  </maximum-resource-capability>
</NewApplication>

クラスターアプリケーションAPI(アプリケーションの送信)

送信アプリケーションAPIを使用して、アプリケーションを送信できます。アプリケーションを送信する場合は、最初にクラスター新規アプリケーションAPIを使用してアプリケーションIDを取得する必要があります。アプリケーションIDはリクエストボディの一部である必要があります。レスポンスには、アプリケーションの状態と進捗状況を追跡するために使用できるアプリケーションページへのURLが含まれています。

URI

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

  • POST

POSTレスポンスの例

POSTリクエストは、ResourceManagerにアプリケーションを送信するために使用できます。前述のように、最初にアプリケーションIDを取得する必要があります。送信が成功すると、202のレスポンスコードと、アプリに関する情報を取得する場所を指定するLocationヘッダーが返されます。アプリを送信するには、HTTPインターフェースに認証フィルターを設定する必要があることに注意してください。この機能は、HttpServletRequestにユーザー名が設定されている必要があります。フィルターが設定されていない場合、レスポンスは「UNAUTHORIZED」になります。

この機能は現在アルファ段階であり、将来変更される可能性があることに注意してください。

POSTリクエストオブジェクトの要素

項目 データ型 説明
application-id string アプリケーションID
application-name string アプリケーション名
queue string アプリケーションを送信するキューの名前
priority int アプリケーションの優先度
am-container-spec object アプリケーションマスターコンテナの起動コンテキスト。以下で説明します。
unmanaged-AM ブール値 アプリケーションが非管理のアプリケーションマスターを使用しているかどうか
max-app-attempts int このアプリケーションの試行回数の最大値
resource object アプリケーションマスターが必要とするリソース。以下で説明します。
application-type string アプリケーションタイプ(MapReduce、Pig、Hiveなど)
keep-containers-across-application-attempts ブール値 YARNがこのアプリケーションで使用されるコンテナを破棄せずに保持するかどうか
application-tags object アプリケーションタグのリスト。タグの指定方法については、リクエストの例を参照してください。
log-aggregation-context object このアプリケーションのログを処理するためにNodeManagerが必要とするすべての情報を表します。
attempt-failures-validity-interval long 失敗回数は、validityInterval外で発生した試行の失敗を失敗回数に含めません。
reservation-id string スケジューラ内の対応する予約済みリソース割り当ての一意のIDを表します。
am-black-listing-requests object 「AMブラックリストの有効化/無効化」や「失敗しきい値の無効化」など、ブラックリスト情報が含まれます。

am-container-spec オブジェクトの要素

am-container-specオブジェクトは、アプリケーションマスターのコンテナ起動コンテキストを提供するために使用する必要があります。

項目 データ型 説明
local-resources object ローカライズする必要があるリソースを記述するオブジェクト。以下で説明します。
environment object コンテナの環境変数。キーと値のペアとして指定します。
commands object コンテナを起動するためのコマンド。実行する順序で指定します。
service-data object アプリケーション固有のサービスデータ。キーは補助サービスの名前、値は渡したいデータのbase-64エンコーディングです。
credentials object アプリケーションの実行に必要な認証情報。以下で説明します。
application-acls オブジェクト アプリケーションのACL。キーは「VIEW_APP」または「MODIFY_APP」で、値は権限を持つユーザーのリストです。

local-resources オブジェクトの要素

このオブジェクトは、キーと値のペアのコレクションです。キーはローカライズされるリソースの識別子であり、値はリソースの詳細です。値の要素は以下で説明します。

項目 データ型 説明
resource string ローカライズされるリソースの場所
type string リソースのタイプ。オプションは「ARCHIVE」、「FILE」、「PATTERN」です。
visibility string ローカライズされるリソースの可視性。オプションは「PUBLIC」、「PRIVATE」、「APPLICATION」です。
size long ローカライズされるリソースのサイズ
timestamp long ローカライズされるリソースのタイムスタンプ

credentials オブジェクトの要素

credentialsオブジェクトは、委任トークンやシークレットなど、アプリケーションが自身を認証するために必要なデータを渡すために使用する必要があります。

項目 データ型 説明
tokens object アプリケーションに渡したいトークン。キーと値のペアとして指定します。キーはトークンの識別子、値はトークン(それぞれのWebサービスを使用して取得する必要があります)です。
secrets object アプリケーションで使用したいシークレット。キーと値のペアとして指定します。キーは識別子、値はシークレットのbase-64エンコーディングです。

POSTリクエストボディのresourceオブジェクトの要素

項目 データ型 説明
memory int 各コンテナに必要なメモリ
vCores int 各コンテナに必要な仮想コア

POSTリクエストボディのlog-aggregation-contextオブジェクトの要素

項目 データ型 説明
log-include-pattern string 定義されたインクルードパターンに一致するログファイルは、アプリケーションの完了時にアップロードされます。
log-exclude-pattern string 定義された除外パターンに一致するログファイルは、アプリケーションの完了時にアップロードされません。
rolled-log-include-pattern string 定義されたインクルードパターンに一致するログファイルは、ローリング方式で集計されます。
rolled-log-exclude-pattern string 定義された除外パターンに一致するログファイルは、ローリング方式で集計されません。
log-aggregation-policy-class-name string ログを集計するためにNodeManagerで使用されるポリシー
log-aggregation-policy-parameters string ポリシー クラスに渡されるパラメーター

POSTリクエストボディのam-black-listing-requestsオブジェクトの要素

項目 データ型 説明
am-black-listing-enabled ブール値 AMブラックリストが有効かどうか
disable-failure-threshold float AMブラックリストの無効化失敗しきい値

JSON応答

HTTPリクエスト

  POST http://rm-http-address:port/ws/v1/cluster/apps
  Accept: application/json
  Content-Type: application/json
  {
    "application-id":"application_1404203615263_0001",
    "application-name":"test",
    "am-container-spec":
    {
      "local-resources":
      {
        "entry":
        [
          {
            "key":"AppMaster.jar",
            "value":
            {
              "resource":"hdfs://hdfs-namenode:9000/user/testuser/DistributedShell/demo-app/AppMaster.jar",
              "type":"FILE",
              "visibility":"APPLICATION",
              "size": 43004,
              "timestamp": 1405452071209
            }
          }
        ]
      },
      "commands":
      {
        "command":"{{JAVA_HOME}}/bin/java -Xmx10m org.apache.hadoop.yarn.applications.distributedshell.ApplicationMaster --container_memory 10 --container_vcores 1 --num_containers 1 --priority 0 1><LOG_DIR>/AppMaster.stdout 2><LOG_DIR>/AppMaster.stderr"
      },
      "environment":
      {
        "entry":
        [
          {
            "key": "DISTRIBUTEDSHELLSCRIPTTIMESTAMP",
            "value": "1405459400754"
          },
          {
            "key": "CLASSPATH",
            "value": "{{CLASSPATH}}<CPS>./*<CPS>{{HADOOP_CONF_DIR}}<CPS>{{HADOOP_COMMON_HOME}}/share/hadoop/common/*<CPS>{{HADOOP_COMMON_HOME}}/share/hadoop/common/lib/*<CPS>{{HADOOP_HDFS_HOME}}/share/hadoop/hdfs/*<CPS>{{HADOOP_HDFS_HOME}}/share/hadoop/hdfs/lib/*<CPS>{{HADOOP_YARN_HOME}}/share/hadoop/yarn/*<CPS>{{HADOOP_YARN_HOME}}/share/hadoop/yarn/lib/*<CPS>./log4j.properties"
          },
          {
            "key": "DISTRIBUTEDSHELLSCRIPTLEN",
            "value": "6"
          },
          {
            "key": "DISTRIBUTEDSHELLSCRIPTLOCATION",
            "value": "hdfs://hdfs-namenode:9000/user/testuser/demo-app/shellCommands"
          }
        ]
      }
    },
    "unmanaged-AM":false,
    "max-app-attempts":2,
    "resource":
    {
      "memory":1024,
      "vCores":1
    },
    "application-type":"YARN",
    "keep-containers-across-application-attempts":false,
    "log-aggregation-context":
    {
      "log-include-pattern":"file1",
      "log-exclude-pattern":"file2",
      "rolled-log-include-pattern":"file3",
      "rolled-log-exclude-pattern":"file4",
      "log-aggregation-policy-class-name":"org.apache.hadoop.yarn.server.nodemanager.containermanager.logaggregation.AllContainerLogAggregationPolicy",
      "log-aggregation-policy-parameters":""
    },
    "attempt-failures-validity-interval":3600000,
    "reservation-id":"reservation_1454114874_1",
    "am-black-listing-requests":
    {
      "am-black-listing-enabled":true,
      "disable-failure-threshold":0.01
    }
  }

応答ヘッダー

  HTTP/1.1 202
  Transfer-Encoding: chunked
  Location: http://rm-http-address:port/ws/v1/cluster/apps/application_1404203615263_0001
  Content-Type: application/json
  Server: Jetty(6.1.26)

応答本文

  No response body

XML応答

HTTPリクエスト

POST http://rm-http-address:port/ws/v1/cluster/apps
Accept: application/xml
Content-Type: application/xml
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<application-submission-context>
  <application-id>application_1404204891930_0002</application-id>
  <application-name>test</application-name>
  <queue>testqueue</queue>
  <priority>3</priority>
  <am-container-spec>
    <local-resources>
      <entry>
        <key>example</key>
        <value>
          <resource>hdfs://hdfs-namenode:9000/user/testuser/DistributedShell/demo-app/AppMaster.jar</resource>
          <type>FILE</type>
          <visibility>APPLICATION</visibility>
          <size>43004</size>
          <timestamp>1405452071209</timestamp>
        </value>
      </entry>
    </local-resources>
    <environment>
      <entry>
        <key>DISTRIBUTEDSHELLSCRIPTTIMESTAMP</key>
        <value>1405459400754</value>
      </entry>
      <entry>
        <key>CLASSPATH</key>
        <value>{{CLASSPATH}}&lt;CPS&gt;./*&lt;CPS&gt;{{HADOOP_CONF_DIR}}&lt;CPS&gt;{{HADOOP_COMMON_HOME}}/share/hadoop/common/*&lt;CPS&gt;{{HADOOP_COMMON_HOME}}/share/hadoop/common/lib/*&lt;CPS&gt;{{HADOOP_HDFS_HOME}}/share/hadoop/hdfs/*&lt;CPS&gt;{{HADOOP_HDFS_HOME}}/share/hadoop/hdfs/lib/*&lt;CPS&gt;{{HADOOP_YARN_HOME}}/share/hadoop/yarn/*&lt;CPS&gt;{{HADOOP_YARN_HOME}}/share/hadoop/yarn/lib/*&lt;CPS&gt;./log4j.properties</value>
      </entry>
      <entry>
        <key>DISTRIBUTEDSHELLSCRIPTLEN</key>
        <value>6</value>
      </entry>
      <entry>
        <key>DISTRIBUTEDSHELLSCRIPTLOCATION</key>
        <value>hdfs://hdfs-namenode:9000/user/testuser/demo-app/shellCommands</value>
      </entry>
    </environment>
    <commands>
      <command>{{JAVA_HOME}}/bin/java -Xmx10m org.apache.hadoop.yarn.applications.distributedshell.ApplicationMaster --container_memory 10 --container_vcores 1 --num_containers 1 --priority 0 1&gt;&lt;LOG_DIR&gt;/AppMaster.stdout 2&gt;&lt;LOG_DIR&gt;/AppMaster.stderr</command>
    </commands>
    <service-data>
      <entry>
        <key>test</key>
        <value>dmFsdWUxMg</value>
      </entry>
    </service-data>
    <credentials>
      <tokens/>
      <secrets>
        <entry>
          <key>secret1</key>
          <value>c2VjcmV0MQ</value>
        </entry>
      </secrets>
    </credentials>
    <application-acls>
      <entry>
        <key>VIEW_APP</key>
        <value>testuser3, testuser4</value>
      </entry>
      <entry>
        <key>MODIFY_APP</key>
        <value>testuser1, testuser2</value>
      </entry>
    </application-acls>
  </am-container-spec>
  <unmanaged-AM>false</unmanaged-AM>
  <max-app-attempts>2</max-app-attempts>
  <resource>
    <memory>1024</memory>
    <vCores>1</vCores>
  </resource>
  <application-type>YARN</application-type>
  <keep-containers-across-application-attempts>false</keep-containers-across-application-attempts>
  <application-tags>
    <tag>tag 2</tag>
    <tag>tag1</tag>
  </application-tags>
  <log-aggregation-context>
    <log-include-pattern>file1</log-include-pattern>
    <log-exclude-pattern>file2</log-exclude-pattern>
    <rolled-log-include-pattern>file3</rolled-log-include-pattern>
    <rolled-log-exclude-pattern>file4</rolled-log-exclude-pattern>
    <log-aggregation-policy-class-name>org.apache.hadoop.yarn.server.nodemanager.containermanager.logaggregation.AllContainerLogAggregationPolicy</log-aggregation-policy-class-name>
    <log-aggregation-policy-parameters></log-aggregation-policy-parameters>
  </log-aggregation-context>
  <attempt-failures-validity-interval>3600000</attempt-failures-validity-interval>
  <reservation-id>reservation_1454114874_1</reservation-id>
  <am-black-listing-requests>
    <am-black-listing-enabled>true</am-black-listing-enabled>
    <disable-failure-threshold>0.01</disable-failure-threshold>
  </am-black-listing-requests>
</application-submission-context>

応答ヘッダー

  HTTP/1.1 202
  Transfer-Encoding: chunked
  Location: http://rm-http-address:port/ws/v1/cluster/apps/application_1404204891930_0002
  Content-Type: application/xml
  Server: Jetty(6.1.26)

応答本文

  No response body

クラスターアプリケーション状態API

アプリケーション状態APIを使用すると、送信されたアプリの状態を照会したり、状態を「KILLED」に設定したPUTリクエストを使用して実行中のアプリの状態を変更することにより、実行中のアプリを強制終了したりできます。PUT操作を実行するには、RM Webサービスに認証を設定する必要があります。さらに、アプリを強制終了する権限が必要です。現在、状態を「KILLED」にのみ変更できます。状態を他の状態に変更しようとすると、400エラーレスポンスが発生します。承認されていないエラーと不正なリクエストエラーの例を以下に示します。PUTが正常に実行されると、最初のレスポンスは202になる場合があります。アプリが強制終了されたことを確認するには、200を取得するまでPUTリクエストを繰り返すか、GETメソッドを使用して状態を照会するか、アプリ情報を照会して状態を確認します。以下の例では、PUTリクエストを繰り返し、200レスポンスを取得します。

アプリを強制終了するには、HTTPインターフェースに認証フィルターを設定する必要があることに注意してください。この機能は、HttpServletRequestにユーザー名が設定されている必要があります。フィルターが設定されていない場合、レスポンスは「UNAUTHORIZED」になります。

この機能は現在アルファ段階であり、将来変更される可能性があります。

URI

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

  • GET
    • PUT

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

  None

appstateオブジェクトの要素

アプリの状態をリクエストすると、返される情報には次のフィールドがあります。

項目 データ型 説明
state string アプリケーションの状態。「NEW」、「NEW_SAVING」、「SUBMITTED」、「ACCEPTED」、「RUNNING」、「FINISHED」、「FAILED」、「KILLED」のいずれかになります。

応答例

JSONレスポンス

HTTPリクエスト

  GET http://rm-http-address:port/ws/v1/cluster/apps/application_1399397633663_0003/state

応答ヘッダー

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

応答本文

{
  "state":"ACCEPTED"
}

HTTPリクエスト

  PUT http://rm-http-address:port/ws/v1/cluster/apps/application_1399397633663_0003/state

リクエストボディ

{
  "state":"KILLED"
}

応答ヘッダー

HTTP/1.1 202 Accepted
Content-Type: application/json
Transfer-Encoding: chunked
Location: http://rm-http-address:port/ws/v1/cluster/apps/application_1399397633663_0003
Server: Jetty(6.1.26)

応答本文

{
  "state":"ACCEPTED"
}

  PUT http://rm-http-address:port/ws/v1/cluster/apps/application_1399397633663_0003/state

リクエストボディ

{
  "state":"KILLED"
}

応答ヘッダー

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

応答本文

{
  "state":"KILLED"
}

XMLレスポンス

HTTPリクエスト

  GET http://rm-http-address:port/ws/v1/cluster/apps/application_1399397633663_0003/state

応答ヘッダー

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

応答本文

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<appstate>
  <state>ACCEPTED</state>
</appstate>

HTTPリクエスト

  PUT http://rm-http-address:port/ws/v1/cluster/apps/application_1399397633663_0003/state

リクエストボディ

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<appstate>
  <state>KILLED</state>
</appstate>

応答ヘッダー

HTTP/1.1 202 Accepted
Content-Type: application/xml
Content-Length: 794
Location: http://rm-http-address:port/ws/v1/cluster/apps/application_1399397633663_0003
Server: Jetty(6.1.26)

応答本文

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<appstate>
  <state>ACCEPTED</state>
</appstate>

HTTPリクエスト

  PUT http://rm-http-address:port/ws/v1/cluster/apps/application_1399397633663_0003/state

リクエストボディ

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<appstate>
  <state>KILLED</state>
</appstate>

応答ヘッダー

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

応答本文

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<appstate>
  <state>KILLED</state>
</appstate>

承認されていないエラーレスポンス

HTTPリクエスト

  PUT http://rm-http-address:port/ws/v1/cluster/apps/application_1399397633663_0003/state

リクエストボディ

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<appstate>
  <state>KILLED</state>
</appstate>

応答ヘッダー

HTTP/1.1 403 Unauthorized
Server: Jetty(6.1.26)

不正なリクエストエラーレスポンス

HTTPリクエスト

  PUT http://rm-http-address:port/ws/v1/cluster/apps/application_1399397633663_0003/state

リクエストボディ

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<appstate>
  <state>RUNNING</state>
</appstate>

応答ヘッダー

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

応答本文

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<RemoteException>
  <exception>BadRequestException</exception>
  <message>java.lang.Exception: Only 'KILLED' is allowed as a target state.</message>
  <javaClassName>org.apache.hadoop.yarn.webapp.BadRequestException</javaClassName>
</RemoteException>

クラスターアプリケーションキューAPI

アプリケーションキューAPIを使用すると、送信されたアプリのキューを照会したり、ターゲットキューを指定したPUTリクエストを使用して、実行中のアプリを別のキューに移動したりできます。PUT操作を実行するには、RM Webサービスに認証を設定する必要があります。さらに、アプリを移動する権限が必要です。現在、CapacityスケジューラまたはFairスケジューラを使用している場合にのみ、アプリを移動できます。

アプリを移動するには、HTTPインターフェースに認証フィルターを設定する必要があることに注意してください。この機能は、HttpServletRequestにユーザー名が設定されている必要があります。フィルターが設定されていない場合、レスポンスは「UNAUTHORIZED」になります。

この機能は現在アルファ段階であり、将来変更される可能性があります。

URI

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

  • GET
    • PUT

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

  None

appqueueオブジェクトの要素

アプリの状態をリクエストすると、返される情報には次のフィールドがあります。

項目 データ型 説明
queue string アプリケーションキュー

応答例

JSONレスポンス

HTTPリクエスト

  GET http://rm-http-address:port/ws/v1/cluster/apps/application_1399397633663_0003/queue

応答ヘッダー

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

応答本文

{
  "queue":"default"
}

HTTPリクエスト

  PUT http://rm-http-address:port/ws/v1/cluster/apps/application_1399397633663_0003/queue

リクエストボディ

{
  "queue":"test"
}

応答ヘッダー

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

応答本文

{
  "queue":"test"
}

XMLレスポンス

HTTPリクエスト

  GET http://rm-http-address:port/ws/v1/cluster/apps/application_1399397633663_0003/queue

応答ヘッダー

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

応答本文

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<appqueue>
  <queue>default</queue>
</appqueue>

HTTPリクエスト

  PUT http://rm-http-address:port/ws/v1/cluster/apps/application_1399397633663_0003/queue

リクエストボディ

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<appqueue>
  <queue>test</queue>
</appqueue>

応答ヘッダー

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

応答本文

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<appqueue>
  <queue>test</queue>
</appqueue>

クラスターアプリケーション優先度API

アプリケーション優先度APIを使用すると、送信されたアプリの優先度を照会したり、ターゲット優先度を指定したPUTリクエストを使用して、実行中または受け入れ済みのアプリの優先度を更新したりできます。PUT操作を実行するには、RM Webサービスに認証を設定する必要があります。さらに、アプリの優先度を更新する権限が必要です。現在、Capacityスケジューラを使用している場合にのみ、アプリの優先度を更新できます。

アプリの優先度を更新するには、HTTPインターフェースに認証フィルターを設定する必要があることに注意してください。この機能は、HttpServletRequestにユーザー名が設定されている必要があります。フィルターが設定されていない場合、レスポンスは「UNAUTHORIZED」になります。

この機能は現在アルファ段階であり、将来変更される可能性があります。

URI

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

  • GET
    • PUT

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

  None

apppriorityオブジェクトの要素

アプリの状態をリクエストすると、返される情報には次のフィールドがあります。

項目 データ型 説明
priority int アプリケーションの優先度

応答例

JSONレスポンス

HTTPリクエスト

  GET http://rm-http-address:port/ws/v1/cluster/apps/application_1399397633663_0003/priority

応答ヘッダー

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

応答本文

{
  "priority":0
}

HTTPリクエスト

  PUT http://rm-http-address:port/ws/v1/cluster/apps/application_1399397633663_0003/priority

リクエストボディ

{
  "priority":8
}

応答ヘッダー

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

応答本文

{
  "priority":8
}

XMLレスポンス

HTTPリクエスト

  GET http://rm-http-address:port/ws/v1/cluster/apps/application_1399397633663_0003/priority

応答ヘッダー

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

応答本文

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<applicationpriority>
  <priority>0</priority>
</applicationpriority>

HTTPリクエスト

  PUT http://rm-http-address:port/ws/v1/cluster/apps/application_1399397633663_0003/priority

リクエストボディ

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<applicationpriority>
  <priority>8</priority>
</applicationpriority>

応答ヘッダー

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

応答本文

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<applicationpriority>
  <priority>8</priority>
</applicationpriority>

クラスター委任トークンAPI

委任トークンAPIは、YARN ResourceManager委任トークンを作成、更新、およびキャンセルするために使用できます。すべての委任トークンリクエストは、Kerberos認証接続(SPNEGOを使用)で実行する必要があります。非Kerberos接続で操作を実行すると、FORBIDDENレスポンスが発生します。トークンを更新する場合、トークンの作成時に指定されたリニューアのみがトークンを更新できます。他のユーザー(所有者を含む)は、トークンを更新することが禁止されています。トークンをキャンセルまたは更新する場合、キャンセルまたは更新するトークンはヘッダーを設定することで指定されることに注意してください。

この機能は現在アルファ段階であり、将来変更される可能性があります。

URI

委任トークンを作成およびキャンセルするには、次のURIを使用します。

委任トークンを更新するには、次のURIを使用します。

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

  • POST
    • DELETE

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

  None

delegation-tokenオブジェクトの要素

委任トークンAPIからのレスポンスには、以下にリストされているフィールドのいずれかが含まれます。

項目 データ型 説明
token string 委任トークン
renewer string 委任トークンの更新を許可されているユーザー
owner string 委任トークンの所有者
kind string 委任トークンの種類
expiration-time long トークンの有効期限
max-validity long トークンの最大有効期間

応答例

トークンの作成

JSON応答

HTTPリクエスト

  POST http://rm-http-address:port/ws/v1/cluster/delegation-token
  Accept: application/json
  Content-Type: application/json
  {
    "renewer" : "test-renewer"
  }

応答ヘッダー

  HTTP/1.1 200 OK
  WWW-Authenticate: Negotiate ...
  Date: Sat, 28 Jun 2014 18:08:11 GMT
  Server: Jetty(6.1.26)
  Set-Cookie: ...
  Content-Type: application/json

レスポンスボディ

  {
    "token":"MgASY2xpZW50QEVYQU1QTEUuQ09NDHRlc3QtcmVuZXdlcgCKAUckiEZpigFHSJTKaQECFN9EMM9BzfPoDxu572EVUpzqhnSGE1JNX0RFTEVHQVRJT05fVE9LRU4A",
    "renewer":"test-renewer",
    "owner":"client@EXAMPLE.COM",
    "kind":"RM_DELEGATION_TOKEN",
    "expiration-time":1405153616489,
    "max-validity":1405672016489
  }

XML応答

HTTPリクエスト

  POST http://rm-http-address:port/ws/v1/cluster/delegation-token
  Accept: application/xml
  Content-Type: application/xml
  <delegation-token>
    <renewer>test-renewer</renewer>
  </delegation-token>

応答ヘッダー

  HTTP/1.1 200 OK
  WWW-Authenticate: Negotiate ...
  Date: Sat, 28 Jun 2014 18:08:11 GMT
  Content-Length: 423
  Server: Jetty(6.1.26)
  Set-Cookie: ...
  Content-Type: application/xml

応答本文

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<delegation-token>  <token>MgASY2xpZW50QEVYQU1QTEUuQ09NDHRlc3QtcmVuZXdlcgCKAUckgZ8yigFHSI4jMgcCFDTG8X6XFFn2udQngzSXQL8vWaKIE1JNX0RFTEVHQVRJT05fVE9LRU4A</token>
  <renewer>test-renewer</renewer>
  <owner>client@EXAMPLE.COM</owner>
  <kind>RM_DELEGATION_TOKEN</kind>
  <expiration-time>1405153180466</expiration-time>
  <max-validity>1405671580466</max-validity>
</delegation-token>

トークンの更新

JSON応答

HTTPリクエスト

  POST http://rm-http-address:port/ws/v1/cluster/delegation-token/expiration
  Accept: application/json
  Hadoop-YARN-RM-Delegation-Token: MgASY2xpZW50QEVYQU1QTEUuQ09NDHRlc3QtcmVuZXdlcgCKAUbjqcHHigFHB7ZFxwQCFKWD3znCkDSy6SQIjRCLDydxbxvgE1JNX0RFTEVHQVRJT05fVE9LRU4A
  Content-Type: application/json

応答ヘッダー

  HTTP/1.1 200 OK
  WWW-Authenticate: Negotiate ...
  Date: Sat, 28 Jun 2014 18:08:11 GMT
  Server: Jetty(6.1.26)
  Set-Cookie: ...
  Content-Type: application/json

レスポンスボディ

  {
    "expiration-time":1404112520402
  }

XML応答

HTTPリクエスト

  POST http://rm-http-address:port/ws/v1/cluster/delegation-token/expiration
  Accept: application/xml
  Content-Type: application/xml
  Hadoop-YARN-RM-Delegation-Token: MgASY2xpZW50QEVYQU1QTEUuQ09NDHRlc3QtcmVuZXdlcgCKAUbjqcHHigFHB7ZFxwQCFKWD3znCkDSy6SQIjRCLDydxbxvgE1JNX0RFTEVHQVRJT05fVE9LRU4A

応答ヘッダー

  HTTP/1.1 200 OK
  WWW-Authenticate: Negotiate ...
  Date: Sat, 28 Jun 2014 18:08:11 GMT
  Content-Length: 423
  Server: Jetty(6.1.26)
  Set-Cookie: ...
  Content-Type: application/xml

応答本文

  <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
  <delegation-token>
    <expiration-time>1404112520402</expiration-time>
  </delegation-token>

トークンのキャンセル

HTTPリクエスト

DELETE http://rm-http-address:port/ws/v1/cluster/delegation-token
Hadoop-YARN-RM-Delegation-Token: MgASY2xpZW50QEVYQU1QTEUuQ09NDHRlc3QtcmVuZXdlcgCKAUbjqcHHigFHB7ZFxwQCFKWD3znCkDSy6SQIjRCLDydxbxvgE1JNX0RFTEVHQVRJT05fVE9LRU4A
Accept: application/xml

応答ヘッダー

  HTTP/1.1 200 OK
  WWW-Authenticate: Negotiate ...
  Date: Sun, 29 Jun 2014 07:25:18 GMT
  Transfer-Encoding: chunked
  Server: Jetty(6.1.26)
  Set-Cookie: ...
  Content-Type: application/xml

レスポンスボディはありません。

委任トークンを使用した認証

この機能はアルファモードであり、将来変更される可能性があります。

YARN RM Webサービスを使用する際に、委任トークンを使用して認証できます。ただし、これには適切な構成が必要です。条件は以下のとおりです。

  • Hadoopがセキュリティモードで設定されており、認証タイプがkerberosに設定されている。

  • Hadoop HTTP認証が設定されており、認証タイプがkerberosに設定されている

設定が完了すると、上記のWebサービスを使用して委任トークンを取得し、以下の例に示すように使用できます。

  PUT http://rm-http-address:port/ws/v1/cluster/apps/application_1399397633663_0003/state
  X-Hadoop-Delegation-Token: MgASY2xpZW50QEVYQU1QTEUuQ09NDHRlc3QtcmVuZXdlcgCKAUbjqcHHigFHB7ZFxwQCFKWD3znCkDSy6SQIjRCLDydxbxvgE1JNX0RFTEVHQVRJT05fVE9LRU4A
  Content-Type: application/json; charset=UTF8
  {
    "state":"KILLED"
  }

クラスタ予約APIリスト

クラスタ予約APIは、予約を一覧表示するために使用できます。予約を一覧表示する場合、ユーザーはキュー、予約ID、開始時間、または終了時間に関する制約を指定する必要があります。ユーザーは、一覧表示される予約の完全なリソース割り当てを含めるかどうかも指定する必要があります。結果のページは、受付時間、ユーザー、リソース割り当て、予約ID、および予約定義など、予約に関する情報を含むレスポンスを返します。

URI

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

  • GET

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

  • queue - 一覧表示する予約を含むキューの名前。設定されていない場合、この値はデフォルトの「default」になります。
    • reservation-id - 一覧表示する予約の予約ID。このパラメータが存在する場合、start-timeとend-timeは無視されます。
    • start-time - この開始時間より後に終了する予約が一覧表示されます。指定されていない場合、または無効な場合は、デフォルトで0になります。
    • end-time - この終了時間より後に開始する予約が一覧表示されます。指定されていない場合、または無効な場合は、デフォルトでLong.MaxValueになります。
    • include-resource-allocations - trueまたはfalse。trueの場合、予約のリソース割り当てがレスポンスに含まれます。falseの場合、リソース割り当てはレスポンスに含まれません。デフォルトはfalseです。

ReservationListInfoオブジェクトの要素

項目 データ型 説明
reservations ReservationInfoの配列(JSON) / ゼロ以上のReservationInfoオブジェクト(XML) 指定されたクエリでリストされる予約

reservationsオブジェクトの要素

項目 データ型 説明
acceptance-time long 予約が受け付けられた時間
resource-allocations ResourceAllocationInfoの配列(JSON) / ゼロ以上のResourceAllocationInfoオブジェクト(XML) 予約のリソース割り当て情報
reservation-id 単一のReservationId文字列 一意の予約識別子
reservation-definition 単一のReservationDefinitionオブジェクト ユーザーのリソースに対する時間経過に伴うニーズを表す制約のセット
user string 予約を行ったユーザー

resource-allocationsオブジェクトの要素

項目 データ型 説明
resource 単一のResourceオブジェクト 予約割り当てに割り当てられたリソース
startTime long リソースが割り当てられる開始時間
endTime long リソースが割り当てられる終了時間

resourceオブジェクトの要素

項目 データ型 説明
memory int 予約割り当てに割り当てられたメモリ
vCores int 予約割り当てに割り当てられたコア数

reservation-definitionオブジェクトの要素

項目 データ型 説明
arrival long この予約を割り当てることができる最も早い時間のUTCタイムスタンプ表現。
deadline long この予約を割り当てることができる最も遅い時間のUTCタイムスタンプ表現。
reservation-name string 予約のニーモニック名(有効な識別子ではない)。
reservation-requests object この予約の「ステージ」またはフェーズのリスト。それぞれがリソース要件と期間を記述しています。
priority int 予約の優先度を表す整数。優先度の数値が小さいほど、優先度の高い予約を示します。繰り返し予約は、常に非繰り返し予約よりも優先度が高くなります。非繰り返し予約の優先度は、非繰り返し予約とのみ比較されます。同様に、繰り返し予約についても同様です。
recurrence-expression string 定期的なジョブの時間間隔を表す繰り返し式。現在、long値のみがサポートされています。後で、任意の繰り返しパターン(例:毎週火曜日と木曜日)を示す正規表現のサポートが追加されます。繰り返しは、定期的なジョブの場合、ミリ秒で表されます。繰り返しのないジョブの場合、繰り返しは0です。定期的なジョブは、明示的にキャンセルされるまで有効であり、非定期的なジョブよりも優先度が高くなります(初期配置と再計画中)。定期的なジョブの割り当ては実行間で一貫しています(割り当ての柔軟性は初期配置時のみに活用され、その後は割り当ては一貫したままです)。また、繰り返し式は予約期間(締め切り - 到着)よりも大きくする必要があります。また、構成された最大期間は繰り返し式で割り切れる必要があることに注意してください。

reservation-requestsオブジェクトの要素

項目 データ型 説明
reservation-request-interpreter int ReservationRequestのセットを解釈する方法の数値選択:0はANY、1はALL、2はORDER、3はORDER_NO_GAP
reservation-request object この予約のフェーズ/ステージのリソースと時間の機能の説明

reservation-requestオブジェクトの要素

項目 データ型 説明
duration long ミリ秒単位のReservationRequestの期間(予約のこの部分を満たす割り当てが存在する必要がある連続ミリ秒数)。
num-containers int 予約のこのフェーズで必要なコンテナの数(このフェーズのジョブの最大並列処理をキャプチャ)。
min-concurrency int この割り当てを満たすために同時に割り当てなければならないコンテナの最小数(最小並列処理をキャプチャ、ギャングセマンティクスを表現するのに便利)。
capability object 各コンテナのサイズ(メモリ、vCore)を指定できます。

GETレスポンスの例

GETリクエストを使用して、ResourceManagerへの予約を一覧表示できます。上記のように、予約に関する情報は、成功時に(回答の本文に)返されます。リストリクエストが成功すると、200レスポンスが返されます。予約を送信するには、HTTPインターフェイスに認証フィルターを設定する必要があることに注意してください。この機能では、HttpServletRequestにユーザー名が設定されている必要があります。フィルターが設定されていない場合、レスポンスは「UNAUTHORIZED」レスポンスになります。この機能は現在アルファ段階であり、将来変更される可能性があることに注意してください。

JSON応答

このリクエストは、開始時間1455159355000と1475160036000内のすべてのアクティブな予約を返します。include-resource-allocationsがtrueに設定されているため、リソース割り当ての完全なセットがレスポンスに含まれます。

HTTPリクエスト

  GET http://rm-http-address:port/ws/v1/cluster/reservation/list?queue=dedicated&start-time=1455159355000&end-time=1475160036000&include-resource-allocations=true

応答ヘッダー

  HTTP/1.1 200 OK
  Content-Type: application/json
  Transfer-Encoding: chunked
  Cache-Control: no-cache
  Content-Encoding: gzip
  Pragma: no-cache,no-cache
  Server: Jetty(6.1.26)

応答本文

{
  "reservations": {
    "acceptance-time": "1455160008442",
    "user": "submitter",
    "resource-allocations": [
      {
        "resource": {
          "memory": "0",
          "vCores": "0"
        },
        "startTime": "1465541532000",
        "endTime": "1465542250000"
      },
      {
        "resource": {
          "memory": "1024",
          "vCores": "1"
        },
        "startTime": "1465542250000",
        "endTime": "1465542251000"
      },
      {
        "resource": {
          "memory": "0",
          "vCores": "0"
        },
        "startTime": "1465542251000",
        "endTime": "1465542252000"
      }
    ],
    "reservation-id": "reservation_1458852875788_0002",
    "reservation-definition": {
      "arrival": "1465541532000",
      "deadline": "1465542252000",
      "reservation-requests": {
        "reservation-request-interpreter": "0",
        "reservation-request": {
          "capability": {
            "memory": "1024",
            "vCores": "1"
          },
          "min-concurrency": "1",
          "num-containers": "1",
          "duration": "60"
        }
      },
      "reservation-name": "res_1"
    }
  }
}

XMLレスポンス

HTTPリクエスト

  GET http://rm-http-address:port/ws/v1/cluster/reservation/list?queue=dedicated&start-time=1455159355000&end-time=1475160036000&include-resource-allocations=true

応答ヘッダー

  HTTP/1.1 200 OK
  Content-Type: application/xml
  Content-length: 395
  Cache-Control: no-cache
  Content-Encoding: gzip
  Pragma: no-cache,no-cache
  Server: Jetty(6.1.26)

応答本文

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <reservationListInfo>
        <reservations>
        <acceptance-time>1455233661003</acceptance-time>
        <user>dr.who</user>
        <resource-allocations>
            <resource>
                <memory>0</memory>
                <vCores>0</vCores>
            </resource>
            <startTime>1465541532000</startTime>
            <endTime>1465542251000</endTime>
        </resource-allocations>
        <resource-allocations>
            <resource>
                <memory>1024</memory>
                <vCores>1</vCores>
            </resource>
            <startTime>1465542251000</startTime>
            <endTime>1465542252000</endTime>
        </resource-allocations>
        <reservation-id>reservation_1458852875788_0002</reservation-id>
        <reservation-definition>
            <arrival>1465541532000</arrival>
            <deadline>1465542252000</deadline>
            <reservation-requests>
                <reservation-request-interpreter>0</reservation-request-interpreter>
                <reservation-request>
                    <capability>
                        <memory>1024</memory>
                        <vCores>1</vCores>
                    </capability>
                    <min-concurrency>1</min-concurrency>
                    <num-containers>1</num-containers>
                    <duration>60</duration>
                </reservation-request>
            </reservation-requests>
            <reservation-name>res_1</reservation-name>
        </reservation-definition>
    </reservations>
</reservationListInfo>

クラスタ予約APIの作成

新規予約APIを使用して、クラスタ予約APIの送信の一部として予約を送信するために使用できる予約IDを取得します。

この機能は現在アルファ段階であり、将来変更される可能性があります。

URI

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

  • POST

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

  None

new-reservationオブジェクトの要素

new-reservationレスポンスには、次の要素が含まれます

項目 データ型 説明
reservation-id string 新しく作成された予約ID

応答例

JSON応答

HTTPリクエスト

  POST http://rm-http-address:port/ws/v1/cluster/reservation/new-reservation

応答ヘッダー

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

応答本文

{
  "reservation-id":"reservation_1404198295326_0003"
}

XML応答

HTTPリクエスト

  POST http://rm-http-address:port/ws/v1/cluster/reservation/new-reservation

応答ヘッダー

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

応答本文

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<new-reservation>
  <reservation-id>reservation_1404198295326_0003</reservation-id>
</new-reservation>

クラスタ予約APIの送信

クラスタ予約APIは、予約を送信するために使用できます。予約を送信する場合、ユーザーは必要なリソースと時間に関する制約を指定します。予約が可能な場合、結果のレスポンスは成功です。予約IDを使用して予約を複数回送信すると、予約定義が同じであればリクエストは成功しますが、作成される予約は1つだけです。予約定義が異なる場合、サーバーはエラーレスポンスで応答します。予約が作成されると、ユーザーは予約の送信に使用した予約IDを使用して、クラスタアプリケーションAPIの送信の一部としてリソースにアクセスできます。

URI

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

  • POST

POSTレスポンスの例

POSTリクエストを使用して、ResourceManagerに予約を送信できます。上記のように、成功時に予約IDが返されます(回答の本文に)。送信が成功すると、200レスポンスが返されます。予約を送信するには、HTTPインターフェイスに認証フィルターを設定する必要があることに注意してください。この機能では、HttpServletRequestにユーザー名が設定されている必要があります。フィルターが設定されていない場合、レスポンスは「UNAUTHORIZED」レスポンスになります。

この機能は現在アルファ段階であり、将来変更される可能性があることに注意してください。

POSTリクエストオブジェクトの要素

項目 データ型 説明
queue string 送信先の(予約可能な)キュー
reservation-definition object ユーザーのリソースに対する時間経過に伴うニーズを表す制約のセット。
reservation-id string 予約の送信に使用する予約ID。

reservation-definitionオブジェクトの要素

項目 データ型 説明
arrival long この予約を割り当てることができる最も早い時間のUTCタイムスタンプ表現。
deadline long この予約を割り当てることができる最も遅い時間のUTCタイムスタンプ表現。
reservation-name string 予約のニーモニック名(有効な識別子ではない)。
reservation-requests object この予約の「ステージ」またはフェーズのリスト。それぞれがリソース要件と期間を記述しています。
priority int 予約の優先度を表す整数。優先度の数値が小さいほど、優先度の高い予約を示します。繰り返し予約は、常に非繰り返し予約よりも優先度が高くなります。非繰り返し予約の優先度は、非繰り返し予約とのみ比較されます。同様に、繰り返し予約についても同様です。

reservation-requestsオブジェクトの要素

項目 データ型 説明
reservation-request-interpreter int ReservationRequestのセットを解釈する方法の数値選択:0はANY、1はALL、2はORDER、3はORDER_NO_GAP
reservation-request object この予約のフェーズ/ステージのリソースと時間の機能の説明

reservation-requestオブジェクトの要素

項目 データ型 説明
duration long ミリ秒単位のReservationRequeustの期間(予約のこの部分を満たす割り当てが存在する必要がある連続ミリ秒数)。
num-containers int 予約のこのフェーズで必要なコンテナの数(このフェーズのジョブの最大並列処理をキャプチャ)。
min-concurrency int この割り当てを満たすために同時に割り当てなければならないコンテナの最小数(最小並列処理をキャプチャ、ギャングセマンティクスを表現するのに便利)。
capability object 各コンテナのサイズ(メモリ、vCore)を指定できます。

capabilityオブジェクトの要素

項目 データ型 説明
memory int このコンテナのメモリのMB数
vCores int このコンテナの仮想コア数

JSON応答

この例には、2つのステージ(reservation-request-interpreterが0に設定されているため、相互に代替)で構成される予約が含まれており、最初のステージは短く、高さが高く、「ギャング」で、60秒間正確に220個のコンテナであり、2番目の代替はより長く、期間が120秒で、110個のコンテナ(および1コンテナの最小同時実行数、したがってギャングセマンティクスなし)で高さが低くなります。

HTTPリクエスト

POST http://rmdns:8088/ws/v1/cluster/reservation/submit
Content-Type: application/json
{
  "queue" : "dedicated",
  "reservation-id":"reservation_1404198295326_0003"
  "reservation-definition" : {
     "arrival" : 1765541532000,
     "deadline" : 1765542252000,
     "reservation-name" : "res_1",
     "reservation-requests" : {
        "reservation-request-interpreter" : 0,
        "reservation-request" : [
           {
             "duration" : 60000,
             "num-containers" : 220,
             "min-concurrency" : 220,
             "capability" : {
               "memory" : 1024,
               "vCores" : 1
             }
           },
           {
             "duration" : 120000,
             "num-containers" : 110,
             "min-concurrency" : 1,
             "capability" : {
               "memory" : 1024,
               "vCores" : 1
             }
           }
        ]
     }
   }
}

応答ヘッダー

200 OK Cache-Control: no-cache Expires: Thu, 17 Dec 2015 23:36:34 GMT, Thu, 17 Dec 2015 23:36:34 GMT Date: Thu, 17 Dec 2015 23:36:34 GMT, Thu, 17 Dec 2015 23:36:34 GMT Pragma: no-cache, no-cache Content-Type: application/xml Content-Encoding: gzip Content-Length: 137 Server: Jetty(6.1.26)

応答本文

  No response body

XML応答

HTTPリクエスト

POST http://rmdns:8088/ws/v1/cluster/reservation/submit
Accept: application/xml
Content-Type: application/xml
<reservation-submission-context>
  <queue>dedicated</queue>
  <reservation-id>reservation_1404198295326_0003</reservation-id>
  <reservation-definition>
     <arrival>1765541532000</arrival>
     <deadline>1765542252000</deadline>
     <reservation-name>res_1</reservation-name>
     <reservation-requests>
        <reservation-request-interpreter>0</reservation-request-interpreter>
        <reservation-request>
             <duration>60000</duration>
             <num-containers>220</num-containers>
             <min-concurrency>220</min-concurrency>
             <capability>
               <memory>1024</memory>
               <vCores>1</vCores>
             </capability>
        </reservation-request>
        <reservation-request>
             <duration>120000</duration>
             <num-containers>110</num-containers>
             <min-concurrency>1</min-concurrency>
             <capability>
               <memory>1024</memory>
               <vCores>1</vCores>
             </capability>
        </reservation-request>
     </reservation-requests>
  </reservation-definition>
</reservation-submission-context>

応答ヘッダー

200 OK Cache-Control: no-cache Expires: Thu, 17 Dec 2015 23:49:21 GMT, Thu, 17 Dec 2015 23:49:21 GMT Date: Thu, 17 Dec 2015 23:49:21 GMT, Thu, 17 Dec 2015 23:49:21 GMT Pragma: no-cache, no-cache Content-Type: application/xml Content-Encoding: gzip Content-Length: 137 Server: Jetty(6.1.26)

応答本文

  No response body

クラスタ予約APIの更新

クラスタ予約APIの更新を使用して、既存の予約を更新できます。予約の更新は、上記で説明した送信と同様に機能しますが、ユーザーは更新する既存の予約の予約IDを送信します。セマンティクスは試行と交換です。操作が成功すると、要求された更新パラメータに基づいて既存の予約が変更され、実行が失敗すると、既存の予約は変更されません。

URI

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

  • POST

POSTレスポンスの例

POSTリクエストを使用して、ResourceManagerへの予約を更新できます。送信が成功すると、200レスポンスが返され、既存の予約のインプレース更新(IDは変更されません)が示されます。予約を更新するには、HTTPインターフェイスに認証フィルターを設定する必要があることに注意してください。この機能では、HttpServletRequestにユーザー名が設定されている必要があります。フィルターが設定されていない場合、レスポンスは「UNAUTHORIZED」レスポンスになります。

この機能は現在アルファ段階であり、将来変更される可能性があることに注意してください。

POSTリクエストオブジェクトの要素

項目 データ型 説明
reservation-id string 更新する予約のID(システムはこれから適切なキューを自動的に検索します)
reservation-definition object ユーザーのリソースに対する時間経過に伴うニーズを表す制約のセット。

reservation-definitionオブジェクトの要素

項目 データ型 説明
arrival long この予約を割り当てることができる最も早い時間のUTCタイムスタンプ表現。
deadline long この予約を割り当てることができる最も遅い時間のUTCタイムスタンプ表現。
reservation-name string 予約のニーモニック名(有効な識別子ではない)。
reservation-requests object この予約の「ステージ」またはフェーズのリスト。それぞれがリソース要件と期間を記述しています。
priority int 予約の優先度を表す整数。優先度の数値が小さいほど、優先度の高い予約を示します。繰り返し予約は、常に非繰り返し予約よりも優先度が高くなります。非繰り返し予約の優先度は、非繰り返し予約とのみ比較されます。同様に、繰り返し予約についても同様です。

reservation-requestsオブジェクトの要素

項目 データ型 説明
reservation-request-interpreter int ReservationRequestのセットを解釈する方法の数値選択:0はANY、1はALL、2はORDER、3はORDER_NO_GAP
reservation-request object この予約のフェーズ/ステージのリソースと時間の機能の説明

reservation-requestオブジェクトの要素

項目 データ型 説明
duration long ミリ秒単位のReservationRequeustの期間(予約のこの部分を満たす割り当てが存在する必要がある連続ミリ秒数)。
num-containers int 予約のこのフェーズで必要なコンテナの数(このフェーズのジョブの最大並列処理をキャプチャ)。
min-concurrency int この割り当てを満たすために同時に割り当てなければならないコンテナの最小数(最小並列処理をキャプチャ、ギャングセマンティクスを表現するのに便利)。
capability object 各コンテナのサイズ(メモリ、vCore)を指定できます。

capabilityオブジェクトの要素

項目 データ型 説明
memory int このコンテナのメモリのMB数
vCores int このコンテナの仮想コア数

JSON応答

この例では、reservation_1449259268893_0005で識別される既存の予約を2つのステージ(reservation-request-interpreterが2に設定されているため、順序どおり)で更新します。最初のステージは5分間の10個のコンテナの「ギャング」(10個のコンテナの最小同時実行数)で、その後に10分間の50個のコンテナ(1コンテナの最小同時実行数、したがってギャングセマンティクスなし)が続きます。

HTTPリクエスト

POST http://rmdns:8088/ws/v1/cluster/reservation/update
Accept: application/json
Content-Type: application/json
{
  "reservation-id" : "reservation_1449259268893_0005",
  "reservation-definition" : {
     "arrival" : 1765541532000,
     "deadline" : 1765542252000,
     "reservation-name" : "res_1",
     "reservation-requests" : {
        "reservation-request-interpreter" : 2,
        "reservation-request" : [
           {
             "duration" : 300000,
             "num-containers" : 10,
             "min-concurrency" : 10,
             "capability" : {
               "memory" : 1024,
               "vCores" : 1
             }
           },
           {
             "duration" : 60000,
             "num-containers" : 50,
             "min-concurrency" : 1,
             "capability" : {
               "memory" : 1024,
               "vCores" : 1
             }
           }
          ]
     }
   }
}

応答ヘッダー

200 OK Cache-Control: no-cache Expires: Thu, 17 Dec 2015 23:36:34 GMT, Thu, 17 Dec 2015 23:36:34 GMT Date: Thu, 17 Dec 2015 23:36:34 GMT, Thu, 17 Dec 2015 23:36:34 GMT Pragma: no-cache, no-cache Content-Type: application/json Content-Encoding: gzip Content-Length: 137 Server: Jetty(6.1.26)

応答本文

  No response body

XML応答

HTTPリクエスト

POST http://rmdns:8088/ws/v1/cluster/reservation/update
Accept: application/xml
Content-Type: application/xml
<reservation-update-context>
  <reservation-id>reservation_1449259268893_0005</reservation-id>
  <reservation-definition>
     <arrival>1765541532000</arrival>
     <deadline>1765542252000</deadline>
     <reservation-name>res_1</reservation-name>
     <reservation-requests>
        <reservation-request-interpreter>2</reservation-request-interpreter>
        <reservation-request>
             <duration>300000</duration>
             <num-containers>10</num-containers>
             <min-concurrency>10</min-concurrency>
             <capability>
               <memory>1024</memory>
               <vCores>1</vCores>
             </capability>
        </reservation-request>
        <reservation-request>
             <duration>60000</duration>
             <num-containers>50</num-containers>
             <min-concurrency>1</min-concurrency>
             <capability>
               <memory>1024</memory>
               <vCores>1</vCores>
             </capability>
        </reservation-request>
     </reservation-requests>
  </reservation-definition>
</reservation-update-context>

応答ヘッダー

200 OK Cache-Control: no-cache Expires: Thu, 17 Dec 2015 23:49:21 GMT, Thu, 17 Dec 2015 23:49:21 GMT Date: Thu, 17 Dec 2015 23:49:21 GMT, Thu, 17 Dec 2015 23:49:21 GMT Pragma: no-cache, no-cache Content-Type: application/xml Content-Encoding: gzip Content-Length: 137 Server: Jetty(6.1.26)

応答本文

  No response body

クラスタ予約APIの削除

クラスタ予約APIの削除を使用して、既存の予約を削除できます。削除は更新と同様に機能します。リクエストには予約IDが含まれており、成功すると予約がキャンセルされ、それ以外の場合は予約がシステムに残ります。

URI

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

  • POST

POSTレスポンスの例

ResourceManagerへの予約削除には、POSTリクエストを使用できます。送信が成功すると、削除が成功したことを示す200レスポンスが返されます。予約を削除するには、HTTPインターフェースに認証フィルターを設定する必要があることに注意してください。この機能では、HttpServletRequestにユーザー名が設定されている必要があります。フィルターが設定されていない場合、「UNAUTHORIZED」レスポンスが返されます。

この機能は現在アルファ段階であり、将来変更される可能性があることに注意してください。

POSTリクエストオブジェクトの要素

項目 データ型 説明
reservation-id string 削除する予約のID(システムはこれから正しいキューを自動的に検索します)

JSON応答

この例では、reservation_1449259268893_0006で識別される既存の予約を削除します

HTTPリクエスト

POST http://10.200.91.98:8088/ws/v1/cluster/reservation/delete
Accept: application/json
Content-Type: application/json
{
  "reservation-id" : "reservation_1449259268893_0006"
}

応答ヘッダー

200 OK Cache-Control: no-cache Expires: Fri, 18 Dec 2015 01:31:05 GMT, Fri, 18 Dec 2015 01:31:05 GMT Date: Fri, 18 Dec 2015 01:31:05 GMT, Fri, 18 Dec 2015 01:31:05 GMT Pragma: no-cache, no-cache Content-Type: application/json Content-Encoding: gzip Transfer-Encoding: chunked Server: Jetty(6.1.26)

応答本文

  No response body

XML応答

HTTPリクエスト

POST http://10.200.91.98:8088/ws/v1/cluster/reservation/delete
Accept: application/xml
Content-Type: application/xml
<reservation-delete-context>
<reservation-id>reservation_1449259268893_0006</reservation-id>
</reservation-delete-context>

応答ヘッダー

200 OK Cache-Control: no-cache Expires: Fri, 18 Dec 2015 01:33:23 GMT, Fri, 18 Dec 2015 01:33:23 GMT Date: Fri, 18 Dec 2015 01:33:23 GMT, Fri, 18 Dec 2015 01:33:23 GMT Pragma: no-cache, no-cache Content-Type: application/xml Content-Encoding: gzip Content-Length: 101 Server: Jetty(6.1.26)

応答本文

  No response body

クラスターアプリケーションタイムアウトAPI

クラスターアプリケーションタイムアウトAPIは、アプリケーションの構成済みタイムアウトをすべて取得するために使用できます。このリソースに対してGET操作を実行すると、タイムアウトオブジェクトのコレクションが返されます。各タイムアウトオブジェクトは、タイムアウトタイプ、有効期限、および残り時間(秒)で構成されます。

URI

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

  • GET

timeouts(アプリケーションタイムアウト)オブジェクトの要素

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

項目 データ型 説明
timeout タイムアウトオブジェクトの配列(JSON)/ゼロ個以上のアプリケーションオブジェクト(XML) アプリケーションタイムアウトオブジェクトのコレクション

JSON応答

HTTPリクエスト

  Accept: application/json
  GET http://rm-http-address:port/ws/v1/cluster/apps/{appid}/timeouts

応答ヘッダー

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

応答本文

{
  "timeouts":
  {
    "timeout":
    [
      {
        "type": "LIFETIME",
        "expiryTime": "2016-12-05T22:51:00.104+0530",
        "remainingTimeInSeconds": 27
      }
    ]
  }
}

XML応答

HTTPリクエスト

  Accept: application/xml
  GET http://rm-http-address:port/ws/v1/cluster/apps/{appid}/timeouts

応答ヘッダー

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

応答本文

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<timeouts>
    <timeout>
       <type>LIFETIME</type>
       <expiryTime>2016-12-05T22:51:00.104+0530</expiryTime>
       <remainingTimeInSeconds>27</remainingTimeInSeconds>
    </timeout>
</timeouts>

クラスターアプリケーションタイムアウトAPI

クラスターアプリケーションタイムアウトリソースには、タイムアウトに関する情報が含まれています。

URI

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

  • GET

timeout(アプリケーションタイムアウト)オブジェクトの要素

項目 データ型 説明
type string タイムアウトタイプ。有効な値は、ApplicationTimeoutType列挙型のメンバーです。現在、LIFETIMEのみが有効な値です。
expiryTime string アプリケーションが有効期限切れとなる時刻。ISO8601 yyyy-MM-dd'T'HH:mm:ss.SSSZ形式です。UNLIMITEDの場合、アプリケーションは永久に実行されます。
remainingTimeInSeconds long 構成されたアプリケーションタイムアウトの残り時間。-1は、アプリケーションにタイムアウトが構成されていないことを示します。ゼロ(0)は、アプリケーションが構成されたタイムアウトタイプで期限切れになったことを示します。

JSON応答

HTTPリクエスト

  Accept: application/json
  GET http://rm-http-address:port/ws/v1/cluster/apps/{appid}/timeouts/LIFETIME

応答ヘッダー

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

応答本文

{
"timeout":
   {
     "type": "LIFETIME",
     "expiryTime": "2016-12-05T22:51:00.104+0530",
     "remainingTimeInSeconds": 27
   }
}

XML応答

HTTPリクエスト

  Accept: application/xml
  GET http://rm-http-address:port/ws/v1/cluster/apps/{appid}/timeouts/LIFETIME

応答ヘッダー

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

応答本文

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<timeout>
    <type>LIFETIME</type>
    <expiryTime>2016-12-05T22:51:00.104+0530</expiryTime>
    <remainingTimeInSeconds>27</remainingTimeInSeconds>
</timeout>

クラスターアプリケーションタイムアウト更新API

指定されたタイムアウトタイプのアプリケーションのタイムアウトを更新します。

URI

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

  • PUT

timeoutオブジェクトの要素

項目 データ型 説明
type string タイムアウトタイプ。有効な値は、ApplicationTimeoutType列挙型のメンバーです。現在、LIFETIMEのみが有効な値です。
expiryTime string アプリケーションが有効期限切れになる時刻。ISO8601 yyyy-MM-dd'T'HH:mm:ss.SSSZ形式です。

JSON応答

HTTPリクエスト

      Accept: application/json
      PUT http://rm-http-address:port/ws/v1/cluster/apps/{appid}/timeout
      Content-Type: application/json
        {
        "timeout":
                   {
                     "type": "LIFETIME",
                     "expiryTime": "2016-11-27T09:36:16.678+05:30"
                   }
        }

応答ヘッダー

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

応答本文

{
"timeout":
   {
     "type": "LIFETIME",
     "expiryTime": "2016-11-27T09:36:16.678+05:30",
     "remainingTimeInSeconds": 90
   }
}

XML応答

HTTPリクエスト

      Accept: application/xml
      PUT http://rm-http-address:port/ws/v1/cluster/apps/{appid}/timeout
      Content-Type: application/xml
        <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
        <timeout>
            <type>LIFETIME</type>
            <expiryTime>2016-11-27T09:36:16.678+05:30</expiryTime>
        </timeout>

応答ヘッダー

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

応答本文

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<timeout>
    <type>LIFETIME</type>
    <expiryTime>2016-11-27T09:36:16.678+05:30</expiryTime>
    <remainingTimeInSeconds>90</remainingTimeInSeconds>
</timeout>

スケジューラー構成変更API

スケジューラー構成変更APIは、スケジューラー/キュー構成とキュー階層を変更する方法を提供します。

この機能は現在アルファ段階であり、変更される可能性があることに注意してください。

URI

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

  • GET
    • PUT

sched-confオブジェクトの要素

項目 データ型 説明
update-queue object 構成を更新するキュー
add-queue object このキューの構成とともにスケジューラーに追加するキュー
remove-queue string 削除するキューのフルパス名
global-updates map スケジューラーのグローバル構成を更新するキーと値のペアのマップ

GETリクエストの例

GETリクエストは、現在スケジューラーのコンテキストにロードされているスケジューラーの構成を取得するために使用されます。

XML応答

HTTPリクエスト

  Accept: application/xml
  Content-Type: application/xml
  GET http://rm-http-address:port/ws/v1/cluster/scheduler-conf

応答ヘッダー

  TTP/1.1 200 OK
  Content-Type: application/xml; charset=utf-8
  Transfer-Encoding: chunked

応答本文

      <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
      <configuration>
        <property>
          <name>yarn.scheduler.capacity.root.queues</name>
          <value>default</value>
        </property>
        <property>
          <name>yarn.scheduler.capacity.maximum-applications</name>
          <value>10000</value>
        </property>
        <property>
          <name>yarn.scheduler.capacity.root.default.capacity</name>
          <value>100</value>
        </property>
      </configuration>

PUTリクエストの例

PUTリクエストは、スケジューラーの構成を変更するために使用されます。変更が成功すると、200レスポンスが返されます。不正な形式のリクエストや、無効なスケジューラー構成になったリクエストは、400レスポンスになります。

キュー構成の更新

キュー構成を更新するためのリクエスト。

update-queueオブジェクトの要素

項目 データ型 説明
queue-name string 更新するキューのフルパス名
params map このキューを更新するためのキーと値の構成ペアのマップ

キャパシティスケジューラーを使用しており、現在のキュー構成が単一のキューroot.defaultであると仮定すると、この例では、root.defaultの最大アプリケーション数を100に、最小ユーザー制限パーセントを10に設定します。

HTTPリクエスト

      Accept: application/xml
      PUT http://rm-http-address:port/ws/v1/cluster/scheduler-conf
      Content-Type: application/xml
      <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
      <sched-conf>
        <update-queue>
          <queue-name>root.default</queue-name>
          <params>
            <entry>
              <key>maximum-applications</key>
              <value>100</value>
            </entry>
            <entry>
              <key>minimum-user-limit-percent</key>
              <value>10</value>
            </entry>
          </params>
        </update-queue>
      </sched-conf>

応答ヘッダー

  HTTP/1.1 200 OK
  Content-Type: application/xml
  Transfer-Encoding: chunked

キューの追加

キューの追加/キュー構成の更新のためのリクエスト。

add-queueオブジェクトの要素

項目 データ型 説明
queue-name string 追加するキューのフルパス名
params map このキューに設定するキーと値の構成ペアのマップ

キャパシティスケジューラーを使用しており、現在のキュー構成が単一のキューroot.defaultであると仮定すると、この例では、キャパシティ/最大キャパシティが10のキューroot.aを追加し、root.defaultのキャパシティ/最大キャパシティを90に調整します。(より複雑な例には、同じリクエストで親も追加されるキューの追加や、複数の兄弟キューの追加が含まれます。)

HTTPリクエスト

      Accept: application/xml
      PUT http://rm-http-address:port/ws/v1/cluster/scheduler-conf
      Content-Type: application/xml
      <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
      <sched-conf>
        <add-queue>
          <queue-name>root.a</queue-name>
          <params>
            <entry>
              <key>capacity</key>
              <value>10</value>
            </entry>
            <entry>
              <key>maximum-capacity</key>
              <value>10</value>
            </entry>
          </params>
        </add-queue>
        <update-queue>
          <queue-name>root.default</queue-name>
          <params>
            <entry>
              <key>capacity</key>
              <value>90</value>
            </entry>
            <entry>
              <key>maximum-capacity</key>
              <value>90</value>
            </entry>
          </params>
        </update-queue>
      </sched-conf>

応答ヘッダー

  HTTP/1.1 200 OK
  Content-Type: application/xml
  Transfer-Encoding: chunked

キューの削除

キュー階層からキューを削除するためのリクエスト。

キャパシティスケジューラーを使用しており、現在のキュー構成が3つのキューroot.defaultroot.a、およびroot.bであると仮定すると、この例では、root.aroot.bの両方を削除します。(より複雑な例には、親キューとその子キューの削除が含まれます。)

注:キューは削除する前にSTOPPED状態にする必要があります。更新されたキュー構成はすべて有効である必要があります。つまり、各レベルでのキューキャパシティは100%である必要があります。

HTTPリクエスト

      Accept: application/xml
      PUT http://rm-http-address:port/ws/v1/cluster/scheduler-conf
      Content-Type: application/xml
      <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
      <sched-conf>
        <remove-queue>root.a</remove-queue>
        <remove-queue>root.b</remove-queue>
      </sched-conf>

応答ヘッダー

  HTTP/1.1 200 OK
  Content-Type: application/xml
  Transfer-Encoding: chunked

グローバルスケジューラー構成の更新

グローバルスケジューラー構成を更新するためのリクエスト。キャパシティスケジューラーを使用していると仮定すると、この例では、キューマッピングを有効にします。グローバル構成の更新では、構成キー全体を指定する必要があります。

HTTPリクエスト

      Accept: application/xml
      PUT http://rm-http-address:port/ws/v1/cluster/scheduler-conf
      Content-Type: application/xml
      <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
      <sched-conf>
        <global-updates>
          <entry>
            <key>yarn.scheduler.capacity.queue-mappings-override.enable</key>
            <value>true</value>
          </entry>
        </global-updates>
      </sched-conf>

応答ヘッダー

  HTTP/1.1 200 OK
  Content-Type: application/xml
  Transfer-Encoding: chunked

キューへのノードラベルの追加

キャパシティスケジューラーを使用しており、現在のキュー構成が2つのキューroot.defaultとroot.aであると仮定すると、この例では、ノードラベルxをキューroot.aに追加します。ノードラベルxを作成し、以下のコマンドでノードを割り当てます。

yarn rmadmin -addToClusterNodeLabels "x(exclusive=true)"

yarn rmadmin -replaceLabelsOnNode "<nodeId>=x"

HTTPリクエスト

      Accept: application/xml
      PUT http://rm-http-address:port/ws/v1/cluster/scheduler-conf
      Content-Type: application/xml
      <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
      <sched-conf>
        <update-queue>
          <queue-name>root.a</queue-name>
          <params>
            <entry>
              <key>accessible-node-labels</key>
              <value>x</value>
            </entry>
            <entry>
              <key>accessible-node-labels.x.capacity</key>
              <value>100</value>
            </entry>
          </params>
        </update-queue>
        <update-queue>
          <queue-name>root</queue-name>
          <params>
            <entry>
              <key>accessible-node-labels.x.capacity</key>
              <value>100</value>
            </entry>
          </params>
        </update-queue>
      </sched-conf>

応答ヘッダー

  HTTP/1.1 200 OK
  Content-Type: application/xml
  Transfer-Encoding: chunked

キューからのノードラベルの削除

キャパシティスケジューラーを使用しており、現在のキュー構成が2つのキューroot.defaultとroot.aであり、ノードラベルxがキューroot.aに割り当てられていると仮定します。この例では、キューroot.aからノードラベルxの割り当てを解除して削除します。

HTTPリクエスト

      Accept: application/xml
      PUT http://rm-http-address:port/ws/v1/cluster/scheduler-conf
      Content-Type: application/xml
      <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
      <sched-conf>
        <update-queue>
          <queue-name>root.a</queue-name>
          <params>
            <entry>
              <key>accessible-node-labels</key>
              <value></value>
            </entry>
          </params>
        </update-queue>
      </sched-conf>

応答ヘッダー

  HTTP/1.1 200 OK
  Content-Type: application/xml
  Transfer-Encoding: chunked

yarn rmadmin -removeFromClusterNodeLabels x

クラスターコンテナシグナルAPI

コンテナシグナルAPIを使用すると、OUTPUT_THREAD_DUMP、GRACEFUL_SHUTDOWN、およびFORCEFUL_SHUTDOWNのいずれかのコマンドを使用して、指定されたコンテナにシグナルを送信できます。

URI

  http://rm-http-address:port/ws/v1/cluster/containers/{containerId}/signal/{command}

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

  POST

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

  None

応答例

JSON応答

HTTPリクエスト

  POST http://rm-http-address:port/ws/v1/cluster/containers/container_1531404209605_0008_01_000001/signal/OUTPUT_THREAD_DUMP
  Accept: application/json
  Content-Type: application/json

応答ヘッダー

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

レスポンスボディはありません。

XML応答

HTTPリクエスト

  POST http://rm-http-address:port/ws/v1/cluster/containers/container_1531404209605_0008_01_000001/signal/OUTPUT_THREAD_DUMP
  Accept: application/xml
  Content-Type: application/xml

応答ヘッダー

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

レスポンスボディはありません。

スケジューラーアクティビティAPI

キャパシティスケジューラーを使用している場合、スケジューラーアクティビティRESTfulAPIを利用でき、スケジューリングサイクルで記録されたスケジューラーアクティビティ情報を取得できます。このAPIは、以下のフィールドを含む階層レイアウトを持つ重要なスケジューリングアクティビティ情報を含むメッセージを返します。

  • Activities - Activitiesは、スケジューラーアクティビティのルートオブジェクトです。
  • Allocations - Allocationsは、パーティションまたは予約に基づいた割り当て試行です。
  • Hierarchical Queues - スケジューラーがコンテナを割り当てようとした階層キュー。それぞれにキュー名、割り当て状態、オプションの診断、およびオプションの子が含まれています。
  • Applications - Applicationsは、リーフキューの子として表示され、それぞれにアプリケーションに関する基本情報が含まれています。
  • Requests - Requestsは、アプリケーションの子として表示され、それぞれにリクエストに関する基本情報が含まれています。
  • Nodes - Nodesは、リクエストの子として表示され、それぞれにノードID、割り当て状態、ノードにコンテナを割り当てまたは予約した後に表示されるオプションの名前、およびこのノードでコンテナを割り当てまたは予約できなかった場合に表示されるオプションの診断が含まれます。割り当て状態と診断によってグループ化された集約ノードの場合、それぞれに割り当て状態、集約ノードID、およびオプションの診断が含まれます。

URI

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

  • GET

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

GET操作には複数のパラメーターを指定できます。

  • nodeId - 指定されたノードID。指定しない場合、スケジューラーはすべてのノードでの次のスケジューリングサイクルのスケジューリングアクティビティ情報を記録します。
    • groupBy - アプリケーションアクティビティの集約タイプ。現在、「diagnostic」のみをサポートしています。これにより、ユーザーは割り当て状態と診断によってグループ化された集約アクティビティをクエリできます。

Activitiesオブジェクトの要素

項目 データ型 説明
nodeId string スケジューラーがコンテナの割り当てを試みるノードID。
timestamp long アクティビティのタイムスタンプ。
dateTime string アクティビティの日時。
diagnostic string 空の結果、利用できない環境、または「表示待ち」、「次の割り当て待ち」、「クラスターでノードマネージャーが実行されていません」、「無効なgroupByを取得しました:xx、有効なgroupByタイプ:DIAGNOSTICS」などの不正な入力パラメーターに関するアクティビティのトップ診断。
allocations 割り当ての配列 割り当てオブジェクトのコレクション。

Allocationオブジェクトの要素

項目 データ型 説明
partition string 割り当てのパーティション。
updatedContainerId string 割り当てで更新された(割り当てまたは予約された)コンテナID。
finalAllocationState string ALLOCATED、ALLOCATED_FROM_RESERVED、RESERVED、およびSKIPPEDを含む、割り当ての最終割り当て状態。
root Queue キューオブジェクト

Queueオブジェクトの要素

項目 データ型 説明
name string キューの名前。
allocationState string ACCEPTED、REJECTED、およびSKIPPEDを含む、キューの最終割り当て状態。
diagnostic string キューの診断。
children キューまたはアプリケーションの配列 キューオブジェクト(親キューの場合)またはアプリオブジェクト(リーフキューの場合)のコレクション

Applicationオブジェクトの要素

項目 データ型 説明
name string アプリケーションの名前。
appPriority string アプリケーションの優先度。
allocationState string ALLOCATED、RESERVED、RE_RESERVED、およびSKIPPEDを含む、アプリケーションの最終割り当て状態。
diagnostic string アプリケーションの診断。
children array of requests リクエストオブジェクトのコレクション

Requestオブジェクトの要素

項目 データ型 説明
name string リクエストの名前。値の形式は「request_<requestPriority>_<allocationRequestId>」であり、異なるリクエストを識別するために使用できます。
requestPriority string リクエストの優先度。
allocationRequestId string リクエストの割り当てリクエストID。
allocationState string ALLOCATED、RESERVED、RE_RESERVED、およびSKIPPEDを含む、アプリケーションの最終割り当て状態。
diagnostic string リクエストの診断。
children array of nodes ノードオブジェクトのコレクション。

Nodeオブジェクトの要素

項目 データ型 説明
name string コンテナ情報。オプションであり、割り当て状態がALLOCATED、RESERVED、またはALLOCATED_FROM_RESERVEDの場合に表示できます。
allocationState string ALLOCATED、RESERVED、RE_RESERVED、およびSKIPPEDを含む、アプリケーションの最終割り当て状態。
diagnostic string 通常モードのノードまたは集約モードのノードに関する診断
nodeId string スケジューリングプロセスが基づくノードID。groupByパラメーターを使用した集約クエリには表示されません。
nodeIds 文字列の配列 集約されたアクティビティのノードIDのコレクション。groupByパラメーターを使用した集約クエリでのみ表示されます。
count int ノードIDの数。groupByパラメーターを使用した集約クエリでのみ表示されます。

応答例

JSON応答

HTTPリクエスト

  Accept: application/json
  GET http://rm-http-address:port/ws/v1/cluster/scheduler/activities

応答ヘッダー

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

応答本文

以下は、グローバルスケジューリングが有効な場合に、単一のリクエストに対してノードレベルで複数のアクティビティが存在する場合の出力例です。シングルノード配置の場合、違いは、nodeIdがアクティビティのフィールドとして表示され、リクエストごとにノードレベルでのアクティビティは1つだけになるはずです。

{
  "activities": {
    "timestamp": 1562296830912,
    "dateTime": "Fri Jul 05 11:20:30 CST 2019",
    "allocations": [
      {
        "partition": "",
        "finalAllocationState": "ALLOCATED",
        "root": {
          "name": "root",
          "allocationState": "ACCEPTED",
          "children": [
            {
              "name": "a",
              "allocationState": "SKIPPED",
              "diagnostic": "Queue does not need more resources"
            },
            {
              "name": "b",
              "allocationState": "ACCEPTED",
              "children": [
                {
                  "name": "application_1562296828063_0001",
                  "appPriority": 0,
                  "allocationState": "ALLOCATED",
                  "children": [
                    {
                      "name": "request_1_-1",
                      "requestPriority": 1,
                      "allocationRequestId": -1,
                      "allocationState": "ALLOCATED",
                      "children": [
                        {
                          "allocationState": "SKIPPED",
                          "diagnostic": "Node's total resource is insufficient for request, insufficient resources=[memory-mb]\nrequired=<memory:3072, vCores:1>, available=<memory:2048, vCores:2>",
                          "nodeId": "127.0.0.2:1234"
                        },
                        {
                          "allocationState": "SKIPPED",
                          "diagnostic": "Node's total resource is insufficient for request, insufficient resources=[memory-mb]\nrequired=<memory:3072, vCores:1>, available=<memory:2048, vCores:2>",
                          "nodeId": "127.0.0.3:1234"
                        },
                        {
                          "allocationState": "SKIPPED",
                          "diagnostic": "Node's total resource is insufficient for request, insufficient resources=[memory-mb]\nrequired=<memory:3072, vCores:1>, available=<memory:2048, vCores:2>",
                          "nodeId": "127.0.0.4:1234"
                        },
                        {
                          "name": "Container: [ContainerId: null, AllocationRequestId: -1, Version: 0, NodeId: 127.0.0.1:1234, NodeHttpAddress: 127.0.0.1:2, Resource: <memory:3072, vCores:1>, Priority: 1, Token: null, ExecutionType: GUARANTEED, ]",
                          "allocationState": "ALLOCATED",
                          "nodeId": "127.0.0.1:1234"
                        }
                      ]
                    }
                  ]
                }
              ]
            }
          ]
        }
      }
    ]
  }
}

スケジューラーアクティビティREST APIをクエリパラメータ(“groupBy=diagnostic”)でクエリすると、4つのノードアクティビティの情報は2つのグループにグループ化されます。1つは同じ診断メッセージ「Node’s total resource is insufficient for request, insufficient resources=[memory-mb]」を持つSKIPPEDグループ、もう1つはALLOCATEDグループです。出力は以下のようになります。

{
  "activities": {
    "timestamp": 1562297536893,
    "dateTime": "Fri Jul 05 11:32:16 CST 2019",
    "allocations": [
      {
        "partition": "",
        "finalAllocationState": "ALLOCATED",
        "root": {
          "name": "root",
          "allocationState": "ACCEPTED",
          "children": [
            {
              "name": "a",
              "allocationState": "SKIPPED",
              "diagnostic": "Queue does not need more resources"
            },
            {
              "name": "b",
              "allocationState": "ACCEPTED",
              "children": [
                {
                  "name": "application_1562297533892_0001",
                  "appPriority": 0,
                  "allocationState": "ALLOCATED",
                  "children": [
                    {
                      "name": "request_1_-1",
                      "requestPriority": 1,
                      "allocationRequestId": -1,
                      "allocationState": "ALLOCATED",
                      "children": [
                        {
                          "allocationState": "ALLOCATED",
                          "count": 1,
                          "nodeIds": [
                            "127.0.0.1:1234"
                          ]
                        },
                        {
                          "allocationState": "SKIPPED",
                          "diagnostic": "Node's total resource is insufficient for request, insufficient resources=[memory-mb]",
                          "count": 3,
                          "nodeIds": [
                            "127.0.0.2:1234",
                            "127.0.0.3:1234",
                            "127.0.0.4:1234"
                          ]
                        }
                      ]
                    }
                  ]
                }
              ]
            }
          ]
        }
      }
    ]
  }
}

XML応答

HTTPリクエスト

  Accept: application/xml
  GET http://rm-http-address:port/ws/v1/cluster/scheduler/activities

応答ヘッダー

  HTTP/1.1 200 OK
  Content-Type: application/xml; charset=utf-8
  Transfer-Encoding: chunked

応答本文

<?xml version="1.0" encoding="utf-8"?>
<activities>
  <timestamp>1562296830912</timestamp>
  <dateTime>Fri Jul 05 11:20:30 CST 2019</dateTime>
  <allocations>
    <partition></partition>
    <finalAllocationState>ALLOCATED</finalAllocationState>
    <root>
      <name>root</name>
      <allocationState>ACCEPTED</allocationState>
      <children>
        <name>a</name>
        <allocationState>SKIPPED</allocationState>
        <diagnostic>Queue does not need more resource</diagnostic>
      </children>
      <children>
        <name>b</name>
        <allocationState>ACCEPTED</allocationState>
        <children>
          <name>application_1562296828063_0001</name>
          <appPriority>0</appPriority>
          <allocationState>ACCEPTED</allocationState>
          <children>
            <name>request_1_-1</name>
            <requestPriority>1</requestPriority>
            <allocationRequestId>-1</allocationRequestId>
            <allocationState>ALLOCATED</allocationState>
            <children>
              <allocationState>SKIPPED</allocationState>
              <diagnostic>Node's total resource is insufficient for request, insufficient resources=[memory-mb]\nrequired=&lt;memory:3072, vCores:1&gt;, available=&lt;memory:2048, vCores:2&gt;</diagnostic>
              <nodeId>127.0.0.2:1234</nodeId>
            </children>
            <children>
              <allocationState>SKIPPED</allocationState>
              <diagnostic>Node's total resource is insufficient for request, insufficient resources=[memory-mb]\nrequired=&lt;memory:3072, vCores:1&gt;, available=&lt;memory:2048, vCores:2&gt;</diagnostic>
              <nodeId>127.0.0.3:1234</nodeId>
            </children>
            <children>
              <allocationState>SKIPPED</allocationState>
              <diagnostic>Node's total resource is insufficient for request, insufficient resources=[memory-mb]\nrequired=&lt;memory:3072, vCores:1&gt;, available=&lt;memory:2048, vCores:2&gt;</diagnostic>
              <nodeId>127.0.0.4:1234</nodeId>
            </children>
            <children>
              <name>Container: [ContainerId: null, AllocationRequestId: -1, Version: 0, NodeId: 127.0.0.1:1234, NodeHttpAddress: 127.0.0.1:2, Resource: &lt;memory:3072, vCores:1&gt;, Priority: 1, Token: null, ExecutionType: GUARANTEED, ]</name>
              <allocationState>ALLOCATED</allocationState>
              <nodeId>127.0.0.1:1234</nodeId>
            </children>
          </children>
        </children>
      </children>
    </root>
  </allocations>
</activities>

アプリケーションアクティビティAPI

アプリケーションアクティビティRESTful APIは、キャパシティスケジューラーを使用している場合に利用可能で、指定されたアプリケーションの有用なスケジューリング情報を取得できます。レスポンスは、以下のフィールドを持つ階層的なレイアウトになっています。

  • AppActivities - AppActivitiesは、基本的な情報内のアプリケーションアクティビティのルート要素です。
  • Allocations - Allocationsは、キャッシュからクエリされたアプリレベルでのアロケーション試行です。
  • Requests - Requestsは、アロケーションの子として表示され、それぞれがリクエスト名、リクエスト優先度、アロケーションリクエストID、アロケーション状態、およびオプションの子を含みます。
  • Nodes - Nodesはリクエストの子として表示され、それぞれがノードID、アロケーション状態、ノード上でコンテナをアロケートまたは予約した後に表示されるオプションの名前、およびノード上でコンテナのアロケートまたは予約に失敗した場合に表示されるオプションの診断メッセージを含みます。アロケーション状態と診断メッセージでグループ化された集計ノードの場合、それぞれがアロケーション状態、集計されたノードID、およびオプションの診断メッセージを含みます。

URI

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

  • GET

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

GET操作には複数のパラメーターを指定できます。

  • maxTime - アプリケーションアクティビティの記録を開始する現在からの最大時間(秒単位)。指定しない場合、デフォルトは3(秒)になります。
    • requestPriorities - リクエストの優先度。アプリケーションアクティビティをフィルタリングするために使用され、カンマ区切りリストとして指定されます。
    • allocationRequestIds - リクエストのアロケーションリクエストID。アプリケーションアクティビティをフィルタリングするために使用され、カンマ区切りリストとして指定されます。
    • groupBy - アプリケーションアクティビティの集計タイプ。現在、「diagnostic」のみをサポートしており、これを使用すると、アロケーション状態と診断メッセージでグループ化された集計アクティビティをクエリできます。
    • limit - アプリケーションアクティビティの制限。サーバー側とクライアント側の両方のコストを削減できます。
    • actions - アプリケーションアクティビティの必要なアクション。「refresh」と「get」を含み、カンマ区切りリストとして指定されます。
    • summarize - 複数のスケジューリングプロセスにおけるアプリケーションアクティビティを要約する必要があるかどうか。ブール値で指定します。これは、マルチノード配置が無効になっている場合に役立ちます。なぜなら、単一のスケジューリングプロセスで考慮できるノードは1つだけだからです。これを有効にすると、すべてのノードの診断メッセージを含む要約が得られます。

AppActivitiesオブジェクトの要素

項目 データ型 説明
applicationId string 指定されたアプリケーションID。
allocations 割り当ての配列 時間順(降順)のアロケーションオブジェクトのコレクション。

Allocationオブジェクトの要素

項目 データ型 説明
nodeId string ノードのID。
timestamp long アロケーションのタイムスタンプ。
dateTime string アロケーションの日付と時刻。
queueName string アプリケーションのキュー名。
appPriority int アプリケーションの優先度
allocationState string ALLOCATED、RESERVED、RE_RESERVED、およびSKIPPEDを含む、アプリケーションの最終割り当て状態。
diagnostic string アプリケーションの診断。
children array of requests リクエストオブジェクトのコレクション

Requestオブジェクトの要素

項目 データ型 説明
requestPriority string リクエストの優先度。
allocationRequestId string リクエストの割り当てリクエストID。
allocationState string ALLOCATED、RESERVED、RE_RESERVED、およびSKIPPEDを含む、アプリケーションの最終割り当て状態。
diagnostic string リクエストの診断。
children array of nodes ノードオブジェクトのコレクション。

Nodeオブジェクトの要素

項目 データ型 説明
name string 更新されたコンテナのID。割り当てられていない場合は「Container-Id-Not-Assigned」と表示されます。
allocationState string ALLOCATED、RESERVED、RE_RESERVED、およびSKIPPEDを含む、アプリケーションの最終割り当て状態。
diagnostic string 通常モードのノードまたは集約モードのノードに関する診断
nodeId string スケジューリングプロセスが基づくノードID。groupByパラメーターを使用した集約クエリには表示されません。
nodeIds 文字列の配列 集計されたアプリケーションアクティビティのノードIDのコレクション。groupByパラメータを使用した集計クエリの場合のみ表示されます。
count int ノードIDの数。groupByパラメーターを使用した集約クエリでのみ表示されます。

応答例

JSON応答

HTTPリクエスト

  Accept: application/json
  GET http://rm-http-address:port/ws/v1/cluster/scheduler/app-activities/{appid}

応答ヘッダー

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

応答本文

{
  "appActivities": {
    "applicationId": "application_1562312049195_0001",
    "allocations": [
      {
        "timestamp": 1562312052039,
        "dateTime": "Fri Jul 05 15:34:12 CST 2019",
        "queueName": "b",
        "appPriority": 0,
        "allocationState": "RESERVED",
        "children": [
          {
            "requestPriority": 1,
            "allocationRequestId": -1,
            "allocationState": "RESERVED",
            "children": [
              {
                "name": "Container-Id-Not-Assigned",
                "allocationState": "SKIPPED",
                "diagnostic": "Node's total resource is insufficient for request, insufficient resources=[memory-mb]\nrequired=<memory:4096, vCores:1>, available=<memory:2048, vCores:2>",
                "nodeId": "127.0.0.3:1234"
              },
              {
                "name": "Container-Id-Not-Assigned",
                "allocationState": "SKIPPED",
                "diagnostic": "Node's total resource is insufficient for request, insufficient resources=[memory-mb]\nrequired=<memory:4096, vCores:1>, available=<memory:2048, vCores:2>",
                "nodeId": "127.0.0.4:1234"
              },
              {
                "name": "Container-Id-Not-Assigned",
                "allocationState": "SKIPPED",
                "diagnostic": "Node's total resource is insufficient for request, insufficient resources=[memory-mb]\nrequired=<memory:4096, vCores:1>, available=<memory:2048, vCores:2>",
                "nodeId": "127.0.0.2:1234"
              },
              {
                "name": "Container-Id-Not-Assigned",
                "allocationState": "RESERVED",
                "diagnostic": "Node does not have sufficient resource for request, insufficient resources=[memory-mb]\nrequired=<memory:4096, vCores:1>, available=<memory:1024, vCores:3>",
                "nodeId": "127.0.0.1:1234"
              }
            ]
          }
        ]
      },
      {
        "timestamp": 1562312052031,
        "dateTime": "Fri Jul 05 15:34:12 CST 2019",
        "queueName": "b",
        "appPriority": 0,
        "allocationState": "ALLOCATED",
        "children": [
          {
            "requestPriority": 0,
            "allocationRequestId": -1,
            "allocationState": "ALLOCATED",
            "children": [
              {
                "name": "Container-Id-Not-Assigned",
                "allocationState": "ALLOCATED",
                "nodeId": "127.0.0.2:1234"
              }
            ]
          }
        ]
      }
    ]
  }
}

スケジューラーアクティビティREST APIをクエリパラメータ(“groupBy=diagnostic”)でクエリすると、4つのノードアクティビティは2つのグループに分離されます。1つは同じ診断メッセージ「Node’s total resource is insufficient for request, insufficient resources=[memory-mb]」を持つSKIPPEDグループ、もう1つはALLOCATEDグループです。出力は以下のようになります。

{
  "appActivities": {
    "applicationId": "application_1562312658870_0001",
    "allocations": [
      {
        "timestamp": 1562312661536,
        "dateTime": "Fri Jul 05 15:44:21 CST 2019",
        "queueName": "b",
        "appPriority": 0,
        "allocationState": "RESERVED",
        "children": [
          {
            "requestPriority": 1,
            "allocationRequestId": -1,
            "allocationState": "RESERVED",
            "children": [
              {
                "allocationState": "SKIPPED",
                "diagnostic": "Node's total resource is insufficient for request, insufficient resources=[memory-mb]",
                "count": 3,
                "nodeIds": [
                  "127.0.0.3:1234",
                  "127.0.0.4:1234",
                  "127.0.0.2:1234"
                ]
              },
              {
                "allocationState": "RESERVED",
                "diagnostic": "Node does not have sufficient resource for request, insufficient resources=[memory-mb]",
                "count": 1,
                "nodeIds": [
                  "127.0.0.1:1234"
                ]
              }
            ]
          }
        ]
      },
      {
        "timestamp": 1562312661522,
        "dateTime": "Fri Jul 05 15:44:21 CST 2019",
        "queueName": "b",
        "appPriority": 0,
        "allocationState": "ALLOCATED",
        "children": [
          {
            "requestPriority": 0,
            "allocationRequestId": -1,
            "allocationState": "ALLOCATED",
            "children": [
              {
                "allocationState": "ALLOCATED",
                "count": 1,
                "nodeIds": [
                  "127.0.0.2:1234"
                ]
              }
            ]
          }
        ]
      }
    ]
  }
}

XML応答

HTTPリクエスト

  Accept: application/xml
  GET http://rm-http-address:port/ws/v1/cluster/scheduler/app-activities/{appid}

応答ヘッダー

  HTTP/1.1 200 OK
  Content-Type: application/xml; charset=utf-8
  Transfer-Encoding: chunked

応答本文

<?xml version="1.0" encoding="utf-8"?>

<appActivities>
  <applicationId>application_1562312049195_0001</applicationId>
  <allocations>
    <timestamp>1562312052039</timestamp>
    <dateTime>Fri Jul 05 15:34:12 CST 2019</dateTime>
    <queueName>b</queueName>
    <appPriority>0</appPriority>
    <allocationState>RESERVED</allocationState>
    <children>
      <requestPriority>1</requestPriority>
      <allocationRequestId>-1</allocationRequestId>
      <allocationState>RESERVED</allocationState>
      <children>
        <name>Container-Id-Not-Assigned</name>
        <allocationState>SKIPPED</allocationState>
        <diagnostic>Node's total resource is insufficient for request, insufficient resources=[memory-mb]\nrequired=&lt;memory:4096, vCores:1&gt;, available=&lt;memory:2048, vCores:2&gt;</diagnostic>
        <nodeId>127.0.0.3:1234</nodeId>
      </children>
      <children>
        <name>Container-Id-Not-Assigned</name>
        <allocationState>SKIPPED</allocationState>
        <diagnostic>Node does not have sufficient resource for request, insufficient resources=[memory-mb]\nrequired=&lt;memory:4096, vCores:1&gt;, available=&lt;memory:2048, vCores:2&gt;</diagnostic>
        <nodeId>127.0.0.4:1234</nodeId>
      </children>
      <children>
        <name>Container-Id-Not-Assigned</name>
        <allocationState>SKIPPED</allocationState>
        <diagnostic>Node does not have sufficient resource for request, insufficient resources=[memory-mb]\nrequired=&lt;memory:4096, vCores:1&gt;, available=&lt;memory:2048, vCores:2&gt;</diagnostic>
        <nodeId>127.0.0.2:1234</nodeId>
      </children>
      <children>
        <name>Container-Id-Not-Assigned</name>
        <allocationState>RESERVED</allocationState>
        <diagnostic>Node does not have sufficient resource for request, insufficient resources=[memory-mb]\nrequired=&lt;memory:4096, vCores:1&gt;, available=&lt;memory:1024, vCores:3&gt;</diagnostic>
        <nodeId>127.0.0.1:1234</nodeId>
      </children>
    </children>
  </allocations>
  <allocations>
    <timestamp>1562312052031</timestamp>
    <dateTime>Fri Jul 05 15:34:12 CST 2019</dateTime>
    <queueName>b</queueName>
    <appPriority>0</appPriority>
    <allocationState>ALLOCATED</allocationState>
    <children>
      <requestPriority>0</requestPriority>
      <allocationRequestId>-1</allocationRequestId>
      <allocationState>ALLOCATED</allocationState>
      <children>
        <name>Container-Id-Not-Assigned</name>
        <allocationState>ALLOCATED</allocationState>
        <nodeId>127.0.0.2:1234</nodeId>
      </children>
    </children>
  </allocations>
</appActivitiesInfo>