NodeManager REST APIを使用すると、ノードのステータスと、そのノードで実行されているアプリケーションおよびコンテナに関する情報を取得できます。
NMに対してのみ(RMに対して有効化せずに)クロスオリジンサポート(CORS)を有効にするには、次の設定パラメータを設定してください。
core-site.xmlで、org.apache.hadoop.security.HttpCrossOriginFilterInitializerをhadoop.http.filter.initializersに追加します。yarn-site.xmlで、yarn.nodemanager.webapp.cross-origin.enabledをtrueに設定します。
ノード情報リソースは、その特定のノードに関する全体的な情報を提供します。
次の両方のURIは、クラスタ情報を提供します。
None
| プロパティ | データ型 | 説明 |
|---|---|---|
| id | long | NodeManager ID |
| nodeHostName | string | NodeManagerのホスト名 |
| totalPmemAllocatedContainersMB | long | コンテナで使用するために割り当てられた物理メモリの量(MB) |
| totalVmemAllocatedContainersMB | long | コンテナで使用するために割り当てられた仮想メモリの量(MB) |
| totalVCoresAllocatedContainers | long | コンテナで使用するために割り当てられた仮想コア数 |
| vmemCheckEnabled | boolean | プリエンプションに対して仮想メモリチェックが有効になっているかどうか |
| pmemCheckEnabled | boolean | プリエンプションに対して物理メモリチェックが有効になっているかどうか |
| lastNodeUpdateTime | long | ヘルスレポートが受信された最後のタイムスタンプ(エポックからのミリ秒) |
| nmStartupTime | long | ノードが起動されたタイムスタンプ(エポックからのミリ秒) |
| healthReport | string | ノードの診断ヘルスレポート |
| nodeHealthy | boolean | ノードが正常かどうかを示すtrue/falseインジケータ |
| nodeManagerVersion | string | NodeManagerのバージョン |
| nodeManagerBuildVersion | string | ビルドバージョン、ユーザー、チェックサムを含むNodeManagerのビルド文字列 |
| nodeManagerVersionBuiltOn | string | NodeManagerがビルドされたタイムスタンプ(エポックからのミリ秒) |
| hadoopVersion | string | Hadoop commonのバージョン |
| hadoopBuildVersion | string | ビルドバージョン、ユーザー、チェックサムを含むHadoop commonのビルド文字列 |
| hadoopVersionBuiltOn | string | Hadoop commonがビルドされたタイムスタンプ(エポックからのミリ秒) |
JSONレスポンス
HTTPリクエスト
GET http://nm-http-address:port/ws/v1/node/info
レスポンスヘッダー
HTTP/1.1 200 OK Content-Type: application/json Transfer-Encoding: chunked Server: Jetty(6.1.26)
レスポンスボディ
{
"nodeInfo": {
"healthReport": "",
"totalVmemAllocatedContainersMB": 17203,
"totalPmemAllocatedContainersMB": 8192,
"totalVCoresAllocatedContainers": 8,
"vmemCheckEnabled": false,
"pmemCheckEnabled": true,
"lastNodeUpdateTime": 1485814574224,
"nodeHealthy": true,
"nodeManagerVersion": "3.0.0",
"nodeManagerBuildVersion": "3.0.0",
"nodeManagerVersionBuiltOn": "2017-01-30T17:42Z",
"hadoopVersion": "3.0.0",
"hadoopBuildVersion": "3.0.0",
"hadoopVersionBuiltOn": "2017-01-30T17:39Z",
"id": "host.domain.com:46077",
"nodeHostName": "host.domain.com",
"nmStartupTime": 1485800887841
}
}
XMLレスポンス
HTTPリクエスト
Accept: application/xml GET http://nm-http-address:port/ws/v1/node/info
レスポンスヘッダー
HTTP/1.1 200 OK Content-Type: application/xml Content-Length: 983 Server: Jetty(6.1.26)
レスポンスボディ
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<nodeInfo>
<healthReport></healthReport>
<totalVmemAllocatedContainersMB>17203</totalVmemAllocatedContainersMB>
<totalPmemAllocatedContainersMB>8192</totalPmemAllocatedContainersMB>
<totalVCoresAllocatedContainers>8</totalVCoresAllocatedContainers>
<vmemCheckEnabled>false</vmemCheckEnabled>
<pmemCheckEnabled>true</pmemCheckEnabled>
<lastNodeUpdateTime>1485815774203</lastNodeUpdateTime>
<nodeHealthy>true</nodeHealthy>
<nodeManagerVersion>3.0.0</nodeManagerVersion>
<nodeManagerBuildVersion>3.0.0</nodeManagerBuildVersion>
<nodeManagerVersionBuiltOn>2017-01-30T17:42Z</nodeManagerVersionBuiltOn>
<hadoopVersion>3.0.0</hadoopVersion>
<hadoopBuildVersion>3.0.0</hadoopBuildVersion>
<hadoopVersionBuiltOn>2017-01-30T17:39Z</hadoopVersionBuiltOn>
<id>host.domain.com:46077</id>
<nodeHostName>host.domain.com</nodeHostName>
<nmStartupTime>1485800887841</nmStartupTime>
</nodeInfo>
アプリケーションAPIを使用すると、それぞれがアプリケーションを表すリソースのコレクションを取得できます。このリソースに対してGET操作を実行すると、アプリケーションオブジェクトのコレクションを取得します。アプリケーションAPIも参照して、アプリケーションオブジェクトの構文を確認してください。
複数のパラメータを指定できます。
アプリケーションのリストをリクエストすると、情報はappオブジェクトのコレクションとして返されます。アプリケーションAPIも参照して、appオブジェクトの構文を確認してください。
| プロパティ | データ型 | 説明 |
|---|---|---|
| app | appオブジェクトの配列(JSON)/appオブジェクトが0個以上(XML) | アプリケーションオブジェクトのコレクション |
JSONレスポンス
HTTPリクエスト
GET http://nm-http-address:port/ws/v1/node/apps
レスポンスヘッダー
HTTP/1.1 200 OK Content-Type: application/json Transfer-Encoding: chunked Server: Jetty(6.1.26)
レスポンスボディ
{
"apps" : {
"app" : [
{
"containerids" : [
"container_1326121700862_0003_01_000001",
"container_1326121700862_0003_01_000002"
],
"user" : "user1",
"id" : "application_1326121700862_0003",
"state" : "RUNNING"
},
{
"user" : "user1",
"id" : "application_1326121700862_0002",
"state" : "FINISHED"
}
]
}
}
XMLレスポンス
HTTPリクエスト
GET http://nm-http-address:port/ws/v1/node/apps Accept: application/xml
レスポンスヘッダー
HTTP/1.1 200 OK Content-Type: application/xml Content-Length: 400 Server: Jetty(6.1.26)
レスポンスボディ
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<apps>
<app>
<id>application_1326121700862_0002</id>
<state>FINISHED</state>
<user>user1</user>
</app>
<app>
<id>application_1326121700862_0003</id>
<state>RUNNING</state>
<user>user1</user>
<containerids>container_1326121700862_0003_01_000002</containerids>
<containerids>container_1326121700862_0003_01_000001</containerids>
</app>
</apps>
アプリケーションリソースには、このNodeManagerで実行された、または実行中の特定のアプリケーションに関する情報が含まれています。
appid値で識別されるアプリケーションのappオブジェクトを取得するには、次のURIを使用します。
None
| プロパティ | データ型 | 説明 |
|---|---|---|
| id | string | アプリケーションID |
| user | string | アプリケーションを開始したユーザー |
| state | string | アプリケーションの状態 - 有効な状態は次のとおりです。NEW、INITING、RUNNING、FINISHING_CONTAINERS_WAIT、APPLICATION_RESOURCES_CLEANINGUP、FINISHED |
| containerids | containeridの配列(JSON)/containeridが0個以上(XML) | このノードでアプリケーションによって現在使用されているcontaineridのリスト。存在しない場合は、このアプリケーションに対してコンテナが現在実行されていません。 |
JSONレスポンス
HTTPリクエスト
GET http://nm-http-address:port/ws/v1/node/apps/application_1326121700862_0005
レスポンスヘッダー
HTTP/1.1 200 OK Content-Type: application/json Transfer-Encoding: chunked Server: Jetty(6.1.26)
レスポンスボディ
{
"app" : {
"containerids" : [
"container_1326121700862_0005_01_000003",
"container_1326121700862_0005_01_000001"
],
"user" : "user1",
"id" : "application_1326121700862_0005",
"state" : "RUNNING"
}
}
XMLレスポンス
HTTPリクエスト
GET http://nm-http-address:port/ws/v1/node/apps/application_1326121700862_0005 Accept: application/xml
レスポンスヘッダー
HTTP/1.1 200 OK Content-Type: application/xml Content-Length: 281 Server: Jetty(6.1.26)
レスポンスボディ
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <app> <id>application_1326121700862_0005</id> <state>RUNNING</state> <user>user1</user> <containerids>container_1326121700862_0005_01_000003</containerids> <containerids>container_1326121700862_0005_01_000001</containerids> </app>
コンテナAPIを使用すると、それぞれがコンテナを表すリソースのコレクションを取得できます。このリソースに対してGET操作を実行すると、コンテナオブジェクトのコレクションを取得します。コンテナAPIも参照して、コンテナオブジェクトの構文を確認してください。
None
コンテナのリストをリクエストすると、情報はコンテナオブジェクトのコレクションとして返されます。コンテナAPIも参照して、コンテナオブジェクトの構文を確認してください。
| プロパティ | データ型 | 説明 |
|---|---|---|
| containers | コンテナオブジェクトの配列(JSON)/コンテナオブジェクトが0個以上(XML) | コンテナオブジェクトのコレクション |
JSONレスポンス
HTTPリクエスト
GET http://nm-http-address:port/ws/v1/node/containers
レスポンスヘッダー
HTTP/1.1 200 OK Content-Type: application/json Transfer-Encoding: chunked Server: Jetty(6.1.26)
レスポンスボディ
{
"containers" : {
"container" : [
{
"nodeId" : "host.domain.com:8041",
"totalMemoryNeededMB" : 2048,
"totalVCoresNeeded" : 1,
"state" : "RUNNING",
"diagnostics" : "",
"containerLogsLink" : "http://host.domain.com:8042/node/containerlogs/container_1326121700862_0006_01_000001/user1",
"user" : "user1",
"id" : "container_1326121700862_0006_01_000001",
"exitCode" : -1000,
"executionType": "GUARANTEED",
"containerLogFiles": [
"stdout",
"stderr",
"syslog"
]
},
{
"nodeId" : "host.domain.com:8041",
"totalMemoryNeededMB" : 2048,
"totalVCoresNeeded" : 2,
"state" : "RUNNING",
"diagnostics" : "",
"containerLogsLink" : "http://host.domain.com:8042/node/containerlogs/container_1326121700862_0006_01_000003/user1",
"user" : "user1",
"id" : "container_1326121700862_0006_01_000003",
"exitCode" : -1000,
"executionType": "GUARANTEED",
"containerLogFiles": [
"stdout",
"stderr",
"syslog"
]
}
]
}
}
XMLレスポンス
HTTPリクエスト
GET http://nm-http-address:port/ws/v1/node/containers Accept: application/xml
レスポンスヘッダー
HTTP/1.1 200 OK Content-Type: application/xml Content-Length: 988 Server: Jetty(6.1.26)
レスポンスボディ
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<containers>
<container>
<id>container_1326121700862_0006_01_000001</id>
<state>RUNNING</state>
<exitCode>-1000</exitCode>
<diagnostics/>
<user>user1</user>
<totalMemoryNeededMB>2048</totalMemoryNeededMB>
<totalVCoresNeeded>1</totalVCoresNeeded>
<containerLogsLink>http://host.domain.com:8042/node/containerlogs/container_1326121700862_0006_01_000001/user1</containerLogsLink>
<nodeId>host.domain.com:8041</nodeId>
<executionType>GUARANTEED</executionType>
<containerLogFiles>stdout</containerLogFiles>
<containerLogFiles>stderr</containerLogFiles>
<containerLogFiles>syslog</containerLogFiles>
</container>
<container>
<id>container_1326121700862_0006_01_000003</id>
<state>DONE</state>
<exitCode>0</exitCode>
<diagnostics>Container killed by the ApplicationMaster.</diagnostics>
<user>user1</user>
<totalMemoryNeededMB>2048</totalMemoryNeededMB>
<totalVCoresNeeded>2</totalVCoresNeeded>
<containerLogsLink>http://host.domain.com:8042/node/containerlogs/container_1326121700862_0006_01_000003/user1</containerLogsLink>
<nodeId>host.domain.com:8041</nodeId>
<executionType>GUARANTEED</executionType>
<containerLogFiles>stdout</containerLogFiles>
<containerLogFiles>stderr</containerLogFiles>
<containerLogFiles>syslog</containerLogFiles>
</container>
</containers>
コンテナリソースには、このNodeManagerで実行されている特定のコンテナに関する情報が含まれています。
containerid値で識別されるコンテナからコンテナオブジェクトを取得するには、次のURIを使用します。
None
| プロパティ | データ型 | 説明 |
|---|---|---|
| id | string | コンテナID |
| state | string | コンテナの状態 - 有効な状態は次のとおりです。NEW、LOCALIZING、LOCALIZATION_FAILED、LOCALIZED、RUNNING、EXITED_WITH_SUCCESS、EXITED_WITH_FAILURE、KILLING、CONTAINER_CLEANEDUP_AFTER_KILL、CONTAINER_RESOURCES_CLEANINGUP、DONE |
| nodeId | string | コンテナが存在するノードのID |
| containerLogsLink | string | コンテナログへのhttpリンク |
| user | string | コンテナを開始したユーザーのユーザー名 |
| exitCode | int | コンテナの終了コード |
| diagnostics | string | 失敗したコンテナの診断メッセージ |
| totalMemoryNeededMB | long | コンテナに必要なメモリの総量(MB) |
| totalVCoresNeeded | long | コンテナに必要な仮想コアの総数 |
| executionType | string | GUARANTEEDまたはOPPORTUNISTICのコンテナタイプ |
| containerLogFiles | 文字列の配列 | コンテナログファイル名 |
JSONレスポンス
HTTPリクエスト
GET http://nm-http-address:port/ws/v1/node/containers/container_1326121700862_0007_01_000001
レスポンスヘッダー
HTTP/1.1 200 OK Content-Type: application/json Transfer-Encoding: chunked Server: Jetty(6.1.26)
レスポンスボディ
{
"container" : {
"nodeId" : "host.domain.com:8041",
"totalMemoryNeededMB" : 2048,
"totalVCoresNeeded" : 1,
"state" : "RUNNING",
"diagnostics" : "",
"containerLogsLink" : "http://host.domain.com:8042/node/containerlogs/container_1326121700862_0007_01_000001/user1",
"user" : "user1",
"id" : "container_1326121700862_0007_01_000001",
"exitCode" : -1000,
"executionType": "GUARANTEED",
"containerLogFiles": [
"stdout",
"stderr",
"syslog"
]
}
}
XMLレスポンス
HTTPリクエスト
GET http://nm-http-address:port/ws/v1/node/containers/container_1326121700862_0007_01_000001 Accept: application/xml
レスポンスヘッダー
HTTP/1.1 200 OK Content-Type: application/xml Content-Length: 491 Server: Jetty(6.1.26)
レスポンスボディ
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <container> <id>container_1326121700862_0007_01_000001</id> <state>RUNNING</state> <exitCode>-1000</exitCode> <diagnostics/> <user>user1</user> <totalMemoryNeededMB>2048</totalMemoryNeededMB> <totalVCoresNeeded>1</totalVCoresNeeded> <containerLogsLink>http://host.domain.com:8042/node/containerlogs/container_1326121700862_0007_01_000001/user1</containerLogsLink> <nodeId>host.domain.com:8041</nodeId> <executionType>GUARANTEED</executionType> <containerLogFiles>stdout</containerLogFiles> <containerLogFiles>stderr</containerLogFiles> <containerLogFiles>syslog</containerLogFiles> </container>
補助サービスAPIを使用すると、それぞれが補助サービスを表すリソースのコレクションを取得できます。このリソースに対してGET操作を実行すると、補助サービス情報オブジェクトのコレクションを取得します。
YARN管理者は、PUT操作を使用して、NodeManagerで実行されている補助サービスを更新できます。リクエストの本文は、補助サービスマニフェストファイルと同じ形式である必要があります。
None
補助サービスのリストをリクエストすると、情報はサービス情報オブジェクトのコレクションとして返されます。
| プロパティ | データ型 | 説明 |
|---|---|---|
| services | サービス情報オブジェクトの配列(JSON)/サービス情報オブジェクトが0個以上(XML) | サービス情報オブジェクトのコレクション |
JSONレスポンス
HTTPリクエスト
GET http://nm-http-address:port/ws/v1/node/auxiliaryservices
レスポンスヘッダー
HTTP/1.1 200 OK Content-Type: application/json Transfer-Encoding: chunked Server: Jetty(6.1.26)
レスポンスボディ
{
"services": {
"service": [
{
"name": "timeline_collector",
"startTime": "2018-12-18 21:24:27",
"version": "1"
},
{
"name": "mapreduce_shuffle",
"startTime": "2018-12-18 21:24:27",
"version": "2"
}
]
}
}
XMLレスポンス
HTTPリクエスト
GET http://nm-http-address:port/ws/v1/node/auxiliaryservices Accept: application/xml
レスポンスヘッダー
HTTP/1.1 200 OK Content-Type: application/xml Content-Length: 299 Server: Jetty(6.1.26)
レスポンスボディ
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<services>
<service>
<name>timeline_collector</name>
<version>1</version>
<startTime>2018-12-18 21:00:00</startTime>
</service>
<service>
<name>mapreduce_shuffle</name>
<version>2</version>
<startTime>2018-12-18 21:00:00</startTime>
</service>
</services>