MAPREDUCE-3487. Fixed JobHistory web-UI to display links to single task's counters' page. Contributed by Jason Lowe.
git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/trunk@1215016 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
558185aecd
commit
c2fe4a7e83
|
@ -314,6 +314,9 @@ Release 0.23.1 - Unreleased
|
||||||
MAPREDUCE-3560. TestRMNodeTransitions is failing on trunk.
|
MAPREDUCE-3560. TestRMNodeTransitions is failing on trunk.
|
||||||
(Siddharth Seth via mahadev)
|
(Siddharth Seth via mahadev)
|
||||||
|
|
||||||
|
MAPREDUCE-3487. Fixed JobHistory web-UI to display links to single task's
|
||||||
|
counters' page. (Jason Lowe via vinodkv)
|
||||||
|
|
||||||
Release 0.23.0 - 2011-11-01
|
Release 0.23.0 - 2011-11-01
|
||||||
|
|
||||||
INCOMPATIBLE CHANGES
|
INCOMPATIBLE CHANGES
|
||||||
|
|
|
@ -120,7 +120,7 @@ public class CountersBlock extends HtmlBlock {
|
||||||
// Ditto
|
// Ditto
|
||||||
TR<TBODY<TABLE<TD<TR<TBODY<TABLE<DIV<Hamlet>>>>>>>> groupRow = group.
|
TR<TBODY<TABLE<TD<TR<TBODY<TABLE<DIV<Hamlet>>>>>>>> groupRow = group.
|
||||||
tr();
|
tr();
|
||||||
if (mg == null && rg == null) {
|
if (task == null && mg == null && rg == null) {
|
||||||
groupRow.td().$title(counter.getName())._(counter.getDisplayName()).
|
groupRow.td().$title(counter.getName())._(counter.getDisplayName()).
|
||||||
_();
|
_();
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -24,6 +24,7 @@ import java.util.TreeMap;
|
||||||
|
|
||||||
import org.apache.hadoop.mapreduce.v2.api.records.Counter;
|
import org.apache.hadoop.mapreduce.v2.api.records.Counter;
|
||||||
import org.apache.hadoop.mapreduce.v2.api.records.CounterGroup;
|
import org.apache.hadoop.mapreduce.v2.api.records.CounterGroup;
|
||||||
|
import org.apache.hadoop.mapreduce.v2.api.records.Counters;
|
||||||
import org.apache.hadoop.mapreduce.v2.api.records.JobId;
|
import org.apache.hadoop.mapreduce.v2.api.records.JobId;
|
||||||
import org.apache.hadoop.mapreduce.v2.api.records.TaskAttemptId;
|
import org.apache.hadoop.mapreduce.v2.api.records.TaskAttemptId;
|
||||||
import org.apache.hadoop.mapreduce.v2.api.records.TaskId;
|
import org.apache.hadoop.mapreduce.v2.api.records.TaskId;
|
||||||
|
@ -120,8 +121,9 @@ public class SingleCounterBlock extends HtmlBlock {
|
||||||
for(Map.Entry<TaskAttemptId, TaskAttempt> entry :
|
for(Map.Entry<TaskAttemptId, TaskAttempt> entry :
|
||||||
task.getAttempts().entrySet()) {
|
task.getAttempts().entrySet()) {
|
||||||
long value = 0;
|
long value = 0;
|
||||||
CounterGroup group = entry.getValue().getCounters()
|
Counters counters = entry.getValue().getCounters();
|
||||||
.getCounterGroup($(COUNTER_GROUP));
|
CounterGroup group = (counters != null)
|
||||||
|
? counters.getCounterGroup($(COUNTER_GROUP)) : null;
|
||||||
if(group != null) {
|
if(group != null) {
|
||||||
Counter c = group.getCounter($(COUNTER_NAME));
|
Counter c = group.getCounter($(COUNTER_NAME));
|
||||||
if(c != null) {
|
if(c != null) {
|
||||||
|
|
|
@ -31,6 +31,7 @@ import org.apache.hadoop.mapreduce.v2.app.AppContext;
|
||||||
import org.apache.hadoop.mapreduce.v2.app.MockJobs;
|
import org.apache.hadoop.mapreduce.v2.app.MockJobs;
|
||||||
import org.apache.hadoop.mapreduce.v2.app.job.Job;
|
import org.apache.hadoop.mapreduce.v2.app.job.Job;
|
||||||
import org.apache.hadoop.mapreduce.v2.app.job.Task;
|
import org.apache.hadoop.mapreduce.v2.app.job.Task;
|
||||||
|
import org.apache.hadoop.mapreduce.v2.app.job.TaskAttempt;
|
||||||
import org.apache.hadoop.mapreduce.v2.util.MRApps;
|
import org.apache.hadoop.mapreduce.v2.util.MRApps;
|
||||||
import org.apache.hadoop.yarn.Clock;
|
import org.apache.hadoop.yarn.Clock;
|
||||||
import org.apache.hadoop.yarn.api.records.ApplicationAttemptId;
|
import org.apache.hadoop.yarn.api.records.ApplicationAttemptId;
|
||||||
|
@ -153,7 +154,7 @@ public class TestAMWebApp {
|
||||||
e.getValue().getType();
|
e.getValue().getType();
|
||||||
Map<String, String> params = new HashMap<String, String>();
|
Map<String, String> params = new HashMap<String, String>();
|
||||||
params.put(AMParams.JOB_ID, MRApps.toString(jobId));
|
params.put(AMParams.JOB_ID, MRApps.toString(jobId));
|
||||||
params.put(AMParams.TASK_ID, e.getKey().toString());
|
params.put(AMParams.TASK_ID, MRApps.toString(e.getKey()));
|
||||||
params.put(AMParams.TASK_TYPE, MRApps.taskSymbol(e.getValue().getType()));
|
params.put(AMParams.TASK_TYPE, MRApps.taskSymbol(e.getValue().getType()));
|
||||||
return params;
|
return params;
|
||||||
}
|
}
|
||||||
|
@ -180,6 +181,32 @@ public class TestAMWebApp {
|
||||||
appContext, params);
|
appContext, params);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test public void testTaskCountersView() {
|
||||||
|
AppContext appContext = new TestAppContext();
|
||||||
|
Map<String, String> params = getTaskParams(appContext);
|
||||||
|
WebAppTests.testPage(CountersPage.class, AppContext.class,
|
||||||
|
appContext, params);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test public void testSingleTaskCounterView() {
|
||||||
|
AppContext appContext = new TestAppContext(0, 1, 1, 2);
|
||||||
|
Map<String, String> params = getTaskParams(appContext);
|
||||||
|
params.put(AMParams.COUNTER_GROUP,
|
||||||
|
"org.apache.hadoop.mapreduce.FileSystemCounter");
|
||||||
|
params.put(AMParams.COUNTER_NAME, "HDFS_WRITE_OPS");
|
||||||
|
|
||||||
|
// remove counters from one task attempt
|
||||||
|
// to test handling of missing counters
|
||||||
|
TaskId taskID = MRApps.toTaskID(params.get(AMParams.TASK_ID));
|
||||||
|
Job job = appContext.getJob(taskID.getJobId());
|
||||||
|
Task task = job.getTask(taskID);
|
||||||
|
TaskAttempt attempt = task.getAttempts().values().iterator().next();
|
||||||
|
attempt.getReport().setCounters(null);
|
||||||
|
|
||||||
|
WebAppTests.testPage(SingleCounterPage.class, AppContext.class,
|
||||||
|
appContext, params);
|
||||||
|
}
|
||||||
|
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
WebApps.$for("yarn", AppContext.class, new TestAppContext(0, 8, 88, 4)).
|
WebApps.$for("yarn", AppContext.class, new TestAppContext(0, 8, 88, 4)).
|
||||||
at(58888).inDevMode().start(new AMWebApp()).joinThread();
|
at(58888).inDevMode().start(new AMWebApp()).joinThread();
|
||||||
|
|
Loading…
Reference in New Issue