Author: bobby Date: Fri Nov 16 17:30:22 2012 New Revision: 1410498 URL: http://svn.apache.org/viewvc?rev=1410498&view=rev Log: MAPREDUCE-4802. Takes a long time to load the task list on the AM for large jobs (Ravi Prakash via bobby)
Modified: hadoop/common/trunk/hadoop-mapreduce-project/CHANGES.txt hadoop/common/trunk/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-app/src/main/java/org/apache/hadoop/mapreduce/v2/app/webapp/TasksBlock.java hadoop/common/trunk/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-app/src/main/java/org/apache/hadoop/mapreduce/v2/app/webapp/TasksPage.java hadoop/common/trunk/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-hs/src/main/java/org/apache/hadoop/mapreduce/v2/hs/webapp/HsJobsBlock.java hadoop/common/trunk/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-hs/src/main/java/org/apache/hadoop/mapreduce/v2/hs/webapp/HsTasksBlock.java Modified: hadoop/common/trunk/hadoop-mapreduce-project/CHANGES.txt URL: http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-mapreduce-project/CHANGES.txt?rev=1410498&r1=1410497&r2=1410498&view=diff ============================================================================== --- hadoop/common/trunk/hadoop-mapreduce-project/CHANGES.txt (original) +++ hadoop/common/trunk/hadoop-mapreduce-project/CHANGES.txt Fri Nov 16 17:30:22 2012 @@ -587,6 +587,9 @@ Release 0.23.6 - UNRELEASED BUG FIXES + MAPREDUCE-4802. Takes a long time to load the task list on the AM for + large jobs (Ravi Prakash via bobby) + Release 0.23.5 - UNRELEASED INCOMPATIBLE CHANGES Modified: hadoop/common/trunk/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-app/src/main/java/org/apache/hadoop/mapreduce/v2/app/webapp/TasksBlock.java URL: http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-app/src/main/java/org/apache/hadoop/mapreduce/v2/app/webapp/TasksBlock.java?rev=1410498&r1=1410497&r2=1410498&view=diff ============================================================================== --- hadoop/common/trunk/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-app/src/main/java/org/apache/hadoop/mapreduce/v2/app/webapp/TasksBlock.java (original) +++ hadoop/common/trunk/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-app/src/main/java/org/apache/hadoop/mapreduce/v2/app/webapp/TasksBlock.java Fri Nov 16 17:30:22 2012 @@ -21,15 +21,13 @@ package org.apache.hadoop.mapreduce.v2.a import static org.apache.hadoop.mapreduce.v2.app.webapp.AMParams.TASK_TYPE; import static org.apache.hadoop.yarn.util.StringHelper.join; import static org.apache.hadoop.yarn.util.StringHelper.percent; -import static org.apache.hadoop.yarn.webapp.view.JQueryUI._PROGRESSBAR; -import static org.apache.hadoop.yarn.webapp.view.JQueryUI._PROGRESSBAR_VALUE; +import static org.apache.hadoop.yarn.webapp.view.JQueryUI.C_PROGRESSBAR; +import static org.apache.hadoop.yarn.webapp.view.JQueryUI.C_PROGRESSBAR_VALUE; import org.apache.hadoop.mapreduce.v2.api.records.TaskType; import org.apache.hadoop.mapreduce.v2.app.job.Task; import org.apache.hadoop.mapreduce.v2.app.webapp.dao.TaskInfo; import org.apache.hadoop.mapreduce.v2.util.MRApps; -import org.apache.hadoop.util.StringUtils; -import org.apache.hadoop.yarn.util.Times; import org.apache.hadoop.yarn.webapp.hamlet.Hamlet; import org.apache.hadoop.yarn.webapp.hamlet.Hamlet.TABLE; import org.apache.hadoop.yarn.webapp.hamlet.Hamlet.TBODY; @@ -66,6 +64,8 @@ public class TasksBlock extends HtmlBloc th("Finish Time"). th("Elapsed Time")._()._(). tbody(); + StringBuilder tasksTableData = new StringBuilder("[\n"); + for (Task task : app.getJob().getTasks().values()) { if (type != null && task.getType() != type) { continue; @@ -73,31 +73,28 @@ public class TasksBlock extends HtmlBloc TaskInfo info = new TaskInfo(task); String tid = info.getId(); String pct = percent(info.getProgress() / 100); - long startTime = info.getStartTime(); - long finishTime = info.getFinishTime(); - long elapsed = info.getElapsedTime(); - tbody. - tr(). - td(). - br().$title(String.valueOf(info.getTaskNum()))._(). // sorting - a(url("task", tid), tid)._(). - td(). - br().$title(pct)._(). - div(_PROGRESSBAR). - $title(join(pct, '%')). // tooltip - div(_PROGRESSBAR_VALUE). - $style(join("width:", pct, '%'))._()._()._(). - td(info.getState()). - td(). - br().$title(String.valueOf(startTime))._(). - _(Times.format(startTime))._(). - td(). - br().$title(String.valueOf(finishTime))._(). - _(Times.format(finishTime))._(). - td(). - br().$title(String.valueOf(elapsed))._(). - _(StringUtils.formatTime(elapsed))._()._(); + tasksTableData.append("[\"<a href='").append(url("task", tid)) + .append("'>").append(tid).append("</a>\",\"") + //Progress bar + .append("<br title='").append(pct) + .append("'> <div class='").append(C_PROGRESSBAR).append("' title='") + .append(join(pct, '%')).append("'> ").append("<div class='") + .append(C_PROGRESSBAR_VALUE).append("' style='") + .append(join("width:", pct, '%')).append("'> </div> </div>\",\"") + + .append(info.getState()).append("\",\"") + .append(info.getStartTime()).append("\",\"") + .append(info.getFinishTime()).append("\",\"") + .append(info.getElapsedTime()).append("\"],\n"); } + //Remove the last comma and close off the array of arrays + if(tasksTableData.charAt(tasksTableData.length() - 2) == ',') { + tasksTableData.delete(tasksTableData.length()-2, tasksTableData.length()-1); + } + tasksTableData.append("]"); + html.script().$type("text/javascript"). + _("var tasksTableData=" + tasksTableData)._(); + tbody._()._(); } } Modified: hadoop/common/trunk/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-app/src/main/java/org/apache/hadoop/mapreduce/v2/app/webapp/TasksPage.java URL: http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-app/src/main/java/org/apache/hadoop/mapreduce/v2/app/webapp/TasksPage.java?rev=1410498&r1=1410497&r2=1410498&view=diff ============================================================================== --- hadoop/common/trunk/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-app/src/main/java/org/apache/hadoop/mapreduce/v2/app/webapp/TasksPage.java (original) +++ hadoop/common/trunk/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-app/src/main/java/org/apache/hadoop/mapreduce/v2/app/webapp/TasksPage.java Fri Nov 16 17:30:22 2012 @@ -37,11 +37,26 @@ public class TasksPage extends AppView { } private String tasksTableInit() { - return tableInit(). - // Sort by id upon page load - append(", aaSorting: [[0, 'asc']]"). - append(",aoColumns:[{sType:'title-numeric'},{sType:'title-numeric',"). - append("bSearchable:false},null,{sType:'title-numeric'},"). - append("{sType:'title-numeric'},{sType:'title-numeric'}]}").toString(); + return tableInit() + .append(", 'aaData': tasksTableData") + .append(", bDeferRender: true") + .append(", bProcessing: true") + + .append("\n, aoColumnDefs: [\n") + .append("{'sType':'numeric', 'aTargets': [0]") + .append(", 'mRender': parseHadoopID }") + + .append("\n, {'sType':'numeric', bSearchable:false, 'aTargets': [1]") + .append(", 'mRender': parseHadoopProgress }") + + + .append("\n, {'sType':'numeric', 'aTargets': [3, 4]") + .append(", 'mRender': renderHadoopDate }") + + .append("\n, {'sType':'numeric', 'aTargets': [5]") + .append(", 'mRender': renderHadoopElapsedTime }]") + + // Sort by id upon page load + .append(", aaSorting: [[0, 'asc']] }").toString(); } } Modified: hadoop/common/trunk/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-hs/src/main/java/org/apache/hadoop/mapreduce/v2/hs/webapp/HsJobsBlock.java URL: http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-hs/src/main/java/org/apache/hadoop/mapreduce/v2/hs/webapp/HsJobsBlock.java?rev=1410498&r1=1410497&r2=1410498&view=diff ============================================================================== --- hadoop/common/trunk/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-hs/src/main/java/org/apache/hadoop/mapreduce/v2/hs/webapp/HsJobsBlock.java (original) +++ hadoop/common/trunk/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-hs/src/main/java/org/apache/hadoop/mapreduce/v2/hs/webapp/HsJobsBlock.java Fri Nov 16 17:30:22 2012 @@ -78,11 +78,11 @@ public class HsJobsBlock extends HtmlBlo .append(dateFormat.format(new Date(job.getFinishTime()))).append("\",\"") .append("<a href='").append(url("job", job.getId())).append("'>") .append(job.getId()).append("</a>\",\"") - .append(StringEscapeUtils.escapeJavaScript(job.getName())) + .append(StringEscapeUtils.escapeHtml(job.getName())) .append("\",\"") - .append(StringEscapeUtils.escapeJavaScript(job.getUserName())) + .append(StringEscapeUtils.escapeHtml(job.getUserName())) .append("\",\"") - .append(StringEscapeUtils.escapeJavaScript(job.getQueueName())) + .append(StringEscapeUtils.escapeHtml(job.getQueueName())) .append("\",\"") .append(job.getState()).append("\",\"") .append(String.valueOf(job.getMapsTotal())).append("\",\"") Modified: hadoop/common/trunk/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-hs/src/main/java/org/apache/hadoop/mapreduce/v2/hs/webapp/HsTasksBlock.java URL: http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-hs/src/main/java/org/apache/hadoop/mapreduce/v2/hs/webapp/HsTasksBlock.java?rev=1410498&r1=1410497&r2=1410498&view=diff ============================================================================== --- hadoop/common/trunk/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-hs/src/main/java/org/apache/hadoop/mapreduce/v2/hs/webapp/HsTasksBlock.java (original) +++ hadoop/common/trunk/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-hs/src/main/java/org/apache/hadoop/mapreduce/v2/hs/webapp/HsTasksBlock.java Fri Nov 16 17:30:22 2012 @@ -29,7 +29,6 @@ import org.apache.hadoop.mapreduce.v2.ap import org.apache.hadoop.mapreduce.v2.app.webapp.dao.TaskInfo; import org.apache.hadoop.mapreduce.v2.util.MRApps; import org.apache.hadoop.util.StringUtils; -import org.apache.hadoop.yarn.util.Times; import org.apache.hadoop.yarn.webapp.hamlet.Hamlet; import org.apache.hadoop.yarn.webapp.hamlet.Hamlet.TABLE; import org.apache.hadoop.yarn.webapp.hamlet.Hamlet.TBODY;