You are viewing a plain text version of this content. The canonical link for it is here.
Posted to mapreduce-commits@hadoop.apache.org by ra...@apache.org on 2014/05/16 18:50:58 UTC

svn commit: r1595265 [2/2] - in /hadoop/common/trunk/hadoop-mapreduce-project/hadoop-mapreduce-client: hadoop-mapreduce-client-core/src/site/apt/ hadoop-mapreduce-client-hs/src/site/ hadoop-mapreduce-client-hs/src/site/apt/

Added: hadoop/common/trunk/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-hs/src/site/apt/HistoryServerRest.apt.vm
URL: http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-hs/src/site/apt/HistoryServerRest.apt.vm?rev=1595265&view=auto
==============================================================================
--- hadoop/common/trunk/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-hs/src/site/apt/HistoryServerRest.apt.vm (added)
+++ hadoop/common/trunk/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-hs/src/site/apt/HistoryServerRest.apt.vm Fri May 16 16:50:58 2014
@@ -0,0 +1,2672 @@
+~~ 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.
+
+  ---
+  MapReduce History Server REST API's.
+  ---
+  ---
+  ${maven.build.timestamp}
+
+MapReduce History Server REST API's.
+
+%{toc|section=1|fromDepth=0|toDepth=3}
+
+* Overview
+
+  The history server REST API's allow the user to get status on finished applications.
+
+* 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" : [
+         {
+            "submitTime" : 1326381344449,
+            "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
+         },
+         {
+            "submitTime" : 1326381446500
+            "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>
+    <submitTime>1326381344449</submitTime>
+    <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>
+    <submitTime>1326381446500</submitTime>
+    <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 |
+*---------------+--------------+-------------------------------+
+| submitTime | long | The time the job submitted (in ms since epoch)|
+*---------------+--------------+-------------------------------+
+| 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" : {
+      "submitTime":  1326381446500,
+      "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>
+  <submitTime>1326381446500</submitTime>
+  <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>
++---+