ResourceManager REST APIを使用すると、ユーザーはクラスターに関する情報を取得できます。クラスターの状態、クラスターのメトリクス、スケジューラ情報、クラスター内のノードに関する情報、およびクラスター上のアプリケーションに関する情報などです。
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に設定します。
クラスター情報リソースは、クラスターに関する全体的な情報を提供します。
次の両方のURIは、クラスター情報を提供します。
None
| 項目 | データ型 | 説明 |
|---|---|---|
| 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>
クラスターメトリクスリソースは、クラスターに関するいくつかの全体的なメトリクスを提供します。詳細なメトリクスは、jmxインターフェースから取得する必要があります。
None
| 項目 | データ型 | 説明 |
|---|---|---|
| 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>
スケジューラーリソースには、クラスターで現在構成されているスケジューラーに関する情報が含まれています。現在、Fifo、Capacity、およびFair Schedulerがサポートされています。構成されているスケジューラーに応じて異なる情報が取得されるため、必ずタイプ情報を確認してください。
None
キャパシティスケジューラーは、階層型キューをサポートしています。この1つのリクエストは、すべてのキューとそれらが持つサブキューに関する情報を出力します。ジョブを実際に送信できるキューは、リーフキューと呼ばれます。これらのキューには、追加のデータが関連付けられています。
| 項目 | データ型 | 説明 |
|---|---|---|
| type | string | スケジューラータイプ - capacityScheduler |
| capacity | float | 親キューに対する割合で設定されたキュー容量 |
| usedCapacity | float | 使用済みのキュー容量(割合) |
| maxCapacity | float | 親キューに対する割合で設定された最大キュー容量 |
| queueName | string | キューの名前 |
| queues | キューの配列(JSON)/ゼロ個以上のキューオブジェクト(XML) | キューリソースのコレクション |
| health | 単一のヘルスオブジェクト | キャパシティスケジューラのヘルス指標。この指標は 2.8.0 から存在していましたが、出力が適切にフォーマットされていませんでした。そのため、ユーザーはこのフィールドをクリーンに利用することができませんでした。これは 3.2.0 以降で最適化されています。 |
| 項目 | データ型 | 説明 |
|---|---|---|
| capacity | float | 親キューに対する割合で設定されたキュー容量 |
| usedCapacity | float | 使用済みのキュー容量(割合) |
| maxCapacity | float | 親キューに対する割合で設定された最大キュー容量 |
| absoluteCapacity | float | このキューがクラスター全体で使用できる絶対容量の割合 |
| absoluteMaxCapacity | float | このキューがクラスター全体で使用できる絶対最大容量の割合 |
| absoluteUsedCapacity | float | このキューがクラスター全体で使用している絶対使用容量の割合 |
| numApplications | int | 現在キューにあるアプリケーションの数 |
| usedResources | string | キューが現在使用しているリソースを記述する文字列 |
| queueName | string | キューの名前 |
| state | QueueState の文字列 | キューの状態 |
| queues | キューの配列(JSON)/ゼロ個以上のキューオブジェクト(XML) | サブキュー情報のコレクション。キューにサブキューがない場合は省略されます。 |
| resourcesUsed | 単一のリソースオブジェクト | このキューで使用されているリソースの合計量 |
| 項目 | データ型 | 説明 |
|---|---|---|
| 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 | このキューでのこのユーザーの保留中のアプリケーションの数 |
| 項目 | データ型 | 説明 |
|---|---|---|
| memory | int | 使用されているメモリ量 (MB 単位) |
| vCores | int | 仮想コアの数 |
| 項目 | データ型 | 説明 |
|---|---|---|
| lastrun | long | アプリケーションが開始された時刻 (エポックからのミリ秒単位) |
| operationsInfo | 操作の配列(JSON)/操作オブジェクト(XML) | 操作オブジェクトのコレクション |
| lastRunDetails | lastRunDetails の配列(JSON)/lastRunDetail オブジェクト(XML) | lastRunDetail オブジェクトのコレクション |
| 項目 | データ型 | 説明 |
|---|---|---|
| operation | string | 操作のタイプ |
| nodeId | string | 操作が関連付けられているノードの ID |
| containerId | string | 操作が関連付けられているコンテナの ID |
| queue | string | 操作が関連付けられているキューの名前 |
| 項目 | データ型 | 説明 |
|---|---|---|
| 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><memory:0, vCores:0></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><memory:0, vCores:0></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><memory:0, vCores:0></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><memory:0, vCores:0></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><memory:0, vCores:0></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><memory:0, vCores:0></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><memory:0, vCores:0></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><memory:0, vCores:0></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><memory:0, vCores:0></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>
| 項目 | データ型 | 説明 |
|---|---|---|
| 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>
| 項目 | データ型 | 説明 |
|---|---|---|
| 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 | 単一のリソースオブジェクト | キューの安定した公平な共有 |
| 項目 | データ型 | 説明 |
|---|---|---|
| type | string | キューのタイプ - fairSchedulerLeafQueueInfo |
| numActiveApps | int | このキューにあるアクティブなアプリケーションの数 |
| numPendingApps | int | このキューにある保留中のアプリケーションの数 |
| 項目 | データ型 | 説明 |
|---|---|---|
| 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 を使用すると、それぞれがアプリケーションを表すリソースのコレクションを取得できます。このリソースに対して GET 操作を実行すると、アプリケーションオブジェクトのコレクションが得られます。
GET 操作には、複数のパラメーターを指定できます。開始時間と終了時間には、範囲を指定できるように開始および終了パラメーターがあります。たとえば、startedTimeBegin=1324256400&startedTimeEnd=1324303200 で、2011 年 12 月 19 日の午前 1 時から午後 2 時の間に開始されたすべてのアプリケーションを要求できます。開始パラメーターが指定されていない場合、デフォルトは 0 で、終了パラメーターが指定されていない場合、デフォルトは無限大です。この API のすべてのクエリパラメーターは、すべてのアプリケーションをフィルタリングします。ただし、queue クエリパラメーターは、指定されたキューに現在ある未完了のアプリケーションのみを暗黙的にフィルタリングします。
アプリケーションのリストを要求すると、情報はアプリオブジェクトのコレクションとして返されます。アプリオブジェクトの構文については、アプリケーション API も参照してください。
| 項目 | データ型 | 説明 |
|---|---|---|
| app | アプリオブジェクトの配列(JSON)/ゼロ以上のアプリケーションオブジェクト(XML) | アプリケーションオブジェクトのコレクション |
特定の情報を必要としないリクエスタがオーバーヘッドを削減するのに役立ちます。
現在サポートされている項目
| 項目 | データ型 | 説明 |
|---|---|---|
| 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 を使用すると、トリプルのコレクションを取得できます。各トリプルには、ResourceManager コンテキストでのアプリケーションタイプ、アプリケーション状態、およびこのタイプとこの状態のアプリケーションの数が含まれています。パフォーマンス上の懸念があるため、現在、クエリごとに最大 1 つの applicationType のみをサポートしていることに注意してください。将来的には、クエリごとに複数の applicationType と、より多くの統計をサポートする可能性があります。このリソースに対して GET 操作を実行すると、statItem オブジェクトのコレクションが得られます。
2 つのパラメーターを指定できます。パラメーターは大文字と小文字が区別されません。
統計項目のリストを要求すると、情報は 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>
アプリケーションリソースには、クラスターに送信された特定のアプリケーションに関する情報が含まれています。
appid値で識別されるアプリケーションからアプリオブジェクトを取得するには、次のURIを使用します。
None
セキュリティ設定によっては、ユーザーがすべてのフィールドを表示できるとは限りません。
| 項目 | データ型 | 説明 |
|---|---|---|
| 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を使用すると、アプリケーション試行を表すリソースのコレクションを取得できます。このリソースに対してGET操作を実行すると、アプリ試行オブジェクトのコレクションが取得されます。
None
アプリ試行のリストをリクエストすると、情報はアプリ試行オブジェクトの配列として返されます。
appAttempts
| 項目 | データ型 | 説明 |
|---|---|---|
| appAttempt | アプリ試行オブジェクトの配列(JSON)/ゼロ以上のアプリ試行オブジェクト(XML) | アプリ試行オブジェクトのコレクション |
| 項目 | データ型 | 説明 |
|---|---|---|
| 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のコンテナを使用すると、アプリケーション試行に属するコンテナのリストを取得できます。
None
コンテナのリストをリクエストすると、情報はコンテナオブジェクトの配列として返されます。
containers
| 項目 | データ型 | 説明 |
|---|---|---|
| containers | アプリコンテナオブジェクトの配列(JSON)/ゼロ以上のコンテナオブジェクト(XML) | アプリコンテナオブジェクトのコレクション |
| 項目 | データ型 | 説明 | |
|---|---|---|---|
| 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) | コンテナに割り当てられたリソース | |
| 項目 | データ型 | 説明 |
|---|---|---|
| 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の特定のコンテナを使用すると、アプリケーション試行に属し、コンテナIDで選択された特定のコンテナに関する情報を取得できます。
None
| 項目 | データ型 | 説明 | |
|---|---|---|---|
| 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) | コンテナに割り当てられたリソース | |
| 項目 | データ型 | 説明 |
|---|---|---|
| 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を使用すると、各ノードを表すリソースのコレクションを取得できます。このリソースに対してGET操作を実行すると、ノードオブジェクトのコレクションが取得されます。
ノードのリストをリクエストすると、情報はノードオブジェクトのコレクションとして返されます。ノードオブジェクトの構文については、ノード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>
ノードリソースには、クラスター内のノードに関する情報が含まれています。
nodeid値で識別されるノードからノードオブジェクトを取得するには、次のURIを使用します。
None
| 項目 | データ型 | 説明 |
|---|---|---|
| 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>
ノードの合計リソースを更新します。
nodeid値で識別されるノードオブジェクトのリソースを更新するには、次のURIを使用します。
http://rm-http-address:port/ws/v1/cluster/nodes/{nodeid}/resource
POST
None
| 項目 | データ型 | 説明 |
|---|---|---|
| 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の一部としてアプリケーションを送信するために使用できるアプリケーションIDを取得できます。レスポンスには、クラスターで利用可能な最大リソース機能も含まれています。
この機能は現在アルファ段階であり、将来変更される可能性があります。
None
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を使用してアプリケーションIDを取得する必要があります。アプリケーションIDはリクエストボディの一部である必要があります。レスポンスには、アプリケーションの状態と進捗状況を追跡するために使用できるアプリケーションページへのURLが含まれています。
POSTリクエストは、ResourceManagerにアプリケーションを送信するために使用できます。前述のように、最初にアプリケーションIDを取得する必要があります。送信が成功すると、202のレスポンスコードと、アプリに関する情報を取得する場所を指定するLocationヘッダーが返されます。アプリを送信するには、HTTPインターフェースに認証フィルターを設定する必要があることに注意してください。この機能は、HttpServletRequestにユーザー名が設定されている必要があります。フィルターが設定されていない場合、レスポンスは「UNAUTHORIZED」になります。
この機能は現在アルファ段階であり、将来変更される可能性があることに注意してください。
| 項目 | データ型 | 説明 |
|---|---|---|
| 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}}<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</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><LOG_DIR>/AppMaster.stdout 2><LOG_DIR>/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を使用すると、送信されたアプリの状態を照会したり、状態を「KILLED」に設定したPUTリクエストを使用して実行中のアプリの状態を変更することにより、実行中のアプリを強制終了したりできます。PUT操作を実行するには、RM Webサービスに認証を設定する必要があります。さらに、アプリを強制終了する権限が必要です。現在、状態を「KILLED」にのみ変更できます。状態を他の状態に変更しようとすると、400エラーレスポンスが発生します。承認されていないエラーと不正なリクエストエラーの例を以下に示します。PUTが正常に実行されると、最初のレスポンスは202になる場合があります。アプリが強制終了されたことを確認するには、200を取得するまでPUTリクエストを繰り返すか、GETメソッドを使用して状態を照会するか、アプリ情報を照会して状態を確認します。以下の例では、PUTリクエストを繰り返し、200レスポンスを取得します。
アプリを強制終了するには、HTTPインターフェースに認証フィルターを設定する必要があることに注意してください。この機能は、HttpServletRequestにユーザー名が設定されている必要があります。フィルターが設定されていない場合、レスポンスは「UNAUTHORIZED」になります。
この機能は現在アルファ段階であり、将来変更される可能性があります。
None
アプリの状態をリクエストすると、返される情報には次のフィールドがあります。
| 項目 | データ型 | 説明 |
|---|---|---|
| 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を使用すると、送信されたアプリのキューを照会したり、ターゲットキューを指定したPUTリクエストを使用して、実行中のアプリを別のキューに移動したりできます。PUT操作を実行するには、RM Webサービスに認証を設定する必要があります。さらに、アプリを移動する権限が必要です。現在、CapacityスケジューラまたはFairスケジューラを使用している場合にのみ、アプリを移動できます。
アプリを移動するには、HTTPインターフェースに認証フィルターを設定する必要があることに注意してください。この機能は、HttpServletRequestにユーザー名が設定されている必要があります。フィルターが設定されていない場合、レスポンスは「UNAUTHORIZED」になります。
この機能は現在アルファ段階であり、将来変更される可能性があります。
None
アプリの状態をリクエストすると、返される情報には次のフィールドがあります。
| 項目 | データ型 | 説明 |
|---|---|---|
| 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を使用すると、送信されたアプリの優先度を照会したり、ターゲット優先度を指定したPUTリクエストを使用して、実行中または受け入れ済みのアプリの優先度を更新したりできます。PUT操作を実行するには、RM Webサービスに認証を設定する必要があります。さらに、アプリの優先度を更新する権限が必要です。現在、Capacityスケジューラを使用している場合にのみ、アプリの優先度を更新できます。
アプリの優先度を更新するには、HTTPインターフェースに認証フィルターを設定する必要があることに注意してください。この機能は、HttpServletRequestにユーザー名が設定されている必要があります。フィルターが設定されていない場合、レスポンスは「UNAUTHORIZED」になります。
この機能は現在アルファ段階であり、将来変更される可能性があります。
None
アプリの状態をリクエストすると、返される情報には次のフィールドがあります。
| 項目 | データ型 | 説明 |
|---|---|---|
| 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は、YARN ResourceManager委任トークンを作成、更新、およびキャンセルするために使用できます。すべての委任トークンリクエストは、Kerberos認証接続(SPNEGOを使用)で実行する必要があります。非Kerberos接続で操作を実行すると、FORBIDDENレスポンスが発生します。トークンを更新する場合、トークンの作成時に指定されたリニューアのみがトークンを更新できます。他のユーザー(所有者を含む)は、トークンを更新することが禁止されています。トークンをキャンセルまたは更新する場合、キャンセルまたは更新するトークンはヘッダーを設定することで指定されることに注意してください。
この機能は現在アルファ段階であり、将来変更される可能性があります。
委任トークンを作成およびキャンセルするには、次のURIを使用します。
委任トークンを更新するには、次のURIを使用します。
None
委任トークン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は、予約を一覧表示するために使用できます。予約を一覧表示する場合、ユーザーはキュー、予約ID、開始時間、または終了時間に関する制約を指定する必要があります。ユーザーは、一覧表示される予約の完全なリソース割り当てを含めるかどうかも指定する必要があります。結果のページは、受付時間、ユーザー、リソース割り当て、予約ID、および予約定義など、予約に関する情報を含むレスポンスを返します。
| 項目 | データ型 | 説明 |
|---|---|---|
| reservations | ReservationInfoの配列(JSON) / ゼロ以上のReservationInfoオブジェクト(XML) | 指定されたクエリでリストされる予約 |
| 項目 | データ型 | 説明 |
|---|---|---|
| acceptance-time | long | 予約が受け付けられた時間 |
| resource-allocations | ResourceAllocationInfoの配列(JSON) / ゼロ以上のResourceAllocationInfoオブジェクト(XML) | 予約のリソース割り当て情報 |
| reservation-id | 単一のReservationId文字列 | 一意の予約識別子 |
| reservation-definition | 単一のReservationDefinitionオブジェクト | ユーザーのリソースに対する時間経過に伴うニーズを表す制約のセット |
| user | string | 予約を行ったユーザー |
| 項目 | データ型 | 説明 |
|---|---|---|
| resource | 単一のResourceオブジェクト | 予約割り当てに割り当てられたリソース |
| startTime | long | リソースが割り当てられる開始時間 |
| endTime | long | リソースが割り当てられる終了時間 |
| 項目 | データ型 | 説明 |
|---|---|---|
| memory | int | 予約割り当てに割り当てられたメモリ |
| vCores | int | 予約割り当てに割り当てられたコア数 |
| 項目 | データ型 | 説明 |
|---|---|---|
| arrival | long | この予約を割り当てることができる最も早い時間のUTCタイムスタンプ表現。 |
| deadline | long | この予約を割り当てることができる最も遅い時間のUTCタイムスタンプ表現。 |
| reservation-name | string | 予約のニーモニック名(有効な識別子ではない)。 |
| reservation-requests | object | この予約の「ステージ」またはフェーズのリスト。それぞれがリソース要件と期間を記述しています。 |
| priority | int | 予約の優先度を表す整数。優先度の数値が小さいほど、優先度の高い予約を示します。繰り返し予約は、常に非繰り返し予約よりも優先度が高くなります。非繰り返し予約の優先度は、非繰り返し予約とのみ比較されます。同様に、繰り返し予約についても同様です。 |
| recurrence-expression | string | 定期的なジョブの時間間隔を表す繰り返し式。現在、long値のみがサポートされています。後で、任意の繰り返しパターン(例:毎週火曜日と木曜日)を示す正規表現のサポートが追加されます。繰り返しは、定期的なジョブの場合、ミリ秒で表されます。繰り返しのないジョブの場合、繰り返しは0です。定期的なジョブは、明示的にキャンセルされるまで有効であり、非定期的なジョブよりも優先度が高くなります(初期配置と再計画中)。定期的なジョブの割り当ては実行間で一貫しています(割り当ての柔軟性は初期配置時のみに活用され、その後は割り当ては一貫したままです)。また、繰り返し式は予約期間(締め切り - 到着)よりも大きくする必要があります。また、構成された最大期間は繰り返し式で割り切れる必要があることに注意してください。 |
| 項目 | データ型 | 説明 |
|---|---|---|
| reservation-request-interpreter | int | ReservationRequestのセットを解釈する方法の数値選択:0はANY、1はALL、2はORDER、3はORDER_NO_GAP |
| reservation-request | object | この予約のフェーズ/ステージのリソースと時間の機能の説明 |
| 項目 | データ型 | 説明 |
|---|---|---|
| duration | long | ミリ秒単位のReservationRequestの期間(予約のこの部分を満たす割り当てが存在する必要がある連続ミリ秒数)。 |
| num-containers | int | 予約のこのフェーズで必要なコンテナの数(このフェーズのジョブの最大並列処理をキャプチャ)。 |
| min-concurrency | int | この割り当てを満たすために同時に割り当てなければならないコンテナの最小数(最小並列処理をキャプチャ、ギャングセマンティクスを表現するのに便利)。 |
| capability | object | 各コンテナのサイズ(メモリ、vCore)を指定できます。 |
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の送信の一部として予約を送信するために使用できる予約IDを取得します。
この機能は現在アルファ段階であり、将来変更される可能性があります。
None
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は、予約を送信するために使用できます。予約を送信する場合、ユーザーは必要なリソースと時間に関する制約を指定します。予約が可能な場合、結果のレスポンスは成功です。予約IDを使用して予約を複数回送信すると、予約定義が同じであればリクエストは成功しますが、作成される予約は1つだけです。予約定義が異なる場合、サーバーはエラーレスポンスで応答します。予約が作成されると、ユーザーは予約の送信に使用した予約IDを使用して、クラスタアプリケーションAPIの送信の一部としてリソースにアクセスできます。
POSTリクエストを使用して、ResourceManagerに予約を送信できます。上記のように、成功時に予約IDが返されます(回答の本文に)。送信が成功すると、200レスポンスが返されます。予約を送信するには、HTTPインターフェイスに認証フィルターを設定する必要があることに注意してください。この機能では、HttpServletRequestにユーザー名が設定されている必要があります。フィルターが設定されていない場合、レスポンスは「UNAUTHORIZED」レスポンスになります。
この機能は現在アルファ段階であり、将来変更される可能性があることに注意してください。
| 項目 | データ型 | 説明 |
|---|---|---|
| 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の更新を使用して、既存の予約を更新できます。予約の更新は、上記で説明した送信と同様に機能しますが、ユーザーは更新する既存の予約の予約IDを送信します。セマンティクスは試行と交換です。操作が成功すると、要求された更新パラメータに基づいて既存の予約が変更され、実行が失敗すると、既存の予約は変更されません。
POSTリクエストを使用して、ResourceManagerへの予約を更新できます。送信が成功すると、200レスポンスが返され、既存の予約のインプレース更新(IDは変更されません)が示されます。予約を更新するには、HTTPインターフェイスに認証フィルターを設定する必要があることに注意してください。この機能では、HttpServletRequestにユーザー名が設定されている必要があります。フィルターが設定されていない場合、レスポンスは「UNAUTHORIZED」レスポンスになります。
この機能は現在アルファ段階であり、将来変更される可能性があることに注意してください。
| 項目 | データ型 | 説明 |
|---|---|---|
| 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の削除を使用して、既存の予約を削除できます。削除は更新と同様に機能します。リクエストには予約IDが含まれており、成功すると予約がキャンセルされ、それ以外の場合は予約がシステムに残ります。
ResourceManagerへの予約削除には、POSTリクエストを使用できます。送信が成功すると、削除が成功したことを示す200レスポンスが返されます。予約を削除するには、HTTPインターフェースに認証フィルターを設定する必要があることに注意してください。この機能では、HttpServletRequestにユーザー名が設定されている必要があります。フィルターが設定されていない場合、「UNAUTHORIZED」レスポンスが返されます。
この機能は現在アルファ段階であり、将来変更される可能性があることに注意してください。
| 項目 | データ型 | 説明 |
|---|---|---|
| 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は、アプリケーションの構成済みタイムアウトをすべて取得するために使用できます。このリソースに対してGET操作を実行すると、タイムアウトオブジェクトのコレクションが返されます。各タイムアウトオブジェクトは、タイムアウトタイプ、有効期限、および残り時間(秒)で構成されます。
アプリケーションタイムアウトのリストをリクエストすると、情報はタイムアウトオブジェクトのコレクションとして返されます。タイムアウトオブジェクトの構文については、クラスターアプリケーションタイムアウト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>
クラスターアプリケーションタイムアウトリソースには、タイムアウトに関する情報が含まれています。
| 項目 | データ型 | 説明 |
|---|---|---|
| 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>
指定されたタイムアウトタイプのアプリケーションのタイムアウトを更新します。
| 項目 | データ型 | 説明 |
|---|---|---|
| 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は、スケジューラー/キュー構成とキュー階層を変更する方法を提供します。
この機能は現在アルファ段階であり、変更される可能性があることに注意してください。
| 項目 | データ型 | 説明 |
|---|---|---|
| update-queue | object | 構成を更新するキュー |
| add-queue | object | このキューの構成とともにスケジューラーに追加するキュー |
| remove-queue | string | 削除するキューのフルパス名 |
| global-updates | map | スケジューラーのグローバル構成を更新するキーと値のペアのマップ |
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リクエストは、スケジューラーの構成を変更するために使用されます。変更が成功すると、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.default、root.a、およびroot.bであると仮定すると、この例では、root.aとroot.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を使用すると、OUTPUT_THREAD_DUMP、GRACEFUL_SHUTDOWN、およびFORCEFUL_SHUTDOWNのいずれかのコマンドを使用して、指定されたコンテナにシグナルを送信できます。
http://rm-http-address:port/ws/v1/cluster/containers/{containerId}/signal/{command}
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)
レスポンスボディはありません。
キャパシティスケジューラーを使用している場合、スケジューラーアクティビティRESTfulAPIを利用でき、スケジューリングサイクルで記録されたスケジューラーアクティビティ情報を取得できます。このAPIは、以下のフィールドを含む階層レイアウトを持つ重要なスケジューリングアクティビティ情報を含むメッセージを返します。
GET操作には複数のパラメーターを指定できます。
| 項目 | データ型 | 説明 |
|---|---|---|
| nodeId | string | スケジューラーがコンテナの割り当てを試みるノードID。 |
| timestamp | long | アクティビティのタイムスタンプ。 |
| dateTime | string | アクティビティの日時。 |
| diagnostic | string | 空の結果、利用できない環境、または「表示待ち」、「次の割り当て待ち」、「クラスターでノードマネージャーが実行されていません」、「無効なgroupByを取得しました:xx、有効なgroupByタイプ:DIAGNOSTICS」などの不正な入力パラメーターに関するアクティビティのトップ診断。 |
| allocations | 割り当ての配列 | 割り当てオブジェクトのコレクション。 |
| 項目 | データ型 | 説明 |
|---|---|---|
| partition | string | 割り当てのパーティション。 |
| updatedContainerId | string | 割り当てで更新された(割り当てまたは予約された)コンテナID。 |
| finalAllocationState | string | ALLOCATED、ALLOCATED_FROM_RESERVED、RESERVED、およびSKIPPEDを含む、割り当ての最終割り当て状態。 |
| root | Queue | キューオブジェクト |
| 項目 | データ型 | 説明 |
|---|---|---|
| name | string | キューの名前。 |
| allocationState | string | ACCEPTED、REJECTED、およびSKIPPEDを含む、キューの最終割り当て状態。 |
| diagnostic | string | キューの診断。 |
| children | キューまたはアプリケーションの配列 | キューオブジェクト(親キューの場合)またはアプリオブジェクト(リーフキューの場合)のコレクション |
| 項目 | データ型 | 説明 |
|---|---|---|
| name | string | アプリケーションの名前。 |
| appPriority | string | アプリケーションの優先度。 |
| allocationState | string | ALLOCATED、RESERVED、RE_RESERVED、およびSKIPPEDを含む、アプリケーションの最終割り当て状態。 |
| diagnostic | string | アプリケーションの診断。 |
| children | array of requests | リクエストオブジェクトのコレクション |
| 項目 | データ型 | 説明 |
|---|---|---|
| name | string | リクエストの名前。値の形式は「request_<requestPriority>_<allocationRequestId>」であり、異なるリクエストを識別するために使用できます。 |
| requestPriority | string | リクエストの優先度。 |
| allocationRequestId | string | リクエストの割り当てリクエストID。 |
| allocationState | string | ALLOCATED、RESERVED、RE_RESERVED、およびSKIPPEDを含む、アプリケーションの最終割り当て状態。 |
| diagnostic | string | リクエストの診断。 |
| children | array of nodes | ノードオブジェクトのコレクション。 |
| 項目 | データ型 | 説明 |
|---|---|---|
| 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=<memory:3072, vCores:1>, available=<memory:2048, vCores:2></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=<memory:3072, vCores:1>, available=<memory:2048, vCores:2></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=<memory:3072, vCores:1>, available=<memory:2048, vCores:2></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: <memory:3072, vCores:1>, Priority: 1, Token: null, ExecutionType: GUARANTEED, ]</name>
<allocationState>ALLOCATED</allocationState>
<nodeId>127.0.0.1:1234</nodeId>
</children>
</children>
</children>
</children>
</root>
</allocations>
</activities>
アプリケーションアクティビティRESTful APIは、キャパシティスケジューラーを使用している場合に利用可能で、指定されたアプリケーションの有用なスケジューリング情報を取得できます。レスポンスは、以下のフィールドを持つ階層的なレイアウトになっています。
GET操作には複数のパラメーターを指定できます。
| 項目 | データ型 | 説明 |
|---|---|---|
| applicationId | string | 指定されたアプリケーションID。 |
| allocations | 割り当ての配列 | 時間順(降順)のアロケーションオブジェクトのコレクション。 |
| 項目 | データ型 | 説明 |
|---|---|---|
| nodeId | string | ノードのID。 |
| timestamp | long | アロケーションのタイムスタンプ。 |
| dateTime | string | アロケーションの日付と時刻。 |
| queueName | string | アプリケーションのキュー名。 |
| appPriority | int | アプリケーションの優先度 |
| allocationState | string | ALLOCATED、RESERVED、RE_RESERVED、およびSKIPPEDを含む、アプリケーションの最終割り当て状態。 |
| diagnostic | string | アプリケーションの診断。 |
| children | array of requests | リクエストオブジェクトのコレクション |
| 項目 | データ型 | 説明 |
|---|---|---|
| requestPriority | string | リクエストの優先度。 |
| allocationRequestId | string | リクエストの割り当てリクエストID。 |
| allocationState | string | ALLOCATED、RESERVED、RE_RESERVED、およびSKIPPEDを含む、アプリケーションの最終割り当て状態。 |
| diagnostic | string | リクエストの診断。 |
| children | array of nodes | ノードオブジェクトのコレクション。 |
| 項目 | データ型 | 説明 |
|---|---|---|
| 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=<memory:4096, vCores:1>, available=<memory:2048, vCores:2></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=<memory:4096, vCores:1>, available=<memory:2048, vCores:2></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=<memory:4096, vCores:1>, available=<memory:2048, vCores:2></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=<memory:4096, vCores:1>, available=<memory:1024, vCores:3></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>