blob: c51df0d73ac04ab4447ffbea638a01a486ba6a0c [file] [log] [blame]
~~ Licensed under the Apache License, Version 2.0 (the "License");
~~ you may not use this file except in compliance with the License.
~~ You may obtain a copy of the License at
~~
~~ http://www.apache.org/licenses/LICENSE-2.0
~~
~~ Unless required by applicable law or agreed to in writing, software
~~ distributed under the License is distributed on an "AS IS" BASIS,
~~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
~~ See the License for the specific language governing permissions and
~~ limitations under the License. See accompanying LICENSE file.
---
History Server REST API's.
---
---
${maven.build.timestamp}
History Server REST API's.
\[ {{{./index.html}Go Back}} \]
%{toc|section=1|fromDepth=0|toDepth=3}
* Overview
The history server REST API's allow the user to get status on finished applications. Currently it only supports MapReduce and provides information on finished jobs.
* History Server Information API
The history server information resource provides overall information about the history server.
** URI
Both of the following URI's give you the history server information, from an application id identified by the appid value.
------
* http://<history server http address:port>/ws/v1/history
* http://<history server http address:port>/ws/v1/history/info
------
** HTTP Operations Supported
------
* GET
------
** Query Parameters Supported
------
None
------
** Elements of the <historyInfo> object
*---------------+--------------+-------------------------------+
|| Item || Data Type || Description |
*---------------+--------------+-------------------------------+
| startedOn | long | The time the history server was started (in ms since epoch)|
*---------------+--------------+-------------------------------+
| hadoopVersion | string | Version of hadoop common |
*---------------+--------------+-------------------------------+
| hadoopBuildVersion | string | Hadoop common build string with build version, user, and checksum |
*---------------+--------------+-------------------------------+
| hadoopVersionBuiltOn | string | Timestamp when hadoop common was built |
*---------------+--------------+-------------------------------+
** Response Examples
<<JSON response>>
HTTP Request:
------
GET http://<history server http address:port>/ws/v1/history/info
------
Response Header:
+---+
HTTP/1.1 200 OK
Content-Type: application/json
Transfer-Encoding: chunked
Server: Jetty(6.1.26)
+---+
Response Body:
+---+
{
"historyInfo" : {
"startedOn":1353512830963,
"hadoopVersionBuiltOn" : "Wed Jan 11 21:18:36 UTC 2012",
"hadoopBuildVersion" : "0.23.1-SNAPSHOT from 1230253 by user1 source checksum bb6e554c6d50b0397d826081017437a7",
"hadoopVersion" : "0.23.1-SNAPSHOT"
}
}
+---+
<<XML response>>
HTTP Request:
-----
GET http://<history server http address:port>/ws/v1/history/info
Accept: application/xml
-----
Response Header:
+---+
HTTP/1.1 200 OK
Content-Type: application/xml
Content-Length: 330
Server: Jetty(6.1.26)
+---+
Response Body:
+---+
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<historyInfo>
<startedOn>1353512830963</startedOn>
<hadoopVersion>0.23.1-SNAPSHOT</hadoopVersion>
<hadoopBuildVersion>0.23.1-SNAPSHOT from 1230253 by user1 source checksum bb6e554c6d50b0397d826081017437a7</hadoopBuildVersion>
<hadoopVersionBuiltOn>Wed Jan 11 21:18:36 UTC 2012</hadoopVersionBuiltOn>
</historyInfo>
+---+
* MapReduce API's
The following list of resources apply to MapReduce.
** Jobs API
The jobs resource provides a list of the MapReduce jobs that have finished. It does not currently return a full list of parameters
*** URI
------
* http://<history server http address:port>/ws/v1/history/mapreduce/jobs
------
*** HTTP Operations Supported
------
* GET
------
*** Query Parameters Supported
Multiple paramters can be specified. The started and finished times have a begin and end parameter to allow you to specify ranges. For example, one could request all jobs that started between 1:00am and 2:00pm on 12/19/2011 with startedTimeBegin=1324256400&startedTimeEnd=1324303200. If the Begin parameter is not specfied, it defaults to 0, and if the End parameter is not specified, it defaults to infinity.
------
* user - user name
* state - the job state
* queue - queue name
* limit - total number of app objects to be returned
* startedTimeBegin - jobs with start time beginning with this time, specified in ms since epoch
* startedTimeEnd - jobs with start time ending with this time, specified in ms since epoch
* finishedTimeBegin - jobs with finish time beginning with this time, specified in ms since epoch
* finishedTimeEnd - jobs with finish time ending with this time, specified in ms since epoch
------
*** Elements of the <jobs> object
When you make a request for the list of jobs, the information will be returned as an array of job objects.
See also {{Job API}} for syntax of the job object. Except this is a subset of a full job. Only startTime,
finishTime, id, name, queue, user, state, mapsTotal, mapsCompleted, reducesTotal, and reducesCompleted are
returned.
*---------------+--------------+-------------------------------+
|| Item || Data Type || Description |
*---------------+--------------+-------------------------------+
| job | array of job objects(json)/zero or more job objects(XML) | The collection of job objects |
*---------------+--------------+-------------------------------+
*** Response Examples
<<JSON response>>
HTTP Request:
------
GET http://<history server http address:port>/ws/v1/history/mapreduce/jobs
------
Response Header:
+---+
HTTP/1.1 200 OK
Content-Type: application/json
Transfer-Encoding: chunked
Server: Jetty(6.1.26)
+---+
Response Body:
+---+
{
"jobs" : {
"job" : [
{
"state" : "SUCCEEDED",
"user" : "user1",
"reducesTotal" : 1,
"mapsCompleted" : 1,
"startTime" : 1326381344489,
"id" : "job_1326381300833_1_1",
"name" : "word count",
"reducesCompleted" : 1,
"mapsTotal" : 1,
"queue" : "default",
"finishTime" : 1326381356010
},
{
"state" : "SUCCEEDED",
"user" : "user1",
"reducesTotal" : 1,
"mapsCompleted" : 1,
"startTime" : 1326381446529,
"id" : "job_1326381300833_2_2",
"name" : "Sleep job",
"reducesCompleted" : 1,
"mapsTotal" : 1,
"queue" : "default",
"finishTime" : 1326381582106
}
]
}
}
+---+
<<XML response>>
HTTP Request:
------
GET http://<history server http address:port>/ws/v1/history/mapreduce/jobs
Accept: application/xml
------
Response Header:
+---+
HTTP/1.1 200 OK
Content-Type: application/xml
Content-Length: 1922
Server: Jetty(6.1.26)
+---+
Response Body:
+---+
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<jobs>
<job>
<startTime>1326381344489</startTime>
<finishTime>1326381356010</finishTime>
<id>job_1326381300833_1_1</id>
<name>word count</name>
<queue>default</queue>
<user>user1</user>
<state>SUCCEEDED</state>
<mapsTotal>1</mapsTotal>
<mapsCompleted>1</mapsCompleted>
<reducesTotal>1</reducesTotal>
<reducesCompleted>1</reducesCompleted>
</job>
<job>
<startTime>1326381446529</startTime>
<finishTime>1326381582106</finishTime>
<id>job_1326381300833_2_2</id>
<name>Sleep job</name>
<queue>default</queue>
<user>user1</user>
<state>SUCCEEDED</state>
<mapsTotal>1</mapsTotal>
<mapsCompleted>1</mapsCompleted>
<reducesTotal>1</reducesTotal>
<reducesCompleted>1</reducesCompleted>
</job>
</jobs>
+---+
** {Job API}
A Job resource contains information about a particular job identified by {jobid}.
*** URI
------
* http://<history server http address:port>/ws/v1/history/mapreduce/jobs/{jobid}
------
*** HTTP Operations Supported
------
* GET
------
*** Query Parameters Supported
------
None
------
*** Elements of the <job> object
*---------------+--------------+-------------------------------+
|| Item || Data Type || Description |
*---------------+--------------+-------------------------------+
| id | string | The job id|
*---------------+--------------+-------------------------------+
| name | string | The job name |
*---------------+--------------+-------------------------------+
| queue | string | The queue the job was submitted to|
*---------------+--------------+-------------------------------+
| user | string | The user name |
*---------------+--------------+-------------------------------+
| state | string | the job state - valid values are: NEW, INITED, RUNNING, SUCCEEDED, FAILED, KILL_WAIT, KILLED, ERROR|
*---------------+--------------+-------------------------------+
| diagnostics | string | A diagnostic message |
*---------------+--------------+-------------------------------+
| startTime | long | The time the job started (in ms since epoch)|
*---------------+--------------+-------------------------------+
| finishTime | long | The time the job finished (in ms since epoch)|
*---------------+--------------+-------------------------------+
| mapsTotal | int | The total number of maps |
*---------------+--------------+-------------------------------+
| mapsCompleted | int | The number of completed maps |
*---------------+--------------+-------------------------------+
| reducesTotal | int | The total number of reduces |
*---------------+--------------+-------------------------------+
| reducesCompleted | int | The number of completed reduces|
*---------------+--------------+-------------------------------+
| uberized | boolean | Indicates if the job was an uber job - ran completely in the application master|
*---------------+--------------+-------------------------------+
| avgMapTime | long | The average time of a map task (in ms)|
*---------------+--------------+-------------------------------+
| avgReduceTime | long | The average time of the reduce (in ms)|
*---------------+--------------+-------------------------------+
| avgShuffleTime | long | The average time of the shuffle (in ms)|
*---------------+--------------+-------------------------------+
| avgMergeTime | long | The average time of the merge (in ms)|
*---------------+--------------+-------------------------------+
| failedReduceAttempts | int | The number of failed reduce attempts |
*---------------+--------------+-------------------------------+
| killedReduceAttempts | int | The number of killed reduce attempts |
*---------------+--------------+-------------------------------+
| successfulReduceAttempts | int | The number of successful reduce attempts |
*---------------+--------------+-------------------------------+
| failedMapAttempts | int | The number of failed map attempts |
*---------------+--------------+-------------------------------+
| killedMapAttempts | int | The number of killed map attempts |
*---------------+--------------+-------------------------------+
| successfulMapAttempts | int | The number of successful map attempts |
*---------------+--------------+-------------------------------+
| acls | array of acls(json)/zero or more acls objects(xml)| A collection of acls objects |
*---------------+--------------+-------------------------------+
** Elements of the <acls> object
*---------------+--------------+-------------------------------+
|| Item || Data Type || Description |
*---------------+--------------+-------------------------------+
| value | string | The acl value|
*---------------+--------------+-------------------------------+
| name | string | The acl name |
*---------------+--------------+-------------------------------+
*** Response Examples
<<JSON response>>
HTTP Request:
------
GET http://<history server http address:port>/ws/v1/history/mapreduce/jobs/job_1326381300833_2_2
------
Response Header:
+---+
HTTP/1.1 200 OK
Content-Type: application/json
Server: Jetty(6.1.26)
Content-Length: 720
+---+
Response Body:
+---+
{
"job" : {
"avgReduceTime" : 124961,
"failedReduceAttempts" : 0,
"state" : "SUCCEEDED",
"successfulReduceAttempts" : 1,
"acls" : [
{
"value" : " ",
"name" : "mapreduce.job.acl-modify-job"
},
{
"value" : " ",
"name" : "mapreduce.job.acl-view-job"
}
],
"user" : "user1",
"reducesTotal" : 1,
"mapsCompleted" : 1,
"startTime" : 1326381446529,
"id" : "job_1326381300833_2_2",
"avgMapTime" : 2638,
"successfulMapAttempts" : 1,
"name" : "Sleep job",
"avgShuffleTime" : 2540,
"reducesCompleted" : 1,
"diagnostics" : "",
"failedMapAttempts" : 0,
"avgMergeTime" : 2589,
"killedReduceAttempts" : 0,
"mapsTotal" : 1,
"queue" : "default",
"uberized" : false,
"killedMapAttempts" : 0,
"finishTime" : 1326381582106
}
}
+---+
<<XML response>>
HTTP Request:
------
GET http://<history server http address:port>/ws/v1/history/mapreduce/jobs/job_1326381300833_2_2
Accept: application/xml
------
Response Header:
+---+
HTTP/1.1 200 OK
Content-Type: application/xml
Content-Length: 983
Server: Jetty(6.1.26)
+---+
Response Body:
+---+
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<job>
<startTime>1326381446529</startTime>
<finishTime>1326381582106</finishTime>
<id>job_1326381300833_2_2</id>
<name>Sleep job</name>
<queue>default</queue>
<user>user1</user>
<state>SUCCEEDED</state>
<mapsTotal>1</mapsTotal>
<mapsCompleted>1</mapsCompleted>
<reducesTotal>1</reducesTotal>
<reducesCompleted>1</reducesCompleted>
<uberized>false</uberized>
<diagnostics/>
<avgMapTime>2638</avgMapTime>
<avgReduceTime>124961</avgReduceTime>
<avgShuffleTime>2540</avgShuffleTime>
<avgMergeTime>2589</avgMergeTime>
<failedReduceAttempts>0</failedReduceAttempts>
<killedReduceAttempts>0</killedReduceAttempts>
<successfulReduceAttempts>1</successfulReduceAttempts>
<failedMapAttempts>0</failedMapAttempts>
<killedMapAttempts>0</killedMapAttempts>
<successfulMapAttempts>1</successfulMapAttempts>
<acls>
<name>mapreduce.job.acl-modify-job</name>
<value> </value>
</acls>
<acls>
<name>mapreduce.job.acl-view-job</name>
<value> </value>
</acls>
</job>
+---+
** Job Attempts API
With the job attempts API, you can obtain a collection of resources that represent a job attempt. When you run a GET operation on this resource, you obtain a collection of Job Attempt Objects.
*** URI
------
* http://<history server http address:port>/ws/v1/history/mapreduce/jobs/{jobid}/jobattempts
------
*** HTTP Operations Supported
------
* GET
------
*** Query Parameters Supported
------
None
------
*** Elements of the <jobAttempts> object
When you make a request for the list of job attempts, the information will be returned as an array of job attempt objects.
jobAttempts:
*---------------+--------------+-------------------------------+
|| Item || Data Type || Description |
*---------------+--------------+-------------------------------+
| jobAttempt | array of job attempt objects(JSON)/zero or more job attempt objects(XML) | The collection of job attempt objects |
*---------------+--------------+--------------------------------+
*** Elements of the <jobAttempt> object
*---------------+--------------+-------------------------------+
|| Item || Data Type || Description |
*---------------+--------------+-------------------------------+
| id | string | The job attempt id |
*---------------+--------------+--------------------------------+
| nodeId | string | The node id of the node the attempt ran on|
*---------------+--------------+--------------------------------+
| nodeHttpAddress | string | The node http address of the node the attempt ran on|
*---------------+--------------+--------------------------------+
| logsLink | string | The http link to the job attempt logs |
*---------------+--------------+--------------------------------+
| containerId | string | The id of the container for the job attempt |
*---------------+--------------+--------------------------------+
| startTime | long | The start time of the attempt (in ms since epoch)|
*---------------+--------------+--------------------------------+
*** Response Examples
<<JSON response>>
HTTP Request:
------
GET http://<history server http address:port>/ws/v1/history/mapreduce/jobs/job_1326381300833_2_2/jobattempts
------
Response Header:
+---+
HTTP/1.1 200 OK
Content-Type: application/json
Transfer-Encoding: chunked
Server: Jetty(6.1.26)
+---+
Response Body:
+---+
{
"jobAttempts" : {
"jobAttempt" : [
{
"nodeId" : "host.domain.com:8041",
"nodeHttpAddress" : "host.domain.com:8042",
"startTime" : 1326381444693,
"id" : 1,
"logsLink" : "http://host.domain.com:19888/jobhistory/logs/host.domain.com:8041/container_1326381300833_0002_01_000001/job_1326381300833_2_2/user1",
"containerId" : "container_1326381300833_0002_01_000001"
}
]
}
}
+---+
<<XML response>>
HTTP Request:
------
GET http://<history server http address:port>/ws/v1/history/mapreduce/jobs/job_1326381300833_2_2/jobattmpts
Accept: application/xml
------
Response Header:
+---+
HTTP/1.1 200 OK
Content-Type: application/xml
Content-Length: 575
Server: Jetty(6.1.26)
+---+
Response Body:
+---+
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<jobAttempts>
<jobAttempt>
<nodeHttpAddress>host.domain.com:8042</nodeHttpAddress>
<nodeId>host.domain.com:8041</nodeId>
<id>1</id>
<startTime>1326381444693</startTime>
<containerId>container_1326381300833_0002_01_000001</containerId>
<logsLink>http://host.domain.com:19888/jobhistory/logs/host.domain.com:8041/container_1326381300833_0002_01_000001/job_1326381300833_2_2/user1</logsLink>
</jobAttempt>
</jobAttempts>
+---+
** Job Counters API
With the job counters API, you can object a collection of resources that represent al the counters for that job.
*** URI
------
* http://<history server http address:port>/ws/v1/history/mapreduce/jobs/{jobid}/counters
------
*** HTTP Operations Supported
------
* GET
------
*** Query Parameters Supported
------
None
------
*** Elements of the <jobCounters> object
*---------------+--------------+-------------------------------+
|| Item || Data Type || Description |
*---------------+--------------+-------------------------------+
| id | string | The job id |
*---------------+--------------+-------------------------------+
| counterGroup | array of counterGroup objects(JSON)/zero or more counterGroup objects(XML) | A collection of counter group objects |
*---------------+--------------+-------------------------------+
*** Elements of the <counterGroup> objecs
*---------------+--------------+-------------------------------+
|| Item || Data Type || Description |
*---------------+--------------+-------------------------------+
| counterGroupName | string | The name of the counter group |
*---------------+--------------+-------------------------------+
| counter | array of counter objects(JSON)/zero or more counter objects(XML) | A collection of counter objects |
*---------------+--------------+-------------------------------+
*** Elements of the <counter> object
*---------------+--------------+-------------------------------+
|| Item || Data Type || Description |
*---------------+--------------+-------------------------------+
| name | string | The name of the counter |
*---------------+--------------+-------------------------------+
| reduceCounterValue | long | The counter value of reduce tasks |
*---------------+--------------+-------------------------------+
| mapCounterValue | long | The counter value of map tasks |
*---------------+--------------+-------------------------------+
| totalCounterValue | long | The counter value of all tasks |
*---------------+--------------+-------------------------------+
*** Response Examples
<<JSON response>>
HTTP Request:
------
GET http://<history server http address:port>/ws/v1/history/mapreduce/jobs/job_1326381300833_2_2/counters
------
Response Header:
+---+
HTTP/1.1 200 OK
Content-Type: application/json
Transfer-Encoding: chunked
Server: Jetty(6.1.26)
+---+
Response Body:
+---+
{
"jobCounters" : {
"id" : "job_1326381300833_2_2",
"counterGroup" : [
{
"counterGroupName" : "Shuffle Errors",
"counter" : [
{
"reduceCounterValue" : 0,
"mapCounterValue" : 0,
"totalCounterValue" : 0,
"name" : "BAD_ID"
},
{
"reduceCounterValue" : 0,
"mapCounterValue" : 0,
"totalCounterValue" : 0,
"name" : "CONNECTION"
},
{
"reduceCounterValue" : 0,
"mapCounterValue" : 0,
"totalCounterValue" : 0,
"name" : "IO_ERROR"
},
{
"reduceCounterValue" : 0,
"mapCounterValue" : 0,
"totalCounterValue" : 0,
"name" : "WRONG_LENGTH"
},
{
"reduceCounterValue" : 0,
"mapCounterValue" : 0,
"totalCounterValue" : 0,
"name" : "WRONG_MAP"
},
{
"reduceCounterValue" : 0,
"mapCounterValue" : 0,
"totalCounterValue" : 0,
"name" : "WRONG_REDUCE"
}
]
},
{
"counterGroupName" : "org.apache.hadoop.mapreduce.FileSystemCounter",
"counter" : [
{
"reduceCounterValue" : 0,
"mapCounterValue" : 0,
"totalCounterValue" : 2483,
"name" : "FILE_BYTES_READ"
},
{
"reduceCounterValue" : 0,
"mapCounterValue" : 0,
"totalCounterValue" : 108525,
"name" : "FILE_BYTES_WRITTEN"
},
{
"reduceCounterValue" : 0,
"mapCounterValue" : 0,
"totalCounterValue" : 0,
"name" : "FILE_READ_OPS"
},
{
"reduceCounterValue" : 0,
"mapCounterValue" : 0,
"totalCounterValue" : 0,
"name" : "FILE_LARGE_READ_OPS"
},
{
"reduceCounterValue" : 0,
"mapCounterValue" : 0,
"totalCounterValue" : 0,
"name" : "FILE_WRITE_OPS"
},
{
"reduceCounterValue" : 0,
"mapCounterValue" : 0,
"totalCounterValue" : 48,
"name" : "HDFS_BYTES_READ"
},
{
"reduceCounterValue" : 0,
"mapCounterValue" : 0,
"totalCounterValue" : 0,
"name" : "HDFS_BYTES_WRITTEN"
},
{
"reduceCounterValue" : 0,
"mapCounterValue" : 0,
"totalCounterValue" : 1,
"name" : "HDFS_READ_OPS"
},
{
"reduceCounterValue" : 0,
"mapCounterValue" : 0,
"totalCounterValue" : 0,
"name" : "HDFS_LARGE_READ_OPS"
},
{
"reduceCounterValue" : 0,
"mapCounterValue" : 0,
"totalCounterValue" : 0,
"name" : "HDFS_WRITE_OPS"
}
]
},
{
"counterGroupName" : "org.apache.hadoop.mapreduce.TaskCounter",
"counter" : [
{
"reduceCounterValue" : 0,
"mapCounterValue" : 0,
"totalCounterValue" : 1,
"name" : "MAP_INPUT_RECORDS"
},
{
"reduceCounterValue" : 0,
"mapCounterValue" : 0,
"totalCounterValue" : 1200,
"name" : "MAP_OUTPUT_RECORDS"
},
{
"reduceCounterValue" : 0,
"mapCounterValue" : 0,
"totalCounterValue" : 4800,
"name" : "MAP_OUTPUT_BYTES"
},
{
"reduceCounterValue" : 0,
"mapCounterValue" : 0,
"totalCounterValue" : 2235,
"name" : "MAP_OUTPUT_MATERIALIZED_BYTES"
},
{
"reduceCounterValue" : 0,
"mapCounterValue" : 0,
"totalCounterValue" : 48,
"name" : "SPLIT_RAW_BYTES"
},
{
"reduceCounterValue" : 0,
"mapCounterValue" : 0,
"totalCounterValue" : 0,
"name" : "COMBINE_INPUT_RECORDS"
},
{
"reduceCounterValue" : 0,
"mapCounterValue" : 0,
"totalCounterValue" : 0,
"name" : "COMBINE_OUTPUT_RECORDS"
},
{
"reduceCounterValue" : 0,
"mapCounterValue" : 0,
"totalCounterValue" : 1200,
"name" : "REDUCE_INPUT_GROUPS"
},
{
"reduceCounterValue" : 0,
"mapCounterValue" : 0,
"totalCounterValue" : 2235,
"name" : "REDUCE_SHUFFLE_BYTES"
},
{
"reduceCounterValue" : 0,
"mapCounterValue" : 0,
"totalCounterValue" : 1200,
"name" : "REDUCE_INPUT_RECORDS"
},
{
"reduceCounterValue" : 0,
"mapCounterValue" : 0,
"totalCounterValue" : 0,
"name" : "REDUCE_OUTPUT_RECORDS"
},
{
"reduceCounterValue" : 0,
"mapCounterValue" : 0,
"totalCounterValue" : 2400,
"name" : "SPILLED_RECORDS"
},
{
"reduceCounterValue" : 0,
"mapCounterValue" : 0,
"totalCounterValue" : 1,
"name" : "SHUFFLED_MAPS"
},
{
"reduceCounterValue" : 0,
"mapCounterValue" : 0,
"totalCounterValue" : 0,
"name" : "FAILED_SHUFFLE"
},
{
"reduceCounterValue" : 0,
"mapCounterValue" : 0,
"totalCounterValue" : 1,
"name" : "MERGED_MAP_OUTPUTS"
},
{
"reduceCounterValue" : 0,
"mapCounterValue" : 0,
"totalCounterValue" : 113,
"name" : "GC_TIME_MILLIS"
},
{
"reduceCounterValue" : 0,
"mapCounterValue" : 0,
"totalCounterValue" : 1830,
"name" : "CPU_MILLISECONDS"
},
{
"reduceCounterValue" : 0,
"mapCounterValue" : 0,
"totalCounterValue" : 478068736,
"name" : "PHYSICAL_MEMORY_BYTES"
},
{
"reduceCounterValue" : 0,
"mapCounterValue" : 0,
"totalCounterValue" : 2159284224,
"name" : "VIRTUAL_MEMORY_BYTES"
},
{
"reduceCounterValue" : 0,
"mapCounterValue" : 0,
"totalCounterValue" : 378863616,
"name" : "COMMITTED_HEAP_BYTES"
}
]
},
{
"counterGroupName" : "org.apache.hadoop.mapreduce.lib.input.FileInputFormatCounter",
"counter" : [
{
"reduceCounterValue" : 0,
"mapCounterValue" : 0,
"totalCounterValue" : 0,
"name" : "BYTES_READ"
}
]
},
{
"counterGroupName" : "org.apache.hadoop.mapreduce.lib.output.FileOutputFormatCounter",
"counter" : [
{
"reduceCounterValue" : 0,
"mapCounterValue" : 0,
"totalCounterValue" : 0,
"name" : "BYTES_WRITTEN"
}
]
}
]
}
}
+---+
<<XML response>>
HTTP Request:
------
GET http://<history server http address:port>/ws/v1/history/mapreduce/jobs/job_1326381300833_2_2/counters
Accept: application/xml
------
Response Header:
+---+
HTTP/1.1 200 OK
Content-Type: application/xml
Content-Length: 7030
Server: Jetty(6.1.26)
+---+
Response Body:
+---+
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<jobCounters>
<id>job_1326381300833_2_2</id>
<counterGroup>
<counterGroupName>Shuffle Errors</counterGroupName>
<counter>
<name>BAD_ID</name>
<totalCounterValue>0</totalCounterValue>
<mapCounterValue>0</mapCounterValue>
<reduceCounterValue>0</reduceCounterValue>
</counter>
<counter>
<name>CONNECTION</name>
<totalCounterValue>0</totalCounterValue>
<mapCounterValue>0</mapCounterValue>
<reduceCounterValue>0</reduceCounterValue>
</counter>
<counter>
<name>IO_ERROR</name>
<totalCounterValue>0</totalCounterValue>
<mapCounterValue>0</mapCounterValue>
<reduceCounterValue>0</reduceCounterValue>
</counter>
<counter>
<name>WRONG_LENGTH</name>
<totalCounterValue>0</totalCounterValue>
<mapCounterValue>0</mapCounterValue>
<reduceCounterValue>0</reduceCounterValue>
</counter>
<counter>
<name>WRONG_MAP</name>
<totalCounterValue>0</totalCounterValue>
<mapCounterValue>0</mapCounterValue>
<reduceCounterValue>0</reduceCounterValue>
</counter>
<counter>
<name>WRONG_REDUCE</name>
<totalCounterValue>0</totalCounterValue>
<mapCounterValue>0</mapCounterValue>
<reduceCounterValue>0</reduceCounterValue>
</counter>
</counterGroup>
<counterGroup>
<counterGroupName>org.apache.hadoop.mapreduce.FileSystemCounter</counterGroupName>
<counter>
<name>FILE_BYTES_READ</name>
<totalCounterValue>2483</totalCounterValue>
<mapCounterValue>0</mapCounterValue>
<reduceCounterValue>0</reduceCounterValue>
</counter>
<counter>
<name>FILE_BYTES_WRITTEN</name>
<totalCounterValue>108525</totalCounterValue>
<mapCounterValue>0</mapCounterValue>
<reduceCounterValue>0</reduceCounterValue>
</counter>
<counter>
<name>FILE_READ_OPS</name>
<totalCounterValue>0</totalCounterValue>
<mapCounterValue>0</mapCounterValue>
<reduceCounterValue>0</reduceCounterValue>
</counter>
<counter>
<name>FILE_LARGE_READ_OPS</name>
<totalCounterValue>0</totalCounterValue>
<mapCounterValue>0</mapCounterValue>
<reduceCounterValue>0</reduceCounterValue>
</counter>
<counter>
<name>FILE_WRITE_OPS</name>
<totalCounterValue>0</totalCounterValue>
<mapCounterValue>0</mapCounterValue>
<reduceCounterValue>0</reduceCounterValue>
</counter>
<counter>
<name>HDFS_BYTES_READ</name>
<totalCounterValue>48</totalCounterValue>
<mapCounterValue>0</mapCounterValue>
<reduceCounterValue>0</reduceCounterValue>
</counter>
<counter>
<name>HDFS_BYTES_WRITTEN</name>
<totalCounterValue>0</totalCounterValue>
<mapCounterValue>0</mapCounterValue>
<reduceCounterValue>0</reduceCounterValue>
</counter>
<counter>
<name>HDFS_READ_OPS</name>
<totalCounterValue>1</totalCounterValue>
<mapCounterValue>0</mapCounterValue>
<reduceCounterValue>0</reduceCounterValue>
</counter>
<counter>
<name>HDFS_LARGE_READ_OPS</name>
<totalCounterValue>0</totalCounterValue>
<mapCounterValue>0</mapCounterValue>
<reduceCounterValue>0</reduceCounterValue>
</counter>
<counter>
<name>HDFS_WRITE_OPS</name>
<totalCounterValue>0</totalCounterValue>
<mapCounterValue>0</mapCounterValue>
<reduceCounterValue>0</reduceCounterValue>
</counter>
</counterGroup>
<counterGroup>
<counterGroupName>org.apache.hadoop.mapreduce.TaskCounter</counterGroupName>
<counter>
<name>MAP_INPUT_RECORDS</name>
<totalCounterValue>1</totalCounterValue>
<mapCounterValue>0</mapCounterValue>
<reduceCounterValue>0</reduceCounterValue>
</counter>
<counter>
<name>MAP_OUTPUT_RECORDS</name>
<totalCounterValue>1200</totalCounterValue>
<mapCounterValue>0</mapCounterValue>
<reduceCounterValue>0</reduceCounterValue>
</counter>
<counter>
<name>MAP_OUTPUT_BYTES</name>
<totalCounterValue>4800</totalCounterValue>
<mapCounterValue>0</mapCounterValue>
<reduceCounterValue>0</reduceCounterValue>
</counter>
<counter>
<name>MAP_OUTPUT_MATERIALIZED_BYTES</name>
<totalCounterValue>2235</totalCounterValue>
<mapCounterValue>0</mapCounterValue>
<reduceCounterValue>0</reduceCounterValue>
</counter>
<counter>
<name>SPLIT_RAW_BYTES</name>
<totalCounterValue>48</totalCounterValue>
<mapCounterValue>0</mapCounterValue>
<reduceCounterValue>0</reduceCounterValue>
</counter>
<counter>
<name>COMBINE_INPUT_RECORDS</name>
<totalCounterValue>0</totalCounterValue>
<mapCounterValue>0</mapCounterValue>
<reduceCounterValue>0</reduceCounterValue>
</counter>
<counter>
<name>COMBINE_OUTPUT_RECORDS</name>
<totalCounterValue>0</totalCounterValue>
<mapCounterValue>0</mapCounterValue>
<reduceCounterValue>0</reduceCounterValue>
</counter>
<counter>
<name>REDUCE_INPUT_GROUPS</name>
<totalCounterValue>1200</totalCounterValue>
<mapCounterValue>0</mapCounterValue>
<reduceCounterValue>0</reduceCounterValue>
</counter>
<counter>
<name>REDUCE_SHUFFLE_BYTES</name>
<totalCounterValue>2235</totalCounterValue>
<mapCounterValue>0</mapCounterValue>
<reduceCounterValue>0</reduceCounterValue>
</counter>
<counter>
<name>REDUCE_INPUT_RECORDS</name>
<totalCounterValue>1200</totalCounterValue>
<mapCounterValue>0</mapCounterValue>
<reduceCounterValue>0</reduceCounterValue>
</counter>
<counter>
<name>REDUCE_OUTPUT_RECORDS</name>
<totalCounterValue>0</totalCounterValue>
<mapCounterValue>0</mapCounterValue>
<reduceCounterValue>0</reduceCounterValue>
</counter>
<counter>
<name>SPILLED_RECORDS</name>
<totalCounterValue>2400</totalCounterValue>
<mapCounterValue>0</mapCounterValue>
<reduceCounterValue>0</reduceCounterValue>
</counter>
<counter>
<name>SHUFFLED_MAPS</name>
<totalCounterValue>1</totalCounterValue>
<mapCounterValue>0</mapCounterValue>
<reduceCounterValue>0</reduceCounterValue>
</counter>
<counter>
<name>FAILED_SHUFFLE</name>
<totalCounterValue>0</totalCounterValue>
<mapCounterValue>0</mapCounterValue>
<reduceCounterValue>0</reduceCounterValue>
</counter>
<counter>
<name>MERGED_MAP_OUTPUTS</name>
<totalCounterValue>1</totalCounterValue>
<mapCounterValue>0</mapCounterValue>
<reduceCounterValue>0</reduceCounterValue>
</counter>
<counter>
<name>GC_TIME_MILLIS</name>
<totalCounterValue>113</totalCounterValue>
<mapCounterValue>0</mapCounterValue>
<reduceCounterValue>0</reduceCounterValue>
</counter>
<counter>
<name>CPU_MILLISECONDS</name>
<totalCounterValue>1830</totalCounterValue>
<mapCounterValue>0</mapCounterValue>
<reduceCounterValue>0</reduceCounterValue>
</counter>
<counter>
<name>PHYSICAL_MEMORY_BYTES</name>
<totalCounterValue>478068736</totalCounterValue>
<mapCounterValue>0</mapCounterValue>
<reduceCounterValue>0</reduceCounterValue>
</counter>
<counter>
<name>VIRTUAL_MEMORY_BYTES</name>
<totalCounterValue>2159284224</totalCounterValue>
<mapCounterValue>0</mapCounterValue>
<reduceCounterValue>0</reduceCounterValue>
</counter>
<counter>
<name>COMMITTED_HEAP_BYTES</name>
<totalCounterValue>378863616</totalCounterValue>
<mapCounterValue>0</mapCounterValue>
<reduceCounterValue>0</reduceCounterValue>
</counter>
</counterGroup>
<counterGroup>
<counterGroupName>org.apache.hadoop.mapreduce.lib.input.FileInputFormatCounter</counterGroupName>
<counter>
<name>BYTES_READ</name>
<totalCounterValue>0</totalCounterValue>
<mapCounterValue>0</mapCounterValue>
<reduceCounterValue>0</reduceCounterValue>
</counter>
</counterGroup>
<counterGroup>
<counterGroupName>org.apache.hadoop.mapreduce.lib.output.FileOutputFormatCounter</counterGroupName>
<counter>
<name>BYTES_WRITTEN</name>
<totalCounterValue>0</totalCounterValue>
<mapCounterValue>0</mapCounterValue>
<reduceCounterValue>0</reduceCounterValue>
</counter>
</counterGroup>
</jobCounters>
+---+
** Job Conf API
A job configuration resource contains information about the job configuration for this job.
*** URI
Use the following URI to obtain th job configuration information, from a job identified by the {jobid} value.
------
* http://<history server http address:port>/ws/v1/history/mapreduce/jobs/{jobid}/conf
------
*** HTTP Operations Supported
------
* GET
------
*** Query Parameters Supported
------
None
------
*** Elements of the <conf> object
*---------------+--------------+-------------------------------+
|| Item || Data Type || Description |
*---------------+--------------+-------------------------------+
| path | string | The path to the job configuration file|
*---------------+--------------+-------------------------------+
| property | array of the configuration properties(JSON)/zero or more configuration properties(XML) | Collection of configuration property objects|
*---------------+--------------+-------------------------------+
*** Elements of the <property> object
*---------------+--------------+-------------------------------+
|| Item || Data Type || Description |
*---------------+--------------+-------------------------------+
| name | string | The name of the configuration property |
*---------------+--------------+-------------------------------+
| value | string | The value of the configuration property |
*---------------+--------------+-------------------------------+
| source | string | The location this configuration object came from. If there is more then one of these it shows the history with the latest source at the end of the list. |
*---------------+--------------+-------------------------------+
*** Response Examples
<<JSON response>>
HTTP Request:
------
GET http://<history server http address:port>/ws/v1/history/mapreduce/jobs/job_1326381300833_2_2/conf
------
Response Header:
+---+
HTTP/1.1 200 OK
Content-Type: application/json
Transfer-Encoding: chunked
Server: Jetty(6.1.26)
+---+
Response Body:
This is a small snippet of the output as the output if very large. The real output contains every property in your job configuration file.
+---+
{
"conf" : {
"path" : "hdfs://host.domain.com:9000/user/user1/.staging/job_1326381300833_0002/job.xml",
"property" : [
{
"value" : "/home/hadoop/hdfs/data",
"name" : "dfs.datanode.data.dir"
"source" : ["hdfs-site.xml", "job.xml"]
},
{
"value" : "org.apache.hadoop.yarn.server.webproxy.amfilter.AmFilterInitializer",
"name" : "hadoop.http.filter.initializers"
"source" : ["programatically", "job.xml"]
},
{
"value" : "/home/hadoop/tmp",
"name" : "mapreduce.cluster.temp.dir"
"source" : ["mapred-site.xml"]
},
...
]
}
}
+---+
<<XML response>>
HTTP Request:
------
GET http://<history server http address:port>/ws/v1/history/mapreduce/jobs/job_1326381300833_2_2/conf
Accept: application/xml
------
Response Header:
+---+
HTTP/1.1 200 OK
Content-Type: application/xml
Content-Length: 552
Server: Jetty(6.1.26)
+---+
Response Body:
+---+
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<conf>
<path>hdfs://host.domain.com:9000/user/user1/.staging/job_1326381300833_0002/job.xml</path>
<property>
<name>dfs.datanode.data.dir</name>
<value>/home/hadoop/hdfs/data</value>
<source>hdfs-site.xml</source>
<source>job.xml</source>
</property>
<property>
<name>hadoop.http.filter.initializers</name>
<value>org.apache.hadoop.yarn.server.webproxy.amfilter.AmFilterInitializer</value>
<source>programatically</source>
<source>job.xml</source>
</property>
<property>
<name>mapreduce.cluster.temp.dir</name>
<value>/home/hadoop/tmp</value>
<source>mapred-site.xml</source>
</property>
...
</conf>
+---+
** Tasks API
With the tasks API, you can obtain a collection of resources that represent a task within a job. When you run a GET operation on this resource, you obtain a collection of Task Objects.
*** URI
------
* http://<history server http address:port>/ws/v1/history/mapreduce/jobs/{jobid}/tasks
------
*** HTTP Operations Supported
------
* GET
------
*** Query Parameters Supported
------
* type - type of task, valid values are m or r. m for map task or r for reduce task.
------
*** Elements of the <tasks> object
When you make a request for the list of tasks , the information will be returned as an array of task objects.
See also {{Task API}} for syntax of the task object.
*---------------+--------------+-------------------------------+
|| Item || Data Type || Description |
*---------------+--------------+-------------------------------+
| task | array of task objects(JSON)/zero or more task objects(XML) | The collection of task objects. |
*---------------+--------------+--------------------------------+
*** Response Examples
<<JSON response>>
HTTP Request:
------
GET http://<history server http address:port>/ws/v1/history/mapreduce/jobs/job_1326381300833_2_2/tasks
------
Response Header:
+---+
HTTP/1.1 200 OK
Content-Type: application/json
Transfer-Encoding: chunked
Server: Jetty(6.1.26)
+---+
Response Body:
+---+
{
"tasks" : {
"task" : [
{
"progress" : 100,
"elapsedTime" : 6777,
"state" : "SUCCEEDED",
"startTime" : 1326381446541,
"id" : "task_1326381300833_2_2_m_0",
"type" : "MAP",
"successfulAttempt" : "attempt_1326381300833_2_2_m_0_0",
"finishTime" : 1326381453318
},
{
"progress" : 100,
"elapsedTime" : 135559,
"state" : "SUCCEEDED",
"startTime" : 1326381446544,
"id" : "task_1326381300833_2_2_r_0",
"type" : "REDUCE",
"successfulAttempt" : "attempt_1326381300833_2_2_r_0_0",
"finishTime" : 1326381582103
}
]
}
}
+---+
<<XML response>>
HTTP Request:
------
GET http://<history server http address:port>/ws/v1/history/mapreduce/jobs/job_1326381300833_2_2/tasks
Accept: application/xml
------
Response Header:
+---+
HTTP/1.1 200 OK
Content-Type: application/xml
Content-Length: 653
Server: Jetty(6.1.26)
+---+
Response Body:
+---+
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<tasks>
<task>
<startTime>1326381446541</startTime>
<finishTime>1326381453318</finishTime>
<elapsedTime>6777</elapsedTime>
<progress>100.0</progress>
<id>task_1326381300833_2_2_m_0</id>
<state>SUCCEEDED</state>
<type>MAP</type>
<successfulAttempt>attempt_1326381300833_2_2_m_0_0</successfulAttempt>
</task>
<task>
<startTime>1326381446544</startTime>
<finishTime>1326381582103</finishTime>
<elapsedTime>135559</elapsedTime>
<progress>100.0</progress>
<id>task_1326381300833_2_2_r_0</id>
<state>SUCCEEDED</state>
<type>REDUCE</type>
<successfulAttempt>attempt_1326381300833_2_2_r_0_0</successfulAttempt>
</task>
</tasks>
+---+
** {Task API}
A Task resource contains information about a particular task within a job.
*** URI
Use the following URI to obtain an Task Object, from a task identified by the {taskid} value.
------
* http://<history server http address:port>/ws/v1/history/mapreduce/jobs/{jobid}/tasks/{taskid}
------
*** HTTP Operations Supported
------
* GET
------
*** Query Parameters Supported
------
None
------
*** Elements of the <task> object
*---------------+--------------+-------------------------------+
|| Item || Data Type || Description |
*---------------+--------------+-------------------------------+
| id | string | The task id |
*---------------+--------------+--------------------------------+
| state | string | The state of the task - valid values are: NEW, SCHEDULED, RUNNING, SUCCEEDED, FAILED, KILL_WAIT, KILLED
*---------------+--------------+--------------------------------+
| type | string | The task type - MAP or REDUCE|
*---------------+--------------+--------------------------------+
| successfulAttempt | string | The id of the last successful attempt |
*---------------+--------------+--------------------------------+
| progress | float | The progress of the task as a percent|
*---------------+--------------+--------------------------------+
| startTime | long | The time in which the task started (in ms since epoch) or -1 if it was never started |
*---------------+--------------+--------------------------------+
| finishTime | long | The time in which the task finished (in ms since epoch)|
*---------------+--------------+--------------------------------+
| elapsedTime | long | The elapsed time since the application started (in ms)|
*---------------+--------------+--------------------------------+
*** Response Examples
<<JSON response>>
HTTP Request:
------
GET http://<history server http address:port>/ws/v1/history/mapreduce/jobs/job_1326381300833_2_2/tasks/task_1326381300833_2_2_m_0
------
Response Header:
+---+
HTTP/1.1 200 OK
Content-Type: application/json
Transfer-Encoding: chunked
Server: Jetty(6.1.26)
+---+
Response Body:
+---+
{
"task" : {
"progress" : 100,
"elapsedTime" : 6777,
"state" : "SUCCEEDED",
"startTime" : 1326381446541,
"id" : "task_1326381300833_2_2_m_0",
"type" : "MAP",
"successfulAttempt" : "attempt_1326381300833_2_2_m_0_0",
"finishTime" : 1326381453318
}
}
+---+
<<XML response>>
HTTP Request:
------
GET http://<history server http address:port>/ws/v1/history/mapreduce/jobs/job_1326381300833_2_2/tasks/task_1326381300833_2_2_m_0
Accept: application/xml
------
Response Header:
+---+
HTTP/1.1 200 OK
Content-Type: application/xml
Content-Length: 299
Server: Jetty(6.1.26)
+---+
Response Body:
+---+
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<task>
<startTime>1326381446541</startTime>
<finishTime>1326381453318</finishTime>
<elapsedTime>6777</elapsedTime>
<progress>100.0</progress>
<id>task_1326381300833_2_2_m_0</id>
<state>SUCCEEDED</state>
<type>MAP</type>
<successfulAttempt>attempt_1326381300833_2_2_m_0_0</successfulAttempt>
</task>
+---+
** Task Counters API
With the task counters API, you can object a collection of resources that represent all the counters for that task.
*** URI
------
* http://<history server http address:port>/ws/v1/history/mapreduce/jobs/{jobid}/tasks/{taskid}/counters
------
*** HTTP Operations Supported
------
* GET
------
*** Query Parameters Supported
------
None
------
*** Elements of the <jobTaskCounters> object
*---------------+--------------+-------------------------------+
|| Item || Data Type || Description |
*---------------+--------------+-------------------------------+
| id | string | The task id |
*---------------+--------------+-------------------------------+
| taskcounterGroup | array of counterGroup objects(JSON)/zero or more counterGroup objects(XML) | A collection of counter group objects |
*---------------+--------------+-------------------------------+
*** Elements of the <counterGroup> object
*---------------+--------------+-------------------------------+
|| Item || Data Type || Description |
*---------------+--------------+-------------------------------+
| counterGroupName | string | The name of the counter group |
*---------------+--------------+-------------------------------+
| counter | array of counter objects(JSON)/zero or more counter objects(XML) | A collection of counter objects |
*---------------+--------------+-------------------------------+
*** Elements of the <counter> object
*---------------+--------------+-------------------------------+
|| Item || Data Type || Description |
*---------------+--------------+-------------------------------+
| name | string | The name of the counter |
*---------------+--------------+-------------------------------+
| value | long | The value of the counter |
*---------------+--------------+-------------------------------+
*** Response Examples
<<JSON response>>
HTTP Request:
------
GET http://<history server http address:port>/ws/v1/history/mapreduce/jobs/job_1326381300833_2_2/tasks/task_1326381300833_2_2_m_0/counters
------
Response Header:
+---+
HTTP/1.1 200 OK
Content-Type: application/json
Transfer-Encoding: chunked
Server: Jetty(6.1.26)
+---+
Response Body:
+---+
{
"jobTaskCounters" : {
"id" : "task_1326381300833_2_2_m_0",
"taskCounterGroup" : [
{
"counterGroupName" : "org.apache.hadoop.mapreduce.FileSystemCounter",
"counter" : [
{
"value" : 2363,
"name" : "FILE_BYTES_READ"
},
{
"value" : 54372,
"name" : "FILE_BYTES_WRITTEN"
},
{
"value" : 0,
"name" : "FILE_READ_OPS"
},
{
"value" : 0,
"name" : "FILE_LARGE_READ_OPS"
},
{
"value" : 0,
"name" : "FILE_WRITE_OPS"
},
{
"value" : 0,
"name" : "HDFS_BYTES_READ"
},
{
"value" : 0,
"name" : "HDFS_BYTES_WRITTEN"
},
{
"value" : 0,
"name" : "HDFS_READ_OPS"
},
{
"value" : 0,
"name" : "HDFS_LARGE_READ_OPS"
},
{
"value" : 0,
"name" : "HDFS_WRITE_OPS"
}
]
},
{
"counterGroupName" : "org.apache.hadoop.mapreduce.TaskCounter",
"counter" : [
{
"value" : 0,
"name" : "COMBINE_INPUT_RECORDS"
},
{
"value" : 0,
"name" : "COMBINE_OUTPUT_RECORDS"
},
{
"value" : 460,
"name" : "REDUCE_INPUT_GROUPS"
},
{
"value" : 2235,
"name" : "REDUCE_SHUFFLE_BYTES"
},
{
"value" : 460,
"name" : "REDUCE_INPUT_RECORDS"
},
{
"value" : 0,
"name" : "REDUCE_OUTPUT_RECORDS"
},
{
"value" : 0,
"name" : "SPILLED_RECORDS"
},
{
"value" : 1,
"name" : "SHUFFLED_MAPS"
},
{
"value" : 0,
"name" : "FAILED_SHUFFLE"
},
{
"value" : 1,
"name" : "MERGED_MAP_OUTPUTS"
},
{
"value" : 26,
"name" : "GC_TIME_MILLIS"
},
{
"value" : 860,
"name" : "CPU_MILLISECONDS"
},
{
"value" : 107839488,
"name" : "PHYSICAL_MEMORY_BYTES"
},
{
"value" : 1123147776,
"name" : "VIRTUAL_MEMORY_BYTES"
},
{
"value" : 57475072,
"name" : "COMMITTED_HEAP_BYTES"
}
]
},
{
"counterGroupName" : "Shuffle Errors",
"counter" : [
{
"value" : 0,
"name" : "BAD_ID"
},
{
"value" : 0,
"name" : "CONNECTION"
},
{
"value" : 0,
"name" : "IO_ERROR"
},
{
"value" : 0,
"name" : "WRONG_LENGTH"
},
{
"value" : 0,
"name" : "WRONG_MAP"
},
{
"value" : 0,
"name" : "WRONG_REDUCE"
}
]
},
{
"counterGroupName" : "org.apache.hadoop.mapreduce.lib.output.FileOutputFormatCounter",
"counter" : [
{
"value" : 0,
"name" : "BYTES_WRITTEN"
}
]
}
]
}
}
+---+
<<XML response>>
HTTP Request:
------
GET http://<history server http address:port>/ws/v1/history/mapreduce/jobs/job_1326381300833_2_2/tasks/task_1326381300833_2_2_m_0/counters
Accept: application/xml
------
Response Header:
+---+
HTTP/1.1 200 OK
Content-Type: application/xml
Content-Length: 2660
Server: Jetty(6.1.26)
+---+
Response Body:
+---+
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<jobTaskCounters>
<id>task_1326381300833_2_2_m_0</id>
<taskCounterGroup>
<counterGroupName>org.apache.hadoop.mapreduce.FileSystemCounter</counterGroupName>
<counter>
<name>FILE_BYTES_READ</name>
<value>2363</value>
</counter>
<counter>
<name>FILE_BYTES_WRITTEN</name>
<value>54372</value>
</counter>
<counter>
<name>FILE_READ_OPS</name>
<value>0</value>
</counter>
<counter>
<name>FILE_LARGE_READ_OPS</name>
<value>0</value>
</counter>
<counter>
<name>FILE_WRITE_OPS</name>
<value>0</value>
</counter>
<counter>
<name>HDFS_BYTES_READ</name>
<value>0</value>
</counter>
<counter>
<name>HDFS_BYTES_WRITTEN</name>
<value>0</value>
</counter>
<counter>
<name>HDFS_READ_OPS</name>
<value>0</value>
</counter>
<counter>
<name>HDFS_LARGE_READ_OPS</name>
<value>0</value>
</counter>
<counter>
<name>HDFS_WRITE_OPS</name>
<value>0</value>
</counter>
</taskCounterGroup>
<taskCounterGroup>
<counterGroupName>org.apache.hadoop.mapreduce.TaskCounter</counterGroupName>
<counter>
<name>COMBINE_INPUT_RECORDS</name>
<value>0</value>
</counter>
<counter>
<name>COMBINE_OUTPUT_RECORDS</name>
<value>0</value>
</counter>
<counter>
<name>REDUCE_INPUT_GROUPS</name>
<value>460</value>
</counter>
<counter>
<name>REDUCE_SHUFFLE_BYTES</name>
<value>2235</value>
</counter>
<counter>
<name>REDUCE_INPUT_RECORDS</name>
<value>460</value>
</counter>
<counter>
<name>REDUCE_OUTPUT_RECORDS</name>
<value>0</value>
</counter>
<counter>
<name>SPILLED_RECORDS</name>
<value>0</value>
</counter>
<counter>
<name>SHUFFLED_MAPS</name>
<value>1</value>
</counter>
<counter>
<name>FAILED_SHUFFLE</name>
<value>0</value>
</counter>
<counter>
<name>MERGED_MAP_OUTPUTS</name>
<value>1</value>
</counter>
<counter>
<name>GC_TIME_MILLIS</name>
<value>26</value>
</counter>
<counter>
<name>CPU_MILLISECONDS</name>
<value>860</value>
</counter>
<counter>
<name>PHYSICAL_MEMORY_BYTES</name>
<value>107839488</value>
</counter>
<counter>
<name>VIRTUAL_MEMORY_BYTES</name>
<value>1123147776</value>
</counter>
<counter>
<name>COMMITTED_HEAP_BYTES</name>
<value>57475072</value>
</counter>
</taskCounterGroup>
<taskCounterGroup>
<counterGroupName>Shuffle Errors</counterGroupName>
<counter>
<name>BAD_ID</name>
<value>0</value>
</counter>
<counter>
<name>CONNECTION</name>
<value>0</value>
</counter>
<counter>
<name>IO_ERROR</name>
<value>0</value>
</counter>
<counter>
<name>WRONG_LENGTH</name>
<value>0</value>
</counter>
<counter>
<name>WRONG_MAP</name>
<value>0</value>
</counter>
<counter>
<name>WRONG_REDUCE</name>
<value>0</value>
</counter>
</taskCounterGroup>
<taskCounterGroup>
<counterGroupName>org.apache.hadoop.mapreduce.lib.output.FileOutputFormatCounter</counterGroupName>
<counter>
<name>BYTES_WRITTEN</name>
<value>0</value>
</counter>
</taskCounterGroup>
</jobTaskCounters>
+---+
** Task Attempts API
With the task attempts API, you can obtain a collection of resources that represent a task attempt within a job. When you run a GET operation on this resource, you obtain a collection of Task Attempt Objects.
*** URI
------
* http://<history server http address:port>/ws/v1/history/mapreduce/jobs/{jobid}/tasks/{taskid}/attempts
------
*** HTTP Operations Supported
------
* GET
------
*** Query Parameters Supported
------
None
------
*** Elements of the <taskAttempts> object
When you make a request for the list of task attempts, the information will be returned as an array of task attempt objects.
See also {{Task Attempt API}} for syntax of the task object.
*---------------+--------------+-------------------------------+
|| Item || Data Type || Description |
*---------------+--------------+-------------------------------+
| taskAttempt | array of task attempt objects(JSON)/zero or more task attempt objects(XML) | The collection of task attempt objects |
*---------------+--------------+--------------------------------+
*** Response Examples
<<JSON response>>
HTTP Request:
------
GET http://<history server http address:port>/ws/v1/history/mapreduce/jobs/job_1326381300833_2_2/tasks/task_1326381300833_2_2_m_0/attempts
------
Response Header:
+---+
HTTP/1.1 200 OK
Content-Type: application/json
Transfer-Encoding: chunked
Server: Jetty(6.1.26)
+---+
Response Body:
+---+
{
"taskAttempts" : {
"taskAttempt" : [
{
"assignedContainerId" : "container_1326381300833_0002_01_000002",
"progress" : 100,
"elapsedTime" : 2638,
"state" : "SUCCEEDED",
"diagnostics" : "",
"rack" : "/98.139.92.0",
"nodeHttpAddress" : "host.domain.com:8042",
"startTime" : 1326381450680,
"id" : "attempt_1326381300833_2_2_m_0_0",
"type" : "MAP",
"finishTime" : 1326381453318
}
]
}
}
+---+
<<XML response>>
HTTP Request:
------
GET http://<history server http address:port>/ws/v1/history/mapreduce/jobs/job_1326381300833_2_2/tasks/task_1326381300833_2_2_m_0/attempts
Accept: application/xml
------
Response Header:
+---+
HTTP/1.1 200 OK
Content-Type: application/xml
Content-Length: 537
Server: Jetty(6.1.26)
+---+
Response Body:
+---+
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<taskAttempts>
<taskAttempt>
<startTime>1326381450680</startTime>
<finishTime>1326381453318</finishTime>
<elapsedTime>2638</elapsedTime>
<progress>100.0</progress>
<id>attempt_1326381300833_2_2_m_0_0</id>
<rack>/98.139.92.0</rack>
<state>SUCCEEDED</state>
<nodeHttpAddress>host.domain.com:8042</nodeHttpAddress>
<diagnostics/>
<type>MAP</type>
<assignedContainerId>container_1326381300833_0002_01_000002</assignedContainerId>
</taskAttempt>
</taskAttempts>
+---+
** {Task Attempt API}
A Task Attempt resource contains information about a particular task attempt within a job.
*** URI
Use the following URI to obtain an Task Attempt Object, from a task identified by the {attemptid} value.
------
* http://<history server http address:port>/ws/v1/history/mapreduce/jobs/{jobid}/tasks/{taskid}/attempt/{attemptid}
------
*** HTTP Operations Supported
------
* GET
------
*** Query Parameters Supported
------
None
------
*** Elements of the <taskAttempt> object
*---------------+--------------+-------------------------------+
|| Item || Data Type || Description |
*---------------+--------------+-------------------------------+
| id | string | The task id |
*---------------+--------------+--------------------------------+
| rack | string | The rack |
*---------------+--------------+--------------------------------+
| state | string | The state of the task attempt - valid values are: NEW, UNASSIGNED, ASSIGNED, RUNNING, COMMIT_PENDING, SUCCESS_CONTAINER_CLEANUP, SUCCEEDED, FAIL_CONTAINER_CLEANUP, FAIL_TASK_CLEANUP, FAILED, KILL_CONTAINER_CLEANUP, KILL_TASK_CLEANUP, KILLED |
*---------------+--------------+--------------------------------+
| type | string | The type of task |
*---------------+--------------+--------------------------------+
| assignedContainerId | string | The container id this attempt is assigned to|
*---------------+--------------+--------------------------------+
| nodeHttpAddress | string | The http address of the node this task attempt ran on |
*---------------+--------------+--------------------------------+
| diagnostics| string | A diagnostics message |
*---------------+--------------+--------------------------------+
| progress | float | The progress of the task attempt as a percent|
*---------------+--------------+--------------------------------+
| startTime | long | The time in which the task attempt started (in ms since epoch)|
*---------------+--------------+--------------------------------+
| finishTime | long | The time in which the task attempt finished (in ms since epoch)|
*---------------+--------------+--------------------------------+
| elapsedTime | long | The elapsed time since the task attempt started (in ms)|
*---------------+--------------+--------------------------------+
For reduce task attempts you also have the following fields:
*---------------+--------------+-------------------------------+
|| Item || Data Type || Description |
*---------------+--------------+-------------------------------+
| shuffleFinishTime | long | The time at which shuffle finished (in ms since epoch)|
*---------------+--------------+--------------------------------+
| mergeFinishTime | long | The time at which merge finished (in ms since epoch)|
*---------------+--------------+--------------------------------+
| elapsedShuffleTime | long | The time it took for the shuffle phase to complete (time in ms between reduce task start and shuffle finish)|
*---------------+--------------+--------------------------------+
| elapsedMergeTime | long | The time it took for the merge phase to complete (time in ms between the shuffle finish and merge finish)|
*---------------+--------------+--------------------------------+
| elapsedReduceTime | long | The time it took for the reduce phase to complete (time in ms between merge finish to end of reduce task)|
*---------------+--------------+--------------------------------+
*** Response Examples
<<JSON response>>
HTTP Request:
------
GET http://<history server http address:port>/ws/v1/history/mapreduce/jobs/job_1326381300833_2_2/tasks/task_1326381300833_2_2_m_0/attempts/attempt_1326381300833_2_2_m_0_0
------
Response Header:
+---+
HTTP/1.1 200 OK
Content-Type: application/json
Transfer-Encoding: chunked
Server: Jetty(6.1.26)
+---+
Response Body:
+---+
{
"taskAttempt" : {
"assignedContainerId" : "container_1326381300833_0002_01_000002",
"progress" : 100,
"elapsedTime" : 2638,
"state" : "SUCCEEDED",
"diagnostics" : "",
"rack" : "/98.139.92.0",
"nodeHttpAddress" : "host.domain.com:8042",
"startTime" : 1326381450680,
"id" : "attempt_1326381300833_2_2_m_0_0",
"type" : "MAP",
"finishTime" : 1326381453318
}
}
+---+
<<XML response>>
HTTP Request:
------
GET http://<history server http address:port>/ws/v1/history/mapreduce/jobs/job_1326381300833_2_2/tasks/task_1326381300833_2_2_m_0/attempts/attempt_1326381300833_2_2_m_0_0
Accept: application/xml
------
Response Header:
+---+
HTTP/1.1 200 OK
Content-Type: application/xml
Content-Length: 691
Server: Jetty(6.1.26)
+---+
Response Body:
+---+
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<taskAttempt>
<startTime>1326381450680</startTime>
<finishTime>1326381453318</finishTime>
<elapsedTime>2638</elapsedTime>
<progress>100.0</progress>
<id>attempt_1326381300833_2_2_m_0_0</id>
<rack>/98.139.92.0</rack>
<state>SUCCEEDED</state>
<nodeHttpAddress>host.domain.com:8042</nodeHttpAddress>
<diagnostics/>
<type>MAP</type>
<assignedContainerId>container_1326381300833_0002_01_000002</assignedContainerId>
</taskAttempt>
+---+
** Task Attempt Counters API
With the task attempt counters API, you can object a collection of resources that represent al the counters for that task attempt.
*** URI
------
* http://<history server http address:port>/ws/v1/history/mapreduce/jobs/{jobid}/tasks/{taskid}/attempt/{attemptid}/counters
------
*** HTTP Operations Supported
------
* GET
------
*** Query Parameters Supported
------
None
------
*** Elements of the <jobTaskAttemptCounters> object
*---------------+--------------+-------------------------------+
|| Item || Data Type || Description |
*---------------+--------------+-------------------------------+
| id | string | The task attempt id |
*---------------+--------------+-------------------------------+
| taskAttemptcounterGroup | array of task attempt counterGroup objects(JSON)/zero or more task attempt counterGroup objects(XML) | A collection of task attempt counter group objects |
*---------------+--------------+-------------------------------+
*** Elements of the <taskAttemptCounterGroup> object
*---------------+--------------+-------------------------------+
|| Item || Data Type || Description |
*---------------+--------------+-------------------------------+
| counterGroupName | string | The name of the counter group |
*---------------+--------------+-------------------------------+
| counter | array of counter objects(JSON)/zero or more counter objects(XML) | A collection of counter objects |
*---------------+--------------+-------------------------------+
*** Elements of the <counter> object
*---------------+--------------+-------------------------------+
|| Item || Data Type || Description |
*---------------+--------------+-------------------------------+
| name | string | The name of the counter |
*---------------+--------------+-------------------------------+
| value | long | The value of the counter |
*---------------+--------------+-------------------------------+
*** Response Examples
<<JSON response>>
HTTP Request:
------
GET http://<history server http address:port>/ws/v1/history/mapreduce/jobs/job_1326381300833_2_2/tasks/task_1326381300833_2_2_m_0/attempts/attempt_1326381300833_2_2_m_0_0/counters
------
Response Header:
+---+
HTTP/1.1 200 OK
Content-Type: application/json
Transfer-Encoding: chunked
Server: Jetty(6.1.26)
+---+
Response Body:
+---+
{
"jobTaskAttemptCounters" : {
"taskAttemptCounterGroup" : [
{
"counterGroupName" : "org.apache.hadoop.mapreduce.FileSystemCounter",
"counter" : [
{
"value" : 2363,
"name" : "FILE_BYTES_READ"
},
{
"value" : 54372,
"name" : "FILE_BYTES_WRITTEN"
},
{
"value" : 0,
"name" : "FILE_READ_OPS"
},
{
"value" : 0,
"name" : "FILE_LARGE_READ_OPS"
},
{
"value" : 0,
"name" : "FILE_WRITE_OPS"
},
{
"value" : 0,
"name" : "HDFS_BYTES_READ"
},
{
"value" : 0,
"name" : "HDFS_BYTES_WRITTEN"
},
{
"value" : 0,
"name" : "HDFS_READ_OPS"
},
{
"value" : 0,
"name" : "HDFS_LARGE_READ_OPS"
},
{
"value" : 0,
"name" : "HDFS_WRITE_OPS"
}
]
},
{
"counterGroupName" : "org.apache.hadoop.mapreduce.TaskCounter",
"counter" : [
{
"value" : 0,
"name" : "COMBINE_INPUT_RECORDS"
},
{
"value" : 0,
"name" : "COMBINE_OUTPUT_RECORDS"
},
{
"value" : 460,
"name" : "REDUCE_INPUT_GROUPS"
},
{
"value" : 2235,
"name" : "REDUCE_SHUFFLE_BYTES"
},
{
"value" : 460,
"name" : "REDUCE_INPUT_RECORDS"
},
{
"value" : 0,
"name" : "REDUCE_OUTPUT_RECORDS"
},
{
"value" : 0,
"name" : "SPILLED_RECORDS"
},
{
"value" : 1,
"name" : "SHUFFLED_MAPS"
},
{
"value" : 0,
"name" : "FAILED_SHUFFLE"
},
{
"value" : 1,
"name" : "MERGED_MAP_OUTPUTS"
},
{
"value" : 26,
"name" : "GC_TIME_MILLIS"
},
{
"value" : 860,
"name" : "CPU_MILLISECONDS"
},
{
"value" : 107839488,
"name" : "PHYSICAL_MEMORY_BYTES"
},
{
"value" : 1123147776,
"name" : "VIRTUAL_MEMORY_BYTES"
},
{
"value" : 57475072,
"name" : "COMMITTED_HEAP_BYTES"
}
]
},
{
"counterGroupName" : "Shuffle Errors",
"counter" : [
{
"value" : 0,
"name" : "BAD_ID"
},
{
"value" : 0,
"name" : "CONNECTION"
},
{
"value" : 0,
"name" : "IO_ERROR"
},
{
"value" : 0,
"name" : "WRONG_LENGTH"
},
{
"value" : 0,
"name" : "WRONG_MAP"
},
{
"value" : 0,
"name" : "WRONG_REDUCE"
}
]
},
{
"counterGroupName" : "org.apache.hadoop.mapreduce.lib.output.FileOutputFormatCounter",
"counter" : [
{
"value" : 0,
"name" : "BYTES_WRITTEN"
}
]
}
],
"id" : "attempt_1326381300833_2_2_m_0_0"
}
}
+---+
<<XML response>>
HTTP Request:
------
GET http://<history server http address:port>/ws/v1/history/mapreduce/jobs/job_1326381300833_2_2/tasks/task_1326381300833_2_2_m_0/attempts/attempt_1326381300833_2_2_m_0_0/counters
Accept: application/xml
------
Response Header:
+---+
HTTP/1.1 200 OK
Content-Type: application/xml
Content-Length: 2735
Server: Jetty(6.1.26)
+---+
Response Body:
+---+
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<jobTaskAttemptCounters>
<id>attempt_1326381300833_2_2_m_0_0</id>
<taskAttemptCounterGroup>
<counterGroupName>org.apache.hadoop.mapreduce.FileSystemCounter</counterGroupName>
<counter>
<name>FILE_BYTES_READ</name>
<value>2363</value>
</counter>
<counter>
<name>FILE_BYTES_WRITTEN</name>
<value>54372</value>
</counter>
<counter>
<name>FILE_READ_OPS</name>
<value>0</value>
</counter>
<counter>
<name>FILE_LARGE_READ_OPS</name>
<value>0</value>
</counter>
<counter>
<name>FILE_WRITE_OPS</name>
<value>0</value>
</counter>
<counter>
<name>HDFS_BYTES_READ</name>
<value>0</value>
</counter>
<counter>
<name>HDFS_BYTES_WRITTEN</name>
<value>0</value>
</counter>
<counter>
<name>HDFS_READ_OPS</name>
<value>0</value>
</counter>
<counter>
<name>HDFS_LARGE_READ_OPS</name>
<value>0</value>
</counter>
<counter>
<name>HDFS_WRITE_OPS</name>
<value>0</value>
</counter>
</taskAttemptCounterGroup>
<taskAttemptCounterGroup>
<counterGroupName>org.apache.hadoop.mapreduce.TaskCounter</counterGroupName>
<counter>
<name>COMBINE_INPUT_RECORDS</name>
<value>0</value>
</counter>
<counter>
<name>COMBINE_OUTPUT_RECORDS</name>
<value>0</value>
</counter>
<counter>
<name>REDUCE_INPUT_GROUPS</name>
<value>460</value>
</counter>
<counter>
<name>REDUCE_SHUFFLE_BYTES</name>
<value>2235</value>
</counter>
<counter>
<name>REDUCE_INPUT_RECORDS</name>
<value>460</value>
</counter>
<counter>
<name>REDUCE_OUTPUT_RECORDS</name>
<value>0</value>
</counter>
<counter>
<name>SPILLED_RECORDS</name>
<value>0</value>
</counter>
<counter>
<name>SHUFFLED_MAPS</name>
<value>1</value>
</counter>
<counter>
<name>FAILED_SHUFFLE</name>
<value>0</value>
</counter>
<counter>
<name>MERGED_MAP_OUTPUTS</name>
<value>1</value>
</counter>
<counter>
<name>GC_TIME_MILLIS</name>
<value>26</value>
</counter>
<counter>
<name>CPU_MILLISECONDS</name>
<value>860</value>
</counter>
<counter>
<name>PHYSICAL_MEMORY_BYTES</name>
<value>107839488</value>
</counter>
<counter>
<name>VIRTUAL_MEMORY_BYTES</name>
<value>1123147776</value>
</counter>
<counter>
<name>COMMITTED_HEAP_BYTES</name>
<value>57475072</value>
</counter>
</taskAttemptCounterGroup>
<taskAttemptCounterGroup>
<counterGroupName>Shuffle Errors</counterGroupName>
<counter>
<name>BAD_ID</name>
<value>0</value>
</counter>
<counter>
<name>CONNECTION</name>
<value>0</value>
</counter>
<counter>
<name>IO_ERROR</name>
<value>0</value>
</counter>
<counter>
<name>WRONG_LENGTH</name>
<value>0</value>
</counter>
<counter>
<name>WRONG_MAP</name>
<value>0</value>
</counter>
<counter>
<name>WRONG_REDUCE</name>
<value>0</value>
</counter>
</taskAttemptCounterGroup>
<taskAttemptCounterGroup>
<counterGroupName>org.apache.hadoop.mapreduce.lib.output.FileOutputFormatCounter</counterGroupName>
<counter>
<name>BYTES_WRITTEN</name>
<value>0</value>
</counter>
</taskAttemptCounterGroup>
</jobTaskAttemptCounters>
+---+