|
@@ -30,6 +30,7 @@ import static org.apache.hadoop.yarn.webapp.view.JQueryUI.tableInit;
|
|
import java.util.Collection;
|
|
import java.util.Collection;
|
|
|
|
|
|
import org.apache.commons.text.StringEscapeUtils;
|
|
import org.apache.commons.text.StringEscapeUtils;
|
|
|
|
+import org.apache.hadoop.conf.Configuration;
|
|
import org.apache.hadoop.mapreduce.v2.api.records.TaskId;
|
|
import org.apache.hadoop.mapreduce.v2.api.records.TaskId;
|
|
import org.apache.hadoop.mapreduce.v2.api.records.TaskType;
|
|
import org.apache.hadoop.mapreduce.v2.api.records.TaskType;
|
|
import org.apache.hadoop.mapreduce.v2.app.job.TaskAttempt;
|
|
import org.apache.hadoop.mapreduce.v2.app.job.TaskAttempt;
|
|
@@ -38,6 +39,7 @@ import org.apache.hadoop.mapreduce.v2.app.webapp.dao.MapTaskAttemptInfo;
|
|
import org.apache.hadoop.mapreduce.v2.app.webapp.dao.TaskAttemptInfo;
|
|
import org.apache.hadoop.mapreduce.v2.app.webapp.dao.TaskAttemptInfo;
|
|
import org.apache.hadoop.mapreduce.v2.util.MRApps;
|
|
import org.apache.hadoop.mapreduce.v2.util.MRApps;
|
|
import org.apache.hadoop.mapreduce.v2.util.MRWebAppUtil;
|
|
import org.apache.hadoop.mapreduce.v2.util.MRWebAppUtil;
|
|
|
|
+import org.apache.hadoop.yarn.conf.YarnConfiguration;
|
|
import org.apache.hadoop.yarn.util.Times;
|
|
import org.apache.hadoop.yarn.util.Times;
|
|
import org.apache.hadoop.yarn.webapp.SubView;
|
|
import org.apache.hadoop.yarn.webapp.SubView;
|
|
import org.apache.hadoop.yarn.webapp.hamlet2.Hamlet;
|
|
import org.apache.hadoop.yarn.webapp.hamlet2.Hamlet;
|
|
@@ -61,10 +63,12 @@ public class HsTaskPage extends HsView {
|
|
*/
|
|
*/
|
|
static class AttemptsBlock extends HtmlBlock {
|
|
static class AttemptsBlock extends HtmlBlock {
|
|
final App app;
|
|
final App app;
|
|
|
|
+ final Configuration conf;
|
|
|
|
|
|
@Inject
|
|
@Inject
|
|
- AttemptsBlock(App ctx) {
|
|
|
|
|
|
+ AttemptsBlock(App ctx, Configuration conf) {
|
|
app = ctx;
|
|
app = ctx;
|
|
|
|
+ this.conf = conf;
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
@@ -152,13 +156,21 @@ public class HsTaskPage extends HsView {
|
|
StringEscapeUtils.escapeHtml4(ta.getStatus()))).append("\",\"")
|
|
StringEscapeUtils.escapeHtml4(ta.getStatus()))).append("\",\"")
|
|
|
|
|
|
.append("<a class='nodelink' href='" + MRWebAppUtil.getYARNWebappScheme() + nodeHttpAddr + "'>")
|
|
.append("<a class='nodelink' href='" + MRWebAppUtil.getYARNWebappScheme() + nodeHttpAddr + "'>")
|
|
- .append(nodeRackName + "/" + nodeHttpAddr + "</a>\",\"")
|
|
|
|
-
|
|
|
|
- .append("<a class='logslink' href='").append(url("logs", nodeIdString
|
|
|
|
- , containerIdString, taid, app.getJob().getUserName()))
|
|
|
|
- .append("'>logs</a>\",\"")
|
|
|
|
-
|
|
|
|
- .append(attemptStartTime).append("\",\"");
|
|
|
|
|
|
+ .append(nodeRackName + "/" + nodeHttpAddr + "</a>\",\"");
|
|
|
|
+
|
|
|
|
+ String logsUrl = url("logs", nodeIdString, containerIdString, taid,
|
|
|
|
+ app.getJob().getUserName());
|
|
|
|
+ if (!conf.getBoolean(YarnConfiguration.LOG_AGGREGATION_ENABLED,
|
|
|
|
+ YarnConfiguration.DEFAULT_LOG_AGGREGATION_ENABLED)) {
|
|
|
|
+ logsUrl =
|
|
|
|
+ url(MRWebAppUtil.getYARNWebappScheme(), nodeHttpAddr, "node",
|
|
|
|
+ "containerlogs", containerIdString,
|
|
|
|
+ app.getJob().getUserName());
|
|
|
|
+ }
|
|
|
|
+ attemptsTableData.append("<a class='logslink' href='").append(logsUrl)
|
|
|
|
+ .append("'>logs</a>\",\"");
|
|
|
|
+
|
|
|
|
+ attemptsTableData.append(attemptStartTime).append("\",\"");
|
|
|
|
|
|
if(type == TaskType.REDUCE) {
|
|
if(type == TaskType.REDUCE) {
|
|
attemptsTableData.append(shuffleFinishTime).append("\",\"")
|
|
attemptsTableData.append(shuffleFinishTime).append("\",\"")
|