MAPREDUCE-6305. AM/Task log page should be able to link back to the job. (Siqi Li via gera)
This commit is contained in:
parent
63d40d5286
commit
055cd5a9a1
|
@ -355,6 +355,9 @@ Release 2.8.0 - UNRELEASED
|
||||||
MAPREDUCE-6316. Task Attempt List entries should link to the task overview.
|
MAPREDUCE-6316. Task Attempt List entries should link to the task overview.
|
||||||
(Siqi Li via gera)
|
(Siqi Li via gera)
|
||||||
|
|
||||||
|
MAPREDUCE-6305. AM/Task log page should be able to link back to the job.
|
||||||
|
(Siqi Li via gera)
|
||||||
|
|
||||||
OPTIMIZATIONS
|
OPTIMIZATIONS
|
||||||
|
|
||||||
BUG FIXES
|
BUG FIXES
|
||||||
|
|
|
@ -18,9 +18,13 @@
|
||||||
|
|
||||||
package org.apache.hadoop.mapreduce.v2.hs.webapp;
|
package org.apache.hadoop.mapreduce.v2.hs.webapp;
|
||||||
|
|
||||||
|
import static org.apache.hadoop.yarn.webapp.YarnWebParams.ENTITY_STRING;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
||||||
import org.apache.hadoop.conf.Configuration;
|
import org.apache.hadoop.conf.Configuration;
|
||||||
|
import org.apache.hadoop.mapreduce.JobID;
|
||||||
|
import org.apache.hadoop.mapreduce.TaskAttemptID;
|
||||||
import org.apache.hadoop.mapreduce.v2.app.webapp.App;
|
import org.apache.hadoop.mapreduce.v2.app.webapp.App;
|
||||||
import org.apache.hadoop.mapreduce.v2.app.webapp.AppController;
|
import org.apache.hadoop.mapreduce.v2.app.webapp.AppController;
|
||||||
import org.apache.hadoop.yarn.webapp.View;
|
import org.apache.hadoop.yarn.webapp.View;
|
||||||
|
@ -33,7 +37,6 @@ import com.google.inject.Inject;
|
||||||
*/
|
*/
|
||||||
public class HsController extends AppController {
|
public class HsController extends AppController {
|
||||||
|
|
||||||
|
|
||||||
@Inject HsController(App app, Configuration conf, RequestContext ctx) {
|
@Inject HsController(App app, Configuration conf, RequestContext ctx) {
|
||||||
super(app, conf, ctx, "History");
|
super(app, conf, ctx, "History");
|
||||||
}
|
}
|
||||||
|
@ -175,6 +178,27 @@ public class HsController extends AppController {
|
||||||
* Render the logs page.
|
* Render the logs page.
|
||||||
*/
|
*/
|
||||||
public void logs() {
|
public void logs() {
|
||||||
|
String logEntity = $(ENTITY_STRING);
|
||||||
|
JobID jid = null;
|
||||||
|
try {
|
||||||
|
jid = JobID.forName(logEntity);
|
||||||
|
set(JOB_ID, logEntity);
|
||||||
|
requireJob();
|
||||||
|
} catch (Exception e) {
|
||||||
|
// fall below
|
||||||
|
}
|
||||||
|
|
||||||
|
if (jid == null) {
|
||||||
|
try {
|
||||||
|
TaskAttemptID taskAttemptId = TaskAttemptID.forName(logEntity);
|
||||||
|
set(TASK_ID, taskAttemptId.getTaskID().toString());
|
||||||
|
set(JOB_ID, taskAttemptId.getJobID().toString());
|
||||||
|
requireTask();
|
||||||
|
requireJob();
|
||||||
|
} catch (Exception e) {
|
||||||
|
// fall below
|
||||||
|
}
|
||||||
|
}
|
||||||
render(HsLogsPage.class);
|
render(HsLogsPage.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -18,7 +18,6 @@
|
||||||
|
|
||||||
package org.apache.hadoop.mapreduce.v2.hs.webapp;
|
package org.apache.hadoop.mapreduce.v2.hs.webapp;
|
||||||
|
|
||||||
import static org.apache.hadoop.mapreduce.v2.app.webapp.AMParams.TASK_ID;
|
|
||||||
import static org.apache.hadoop.yarn.webapp.view.JQueryUI.*;
|
import static org.apache.hadoop.yarn.webapp.view.JQueryUI.*;
|
||||||
|
|
||||||
import org.apache.hadoop.mapreduce.v2.app.webapp.CountersBlock;
|
import org.apache.hadoop.mapreduce.v2.app.webapp.CountersBlock;
|
||||||
|
@ -35,12 +34,7 @@ public class HsCountersPage extends HsView {
|
||||||
*/
|
*/
|
||||||
@Override protected void preHead(Page.HTML<_> html) {
|
@Override protected void preHead(Page.HTML<_> html) {
|
||||||
commonPreHead(html);
|
commonPreHead(html);
|
||||||
String tid = $(TASK_ID);
|
setActiveNavColumnForTask();
|
||||||
String activeNav = "2";
|
|
||||||
if(tid == null || tid.isEmpty()) {
|
|
||||||
activeNav = "1";
|
|
||||||
}
|
|
||||||
set(initID(ACCORDION, "nav"), "{autoHeight:false, active:"+activeNav+"}");
|
|
||||||
set(DATATABLES_SELECTOR, "#counters .dt-counters");
|
set(DATATABLES_SELECTOR, "#counters .dt-counters");
|
||||||
set(initSelector(DATATABLES),
|
set(initSelector(DATATABLES),
|
||||||
"{bJQueryUI:true, sDom:'t', iDisplayLength:-1}");
|
"{bJQueryUI:true, sDom:'t', iDisplayLength:-1}");
|
||||||
|
|
|
@ -17,9 +17,6 @@
|
||||||
*/
|
*/
|
||||||
package org.apache.hadoop.mapreduce.v2.hs.webapp;
|
package org.apache.hadoop.mapreduce.v2.hs.webapp;
|
||||||
|
|
||||||
import static org.apache.hadoop.yarn.webapp.YarnWebParams.CONTAINER_ID;
|
|
||||||
import static org.apache.hadoop.yarn.webapp.YarnWebParams.ENTITY_STRING;
|
|
||||||
|
|
||||||
import org.apache.hadoop.yarn.webapp.SubView;
|
import org.apache.hadoop.yarn.webapp.SubView;
|
||||||
import org.apache.hadoop.yarn.webapp.log.AggregatedLogsBlock;
|
import org.apache.hadoop.yarn.webapp.log.AggregatedLogsBlock;
|
||||||
|
|
||||||
|
@ -30,14 +27,8 @@ public class HsLogsPage extends HsView {
|
||||||
* @see org.apache.hadoop.mapreduce.v2.hs.webapp.HsView#preHead(org.apache.hadoop.yarn.webapp.hamlet.Hamlet.HTML)
|
* @see org.apache.hadoop.mapreduce.v2.hs.webapp.HsView#preHead(org.apache.hadoop.yarn.webapp.hamlet.Hamlet.HTML)
|
||||||
*/
|
*/
|
||||||
@Override protected void preHead(Page.HTML<_> html) {
|
@Override protected void preHead(Page.HTML<_> html) {
|
||||||
String logEntity = $(ENTITY_STRING);
|
|
||||||
if (logEntity == null || logEntity.isEmpty()) {
|
|
||||||
logEntity = $(CONTAINER_ID);
|
|
||||||
}
|
|
||||||
if (logEntity == null || logEntity.isEmpty()) {
|
|
||||||
logEntity = "UNKNOWN";
|
|
||||||
}
|
|
||||||
commonPreHead(html);
|
commonPreHead(html);
|
||||||
|
setActiveNavColumnForTask();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -18,7 +18,6 @@
|
||||||
|
|
||||||
package org.apache.hadoop.mapreduce.v2.hs.webapp;
|
package org.apache.hadoop.mapreduce.v2.hs.webapp;
|
||||||
|
|
||||||
import static org.apache.hadoop.mapreduce.v2.app.webapp.AMParams.TASK_ID;
|
|
||||||
import static org.apache.hadoop.yarn.webapp.view.JQueryUI.*;
|
import static org.apache.hadoop.yarn.webapp.view.JQueryUI.*;
|
||||||
|
|
||||||
import org.apache.hadoop.mapreduce.v2.app.webapp.SingleCounterBlock;
|
import org.apache.hadoop.mapreduce.v2.app.webapp.SingleCounterBlock;
|
||||||
|
@ -35,12 +34,7 @@ public class HsSingleCounterPage extends HsView {
|
||||||
*/
|
*/
|
||||||
@Override protected void preHead(Page.HTML<_> html) {
|
@Override protected void preHead(Page.HTML<_> html) {
|
||||||
commonPreHead(html);
|
commonPreHead(html);
|
||||||
String tid = $(TASK_ID);
|
setActiveNavColumnForTask();
|
||||||
String activeNav = "2";
|
|
||||||
if(tid == null || tid.isEmpty()) {
|
|
||||||
activeNav = "1";
|
|
||||||
}
|
|
||||||
set(initID(ACCORDION, "nav"), "{autoHeight:false, active:"+activeNav+"}");
|
|
||||||
set(DATATABLES_ID, "singleCounter");
|
set(DATATABLES_ID, "singleCounter");
|
||||||
set(initID(DATATABLES, "singleCounter"), counterTableInit());
|
set(initID(DATATABLES, "singleCounter"), counterTableInit());
|
||||||
setTableStyles(html, "singleCounter");
|
setTableStyles(html, "singleCounter");
|
||||||
|
|
|
@ -18,6 +18,7 @@
|
||||||
|
|
||||||
package org.apache.hadoop.mapreduce.v2.hs.webapp;
|
package org.apache.hadoop.mapreduce.v2.hs.webapp;
|
||||||
|
|
||||||
|
import static org.apache.hadoop.mapreduce.v2.app.webapp.AMParams.TASK_ID;
|
||||||
import static org.apache.hadoop.yarn.webapp.view.JQueryUI.ACCORDION;
|
import static org.apache.hadoop.yarn.webapp.view.JQueryUI.ACCORDION;
|
||||||
import static org.apache.hadoop.yarn.webapp.view.JQueryUI.ACCORDION_ID;
|
import static org.apache.hadoop.yarn.webapp.view.JQueryUI.ACCORDION_ID;
|
||||||
import static org.apache.hadoop.yarn.webapp.view.JQueryUI.DATATABLES;
|
import static org.apache.hadoop.yarn.webapp.view.JQueryUI.DATATABLES;
|
||||||
|
@ -55,6 +56,18 @@ public class HsView extends TwoColumnLayout {
|
||||||
set(initID(ACCORDION, "nav"), "{autoHeight:false, active:0}");
|
set(initID(ACCORDION, "nav"), "{autoHeight:false, active:0}");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Determine which navigation column is active.
|
||||||
|
*/
|
||||||
|
protected void setActiveNavColumnForTask() {
|
||||||
|
String tid = $(TASK_ID);
|
||||||
|
String activeNav = "2";
|
||||||
|
if((tid == null || tid.isEmpty())) {
|
||||||
|
activeNav = "1";
|
||||||
|
}
|
||||||
|
set(initID(ACCORDION, "nav"), "{autoHeight:false, active:"+activeNav+"}");
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* (non-Javadoc)
|
* (non-Javadoc)
|
||||||
* @see org.apache.hadoop.yarn.webapp.view.TwoColumnLayout#nav()
|
* @see org.apache.hadoop.yarn.webapp.view.TwoColumnLayout#nav()
|
||||||
|
|
Loading…
Reference in New Issue