diff --git a/core/src/main/resources/org/apache/spark/ui/static/executorspage-template.html b/core/src/main/resources/org/apache/spark/ui/static/executorspage-template.html
index 5c91304e49fd..f2c17aef097a 100644
--- a/core/src/main/resources/org/apache/spark/ui/static/executorspage-template.html
+++ b/core/src/main/resources/org/apache/spark/ui/static/executorspage-template.html
@@ -16,10 +16,10 @@
-->
diff --git a/core/src/main/resources/org/apache/spark/ui/static/utils.js b/core/src/main/resources/org/apache/spark/ui/static/utils.js
index 4f63f6413d6d..deeafad4eb5f 100644
--- a/core/src/main/resources/org/apache/spark/ui/static/utils.js
+++ b/core/src/main/resources/org/apache/spark/ui/static/utils.js
@@ -18,7 +18,7 @@
// this function works exactly the same as UIUtils.formatDuration
function formatDuration(milliseconds) {
if (milliseconds < 100) {
- return milliseconds + " ms";
+ return parseInt(milliseconds).toFixed(1) + " ms";
}
var seconds = milliseconds * 1.0 / 1000;
if (seconds < 1) {
@@ -74,3 +74,114 @@ function getTimeZone() {
return new Date().toString().match(/\((.*)\)/)[1];
}
}
+
+function formatLogsCells(execLogs, type) {
+ if (type !== 'display') return Object.keys(execLogs);
+ if (!execLogs) return;
+ var result = '';
+ $.each(execLogs, function (logName, logUrl) {
+ result += '
'
+ });
+ return result;
+}
+
+function getStandAloneAppId(cb) {
+ var words = document.baseURI.split('/');
+ var ind = words.indexOf("proxy");
+ if (ind > 0) {
+ var appId = words[ind + 1];
+ cb(appId);
+ return;
+ }
+ ind = words.indexOf("history");
+ if (ind > 0) {
+ var appId = words[ind + 1];
+ cb(appId);
+ return;
+ }
+ // Looks like Web UI is running in standalone mode
+ // Let's get application-id using REST End Point
+ $.getJSON(location.origin + "/api/v1/applications", function(response, status, jqXHR) {
+ if (response && response.length > 0) {
+ var appId = response[0].id;
+ cb(appId);
+ return;
+ }
+ });
+}
+
+// This function is a helper function for sorting in datatable.
+// When the data is in duration (e.g. 12ms 2s 2min 2h )
+// It will convert the string into integer for correct ordering
+function ConvertDurationString(data) {
+ data = data.toString();
+ var units = data.replace(/[\d\.]/g, '' )
+ .replace(' ', '')
+ .toLowerCase();
+ var multiplier = 1;
+
+ switch(units) {
+ case 's':
+ multiplier = 1000;
+ break;
+ case 'min':
+ multiplier = 600000;
+ break;
+ case 'h':
+ multiplier = 3600000;
+ break;
+ default:
+ break;
+ }
+ return parseFloat(data) * multiplier;
+}
+
+function createTemplateURI(appId, templateName) {
+ var words = document.baseURI.split('/');
+ var ind = words.indexOf("proxy");
+ if (ind > 0) {
+ var baseURI = words.slice(0, ind + 1).join('/') + '/' + appId + '/static/' + templateName + '-template.html';
+ return baseURI;
+ }
+ ind = words.indexOf("history");
+ if(ind > 0) {
+ var baseURI = words.slice(0, ind).join('/') + '/static/' + templateName + '-template.html';
+ return baseURI;
+ }
+ return location.origin + "/static/" + templateName + "-template.html";
+}
+
+function setDataTableDefaults() {
+ $.extend($.fn.dataTable.defaults, {
+ stateSave: true,
+ lengthMenu: [[20, 40, 60, 100, -1], [20, 40, 60, 100, "All"]],
+ pageLength: 20
+ });
+}
+
+function formatDate(date) {
+ if (date <= 0) return "-";
+ else return date.split(".")[0].replace("T", " ");
+}
+
+function createRESTEndPointForExecutorsPage(appId) {
+ var words = document.baseURI.split('/');
+ var ind = words.indexOf("proxy");
+ if (ind > 0) {
+ var appId = words[ind + 1];
+ var newBaseURI = words.slice(0, ind + 2).join('/');
+ return newBaseURI + "/api/v1/applications/" + appId + "/allexecutors"
+ }
+ ind = words.indexOf("history");
+ if (ind > 0) {
+ var appId = words[ind + 1];
+ var attemptId = words[ind + 2];
+ var newBaseURI = words.slice(0, ind).join('/');
+ if (isNaN(attemptId)) {
+ return newBaseURI + "/api/v1/applications/" + appId + "/allexecutors";
+ } else {
+ return newBaseURI + "/api/v1/applications/" + appId + "/" + attemptId + "/allexecutors";
+ }
+ }
+ return location.origin + "/api/v1/applications/" + appId + "/allexecutors";
+}
diff --git a/core/src/main/resources/org/apache/spark/ui/static/webui-dataTables.css b/core/src/main/resources/org/apache/spark/ui/static/webui-dataTables.css
new file mode 100644
index 000000000000..f6b4abed21e0
--- /dev/null
+++ b/core/src/main/resources/org/apache/spark/ui/static/webui-dataTables.css
@@ -0,0 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */
+
+table.dataTable thead .sorting_asc { background: url('images/sort_asc.png') no-repeat bottom right; }
+
+table.dataTable thead .sorting_desc { background: url('images/sort_desc.png') no-repeat bottom right; }
\ No newline at end of file
diff --git a/core/src/main/resources/org/apache/spark/ui/static/webui.css b/core/src/main/resources/org/apache/spark/ui/static/webui.css
index 266eeec55576..fe5bb25687af 100644
--- a/core/src/main/resources/org/apache/spark/ui/static/webui.css
+++ b/core/src/main/resources/org/apache/spark/ui/static/webui.css
@@ -260,4 +260,105 @@ a.expandbutton {
.paginate_button.active > a {
color: #999999;
text-decoration: underline;
+}
+
+.title-table {
+ clear: left;
+ display: inline-block;
+}
+
+.table-dataTable {
+ width: 100%;
+}
+
+.container-fluid-div {
+ width: 200px;
+}
+
+.scheduler-delay-checkbox-div {
+ width: 120px;
+}
+
+.task-deserialization-time-checkbox-div {
+ width: 175px;
+}
+
+.shuffle-read-blocked-time-checkbox-div {
+ width: 187px;
+}
+
+.shuffle-remote-reads-checkbox-div {
+ width: 157px;
+}
+
+.result-serialization-time-checkbox-div {
+ width: 171px;
+}
+
+.getting-result-time-checkbox-div {
+ width: 141px;
+}
+
+.peak-execution-memory-checkbox-div {
+ width: 170px;
+}
+
+#active-tasks-table th {
+ border-top: 1px solid #dddddd;
+ border-bottom: 1px solid #dddddd;
+ border-right: 1px solid #dddddd;
+}
+
+#active-tasks-table th:first-child {
+ border-left: 1px solid #dddddd;
+}
+
+#accumulator-table th {
+ border-top: 1px solid #dddddd;
+ border-bottom: 1px solid #dddddd;
+ border-right: 1px solid #dddddd;
+}
+
+#accumulator-table th:first-child {
+ border-left: 1px solid #dddddd;
+}
+
+#summary-executor-table th {
+ border-top: 1px solid #dddddd;
+ border-bottom: 1px solid #dddddd;
+ border-right: 1px solid #dddddd;
+}
+
+#summary-executor-table th:first-child {
+ border-left: 1px solid #dddddd;
+}
+
+#summary-metrics-table th {
+ border-top: 1px solid #dddddd;
+ border-bottom: 1px solid #dddddd;
+ border-right: 1px solid #dddddd;
+}
+
+#summary-metrics-table th:first-child {
+ border-left: 1px solid #dddddd;
+}
+
+#summary-execs-table th {
+ border-top: 1px solid #dddddd;
+ border-bottom: 1px solid #dddddd;
+ border-right: 1px solid #dddddd;
+}
+
+#summary-execs-table th:first-child {
+ border-left: 1px solid #dddddd;
+}
+
+#active-executors-table th {
+ border-top: 1px solid #dddddd;
+ border-bottom: 1px solid #dddddd;
+ border-right: 1px solid #dddddd;
+}
+
+#active-executors-table th:first-child {
+ border-left: 1px solid #dddddd;
}
\ No newline at end of file
diff --git a/core/src/main/scala/org/apache/spark/status/AppStatusStore.scala b/core/src/main/scala/org/apache/spark/status/AppStatusStore.scala
index 63b9d8988499..5c0ed4d5d8f4 100644
--- a/core/src/main/scala/org/apache/spark/status/AppStatusStore.scala
+++ b/core/src/main/scala/org/apache/spark/status/AppStatusStore.scala
@@ -351,7 +351,9 @@ private[spark] class AppStatusStore(
def taskList(stageId: Int, stageAttemptId: Int, maxTasks: Int): Seq[v1.TaskData] = {
val stageKey = Array(stageId, stageAttemptId)
store.view(classOf[TaskDataWrapper]).index("stage").first(stageKey).last(stageKey).reverse()
- .max(maxTasks).asScala.map(_.toApi).toSeq.reverse
+ .max(maxTasks).asScala.map { taskDataWrapper =>
+ constructTaskData(taskDataWrapper)
+ }.toSeq.reverse
}
def taskList(
@@ -390,7 +392,9 @@ private[spark] class AppStatusStore(
}
val ordered = if (ascending) indexed else indexed.reverse()
- ordered.skip(offset).max(length).asScala.map(_.toApi).toSeq
+ ordered.skip(offset).max(length).asScala.map { taskDataWrapper =>
+ constructTaskData(taskDataWrapper)
+ }.toSeq
}
def executorSummary(stageId: Int, attemptId: Int): Map[String, v1.ExecutorStageSummary] = {
@@ -496,6 +500,24 @@ private[spark] class AppStatusStore(
store.close()
}
+ def constructTaskData(taskDataWrapper: TaskDataWrapper) : v1.TaskData = {
+ val taskDataOld: v1.TaskData = taskDataWrapper.toApi
+ val executorLogs: Option[Map[String, String]] = try {
+ Some(executorSummary(taskDataOld.executorId).executorLogs)
+ } catch {
+ case e: NoSuchElementException => e.getMessage
+ None
+ }
+ new v1.TaskData(taskDataOld.taskId, taskDataOld.index,
+ taskDataOld.attempt, taskDataOld.launchTime, taskDataOld.resultFetchStart,
+ taskDataOld.duration, taskDataOld.executorId, taskDataOld.host, taskDataOld.status,
+ taskDataOld.taskLocality, taskDataOld.speculative, taskDataOld.accumulatorUpdates,
+ taskDataOld.errorMessage, taskDataOld.taskMetrics,
+ executorLogs.getOrElse(Map[String, String]()),
+ AppStatusUtils.schedulerDelay(taskDataOld),
+ AppStatusUtils.gettingResultTime(taskDataOld))
+ }
+
}
private[spark] object AppStatusStore {
diff --git a/core/src/main/scala/org/apache/spark/status/api/v1/StagesResource.scala b/core/src/main/scala/org/apache/spark/status/api/v1/StagesResource.scala
index 30d52b97833e..f81892734c2d 100644
--- a/core/src/main/scala/org/apache/spark/status/api/v1/StagesResource.scala
+++ b/core/src/main/scala/org/apache/spark/status/api/v1/StagesResource.scala
@@ -16,15 +16,16 @@
*/
package org.apache.spark.status.api.v1
-import java.util.{List => JList}
+import java.util.{HashMap, List => JList, Locale}
import javax.ws.rs._
-import javax.ws.rs.core.MediaType
+import javax.ws.rs.core.{Context, MediaType, MultivaluedMap, UriInfo}
import org.apache.spark.SparkException
import org.apache.spark.scheduler.StageInfo
import org.apache.spark.status.api.v1.StageStatus._
import org.apache.spark.status.api.v1.TaskSorting._
import org.apache.spark.ui.SparkUI
+import org.apache.spark.ui.jobs.ApiHelper._
@Produces(Array(MediaType.APPLICATION_JSON))
private[v1] class StagesResource extends BaseAppResource {
@@ -102,4 +103,120 @@ private[v1] class StagesResource extends BaseAppResource {
withUI(_.store.taskList(stageId, stageAttemptId, offset, length, sortBy))
}
+ // This api needs to stay formatted exactly as it is below, since, it is being used by the
+ // datatables for the stages page.
+ @GET
+ @Path("{stageId: \\d+}/{stageAttemptId: \\d+}/taskTable")
+ def taskTable(
+ @PathParam("stageId") stageId: Int,
+ @PathParam("stageAttemptId") stageAttemptId: Int,
+ @QueryParam("details") @DefaultValue("true") details: Boolean,
+ @Context uriInfo: UriInfo):
+ HashMap[String, Object] = {
+ withUI { ui =>
+ val uriQueryParameters = uriInfo.getQueryParameters(true)
+ val totalRecords = uriQueryParameters.getFirst("numTasks")
+ var isSearch = false
+ var searchValue: String = null
+ var filteredRecords = totalRecords
+ // The datatables client API sends a list of query parameters to the server which contain
+ // information like the columns to be sorted, search value typed by the user in the search
+ // box, pagination index etc. For more information on these query parameters,
+ // refer https://datatables.net/manual/server-side.
+ if (uriQueryParameters.getFirst("search[value]") != null &&
+ uriQueryParameters.getFirst("search[value]").length > 0) {
+ isSearch = true
+ searchValue = uriQueryParameters.getFirst("search[value]")
+ }
+ val _tasksToShow: Seq[TaskData] = doPagination(uriQueryParameters, stageId, stageAttemptId,
+ isSearch, totalRecords.toInt)
+ val ret = new HashMap[String, Object]()
+ if (_tasksToShow.nonEmpty) {
+ // Performs server-side search based on input from user
+ if (isSearch) {
+ val filteredTaskList = filterTaskList(_tasksToShow, searchValue)
+ filteredRecords = filteredTaskList.length.toString
+ if (filteredTaskList.length > 0) {
+ val pageStartIndex = uriQueryParameters.getFirst("start").toInt
+ val pageLength = uriQueryParameters.getFirst("length").toInt
+ ret.put("aaData", filteredTaskList.slice(
+ pageStartIndex, pageStartIndex + pageLength))
+ } else {
+ ret.put("aaData", filteredTaskList)
+ }
+ } else {
+ ret.put("aaData", _tasksToShow)
+ }
+ } else {
+ ret.put("aaData", _tasksToShow)
+ }
+ ret.put("recordsTotal", totalRecords)
+ ret.put("recordsFiltered", filteredRecords)
+ ret
+ }
+ }
+
+ // Performs pagination on the server side
+ def doPagination(queryParameters: MultivaluedMap[String, String], stageId: Int,
+ stageAttemptId: Int, isSearch: Boolean, totalRecords: Int): Seq[TaskData] = {
+ var columnNameToSort = queryParameters.getFirst("columnNameToSort")
+ // Sorting on Logs column will default to Index column sort
+ if (columnNameToSort.equalsIgnoreCase("Logs")) {
+ columnNameToSort = "Index"
+ }
+ val isAscendingStr = queryParameters.getFirst("order[0][dir]")
+ var pageStartIndex = 0
+ var pageLength = totalRecords
+ // We fetch only the desired rows upto the specified page length for all cases except when a
+ // search query is present, in that case, we need to fetch all the rows to perform the search
+ // on the entire table
+ if (!isSearch) {
+ pageStartIndex = queryParameters.getFirst("start").toInt
+ pageLength = queryParameters.getFirst("length").toInt
+ }
+ withUI(_.store.taskList(stageId, stageAttemptId, pageStartIndex, pageLength,
+ indexName(columnNameToSort), isAscendingStr.equalsIgnoreCase("asc")))
+ }
+
+ // Filters task list based on search parameter
+ def filterTaskList(
+ taskDataList: Seq[TaskData],
+ searchValue: String): Seq[TaskData] = {
+ val defaultOptionString: String = "d"
+ val searchValueLowerCase = searchValue.toLowerCase(Locale.ROOT)
+ val containsValue = (taskDataParams: Any) => taskDataParams.toString.toLowerCase(
+ Locale.ROOT).contains(searchValueLowerCase)
+ val taskMetricsContainsValue = (task: TaskData) => task.taskMetrics match {
+ case None => false
+ case Some(metrics) =>
+ (containsValue(task.taskMetrics.get.executorDeserializeTime)
+ || containsValue(task.taskMetrics.get.executorRunTime)
+ || containsValue(task.taskMetrics.get.jvmGcTime)
+ || containsValue(task.taskMetrics.get.resultSerializationTime)
+ || containsValue(task.taskMetrics.get.memoryBytesSpilled)
+ || containsValue(task.taskMetrics.get.diskBytesSpilled)
+ || containsValue(task.taskMetrics.get.peakExecutionMemory)
+ || containsValue(task.taskMetrics.get.inputMetrics.bytesRead)
+ || containsValue(task.taskMetrics.get.inputMetrics.recordsRead)
+ || containsValue(task.taskMetrics.get.outputMetrics.bytesWritten)
+ || containsValue(task.taskMetrics.get.outputMetrics.recordsWritten)
+ || containsValue(task.taskMetrics.get.shuffleReadMetrics.fetchWaitTime)
+ || containsValue(task.taskMetrics.get.shuffleReadMetrics.recordsRead)
+ || containsValue(task.taskMetrics.get.shuffleWriteMetrics.bytesWritten)
+ || containsValue(task.taskMetrics.get.shuffleWriteMetrics.recordsWritten)
+ || containsValue(task.taskMetrics.get.shuffleWriteMetrics.writeTime))
+ }
+ val filteredTaskDataSequence: Seq[TaskData] = taskDataList.filter(f =>
+ (containsValue(f.taskId) || containsValue(f.index) || containsValue(f.attempt)
+ || containsValue(f.launchTime)
+ || containsValue(f.resultFetchStart.getOrElse(defaultOptionString))
+ || containsValue(f.duration.getOrElse(defaultOptionString))
+ || containsValue(f.executorId) || containsValue(f.host) || containsValue(f.status)
+ || containsValue(f.taskLocality) || containsValue(f.speculative)
+ || containsValue(f.errorMessage.getOrElse(defaultOptionString))
+ || taskMetricsContainsValue(f)
+ || containsValue(f.schedulerDelay) || containsValue(f.gettingResultTime)))
+ filteredTaskDataSequence
+ }
+
}
diff --git a/core/src/main/scala/org/apache/spark/status/api/v1/api.scala b/core/src/main/scala/org/apache/spark/status/api/v1/api.scala
index 30afd8b76972..aa21da2b66ab 100644
--- a/core/src/main/scala/org/apache/spark/status/api/v1/api.scala
+++ b/core/src/main/scala/org/apache/spark/status/api/v1/api.scala
@@ -253,7 +253,10 @@ class TaskData private[spark](
val speculative: Boolean,
val accumulatorUpdates: Seq[AccumulableInfo],
val errorMessage: Option[String] = None,
- val taskMetrics: Option[TaskMetrics] = None)
+ val taskMetrics: Option[TaskMetrics] = None,
+ val executorLogs: Map[String, String],
+ val schedulerDelay: Long,
+ val gettingResultTime: Long)
class TaskMetrics private[spark](
val executorDeserializeTime: Long,
diff --git a/core/src/main/scala/org/apache/spark/status/storeTypes.scala b/core/src/main/scala/org/apache/spark/status/storeTypes.scala
index 646cf25880e3..ef19e86f3135 100644
--- a/core/src/main/scala/org/apache/spark/status/storeTypes.scala
+++ b/core/src/main/scala/org/apache/spark/status/storeTypes.scala
@@ -283,7 +283,10 @@ private[spark] class TaskDataWrapper(
speculative,
accumulatorUpdates,
errorMessage,
- metrics)
+ metrics,
+ executorLogs = null,
+ schedulerDelay = 0L,
+ gettingResultTime = 0L)
}
@JsonIgnore @KVIndex(TaskIndexNames.STAGE)
diff --git a/core/src/main/scala/org/apache/spark/ui/UIUtils.scala b/core/src/main/scala/org/apache/spark/ui/UIUtils.scala
index 3aed4647a96f..60a929375baa 100644
--- a/core/src/main/scala/org/apache/spark/ui/UIUtils.scala
+++ b/core/src/main/scala/org/apache/spark/ui/UIUtils.scala
@@ -204,6 +204,8 @@ private[spark] object UIUtils extends Logging {
href={prependBaseUri(request, "/static/dataTables.bootstrap.css")} type="text/css"/>
+
diff --git a/core/src/main/scala/org/apache/spark/ui/jobs/ExecutorTable.scala b/core/src/main/scala/org/apache/spark/ui/jobs/ExecutorTable.scala
deleted file mode 100644
index 1be81e5ef995..000000000000
--- a/core/src/main/scala/org/apache/spark/ui/jobs/ExecutorTable.scala
+++ /dev/null
@@ -1,149 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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.
- */
-
-package org.apache.spark.ui.jobs
-
-import scala.xml.{Node, Unparsed}
-
-import org.apache.spark.status.AppStatusStore
-import org.apache.spark.status.api.v1.StageData
-import org.apache.spark.ui.{ToolTips, UIUtils}
-import org.apache.spark.util.Utils
-
-/** Stage summary grouped by executors. */
-private[ui] class ExecutorTable(stage: StageData, store: AppStatusStore) {
-
- import ApiHelper._
-
- def toNodeSeq: Seq[Node] = {
-
-
- Executor ID
- Address
- Task Time
- Total Tasks
- Failed Tasks
- Killed Tasks
- Succeeded Tasks
- {if (hasInput(stage)) {
-
- Input Size / Records
-
- }}
- {if (hasOutput(stage)) {
-
- Output Size / Records
-
- }}
- {if (hasShuffleRead(stage)) {
-
-
- Shuffle Read Size / Records
-
- }}
- {if (hasShuffleWrite(stage)) {
-
-
- Shuffle Write Size / Records
-
- }}
- {if (hasBytesSpilled(stage)) {
- Shuffle Spill (Memory)
- Shuffle Spill (Disk)
- }}
-
-
- Blacklisted
-
-
- Logs
-
-
- {createExecutorTable(stage)}
-
-
-
- }
-
- private def createExecutorTable(stage: StageData) : Seq[Node] = {
- val executorSummary = store.executorSummary(stage.stageId, stage.attemptId)
-
- executorSummary.toSeq.sortBy(_._1).map { case (k, v) =>
- val executor = store.asOption(store.executorSummary(k))
-
- {k}
- {executor.map { e => e.hostPort }.getOrElse("CANNOT FIND ADDRESS")}
- {UIUtils.formatDuration(v.taskTime)}
- {v.failedTasks + v.succeededTasks + v.killedTasks}
- {v.failedTasks}
- {v.killedTasks}
- {v.succeededTasks}
- {if (hasInput(stage)) {
-
- {s"${Utils.bytesToString(v.inputBytes)} / ${v.inputRecords}"}
-
- }}
- {if (hasOutput(stage)) {
-
- {s"${Utils.bytesToString(v.outputBytes)} / ${v.outputRecords}"}
-
- }}
- {if (hasShuffleRead(stage)) {
-
- {s"${Utils.bytesToString(v.shuffleRead)} / ${v.shuffleReadRecords}"}
-
- }}
- {if (hasShuffleWrite(stage)) {
-
- {s"${Utils.bytesToString(v.shuffleWrite)} / ${v.shuffleWriteRecords}"}
-
- }}
- {if (hasBytesSpilled(stage)) {
-
- {Utils.bytesToString(v.memoryBytesSpilled)}
-
-
- {Utils.bytesToString(v.diskBytesSpilled)}
-
- }}
- {
- if (executor.map(_.isBlacklisted).getOrElse(false)) {
- for application
- } else if (v.isBlacklistedForStage) {
- for stage
- } else {
- false
- }
- }
- {executor.map(_.executorLogs).getOrElse(Map.empty).map {
- case (logName, logUrl) =>
- }}
-
-
-
- }
- }
-
-}
diff --git a/core/src/main/scala/org/apache/spark/ui/jobs/StagePage.scala b/core/src/main/scala/org/apache/spark/ui/jobs/StagePage.scala
index 477b9ce7f784..4b681c673227 100644
--- a/core/src/main/scala/org/apache/spark/ui/jobs/StagePage.scala
+++ b/core/src/main/scala/org/apache/spark/ui/jobs/StagePage.scala
@@ -92,6 +92,14 @@ private[ui] class StagePage(parent: StagesTab, store: AppStatusStore) extends We
val parameterTaskSortDesc = UIUtils.stripXSS(request.getParameter("task.desc"))
val parameterTaskPageSize = UIUtils.stripXSS(request.getParameter("task.pageSize"))
+ val eventTimelineParameterTaskPage = UIUtils.stripXSS(
+ request.getParameter("task.eventTimelinePageNumber"))
+ val eventTimelineParameterTaskPageSize = UIUtils.stripXSS(
+ request.getParameter("task.eventTimelinePageSize"))
+ var eventTimelineTaskPage = Option(eventTimelineParameterTaskPage).map(_.toInt).getOrElse(1)
+ var eventTimelineTaskPageSize = Option(
+ eventTimelineParameterTaskPageSize).map(_.toInt).getOrElse(100)
+
val taskPage = Option(parameterTaskPage).map(_.toInt).getOrElse(1)
val taskSortColumn = Option(parameterTaskSortColumn).map { sortColumn =>
UIUtils.decodeURLParameter(sortColumn)
@@ -132,6 +140,14 @@ private[ui] class StagePage(parent: StagesTab, store: AppStatusStore) extends We
} else {
s"$totalTasks, showing $storedTasks"
}
+ if (eventTimelineTaskPageSize < 1 || eventTimelineTaskPageSize > totalTasks) {
+ eventTimelineTaskPageSize = totalTasks
+ }
+ val eventTimelineTotalPages =
+ (totalTasks + eventTimelineTaskPageSize - 1) / eventTimelineTaskPageSize
+ if (eventTimelineTaskPage < 1 || eventTimelineTaskPage > eventTimelineTotalPages) {
+ eventTimelineTaskPage = 1
+ }
val summary =
@@ -192,73 +208,6 @@ private[ui] class StagePage(parent: StagesTab, store: AppStatusStore) extends We
- val showAdditionalMetrics =
-
-
val stageGraph = parent.store.asOption(parent.store.operationGraphForStage(stageId))
val dagViz = UIUtils.showDagVizForStage(stageId, stageGraph)
@@ -276,7 +225,7 @@ private[ui] class StagePage(parent: StagesTab, store: AppStatusStore) extends We
stageData.accumulatorUpdates.toSeq)
val currentTime = System.currentTimeMillis()
- val (taskTable, taskTableHTML) = try {
+ val taskTable = try {
val _taskTable = new TaskPagedTable(
stageData,
UIUtils.prependBaseUri(request, parent.basePath) +
@@ -287,17 +236,10 @@ private[ui] class StagePage(parent: StagesTab, store: AppStatusStore) extends We
desc = taskSortDesc,
store = parent.store
)
- (_taskTable, _taskTable.table(taskPage))
+ _taskTable
} catch {
case e @ (_ : IllegalArgumentException | _ : IndexOutOfBoundsException) =>
- val errorMessage =
-
-
Error while rendering stage table:
-
- {Utils.exceptionString(e)}
-
-
- (null, errorMessage)
+ null
}
val jsForScrollingDownToTaskTable =
@@ -315,190 +257,36 @@ private[ui] class StagePage(parent: StagesTab, store: AppStatusStore) extends We
}
- val metricsSummary = store.taskSummary(stageData.stageId, stageData.attemptId,
- Array(0, 0.25, 0.5, 0.75, 1.0))
-
- val summaryTable = metricsSummary.map { metrics =>
- def timeQuantiles(data: IndexedSeq[Double]): Seq[Node] = {
- data.map { millis =>
- {UIUtils.formatDuration(millis.toLong)}
- }
- }
-
- def sizeQuantiles(data: IndexedSeq[Double]): Seq[Node] = {
- data.map { size =>
- {Utils.bytesToString(size.toLong)}
- }
- }
-
- def sizeQuantilesWithRecords(
- data: IndexedSeq[Double],
- records: IndexedSeq[Double]) : Seq[Node] = {
- data.zip(records).map { case (d, r) =>
- {s"${Utils.bytesToString(d.toLong)} / ${r.toLong}"}
- }
- }
-
- def titleCell(title: String, tooltip: String): Seq[Node] = {
-
-
- {title}
-
-
- }
-
- def simpleTitleCell(title: String): Seq[Node] = {title}
-
- val deserializationQuantiles = titleCell("Task Deserialization Time",
- ToolTips.TASK_DESERIALIZATION_TIME) ++ timeQuantiles(metrics.executorDeserializeTime)
-
- val serviceQuantiles = simpleTitleCell("Duration") ++ timeQuantiles(metrics.executorRunTime)
-
- val gcQuantiles = titleCell("GC Time", ToolTips.GC_TIME) ++ timeQuantiles(metrics.jvmGcTime)
-
- val serializationQuantiles = titleCell("Result Serialization Time",
- ToolTips.RESULT_SERIALIZATION_TIME) ++ timeQuantiles(metrics.resultSerializationTime)
-
- val gettingResultQuantiles = titleCell("Getting Result Time", ToolTips.GETTING_RESULT_TIME) ++
- timeQuantiles(metrics.gettingResultTime)
-
- val peakExecutionMemoryQuantiles = titleCell("Peak Execution Memory",
- ToolTips.PEAK_EXECUTION_MEMORY) ++ sizeQuantiles(metrics.peakExecutionMemory)
-
- // The scheduler delay includes the network delay to send the task to the worker
- // machine and to send back the result (but not the time to fetch the task result,
- // if it needed to be fetched from the block manager on the worker).
- val schedulerDelayQuantiles = titleCell("Scheduler Delay", ToolTips.SCHEDULER_DELAY) ++
- timeQuantiles(metrics.schedulerDelay)
-
- def inputQuantiles: Seq[Node] = {
- simpleTitleCell("Input Size / Records") ++
- sizeQuantilesWithRecords(metrics.inputMetrics.bytesRead, metrics.inputMetrics.recordsRead)
- }
-
- def outputQuantiles: Seq[Node] = {
- simpleTitleCell("Output Size / Records") ++
- sizeQuantilesWithRecords(metrics.outputMetrics.bytesWritten,
- metrics.outputMetrics.recordsWritten)
- }
-
- def shuffleReadBlockedQuantiles: Seq[Node] = {
- titleCell("Shuffle Read Blocked Time", ToolTips.SHUFFLE_READ_BLOCKED_TIME) ++
- timeQuantiles(metrics.shuffleReadMetrics.fetchWaitTime)
- }
-
- def shuffleReadTotalQuantiles: Seq[Node] = {
- titleCell("Shuffle Read Size / Records", ToolTips.SHUFFLE_READ) ++
- sizeQuantilesWithRecords(metrics.shuffleReadMetrics.readBytes,
- metrics.shuffleReadMetrics.readRecords)
- }
-
- def shuffleReadRemoteQuantiles: Seq[Node] = {
- titleCell("Shuffle Remote Reads", ToolTips.SHUFFLE_READ_REMOTE_SIZE) ++
- sizeQuantiles(metrics.shuffleReadMetrics.remoteBytesRead)
- }
-
- def shuffleWriteQuantiles: Seq[Node] = {
- simpleTitleCell("Shuffle Write Size / Records") ++
- sizeQuantilesWithRecords(metrics.shuffleWriteMetrics.writeBytes,
- metrics.shuffleWriteMetrics.writeRecords)
- }
-
- def memoryBytesSpilledQuantiles: Seq[Node] = {
- simpleTitleCell("Shuffle spill (memory)") ++ sizeQuantiles(metrics.memoryBytesSpilled)
- }
-
- def diskBytesSpilledQuantiles: Seq[Node] = {
- simpleTitleCell("Shuffle spill (disk)") ++ sizeQuantiles(metrics.diskBytesSpilled)
- }
-
- val listings: Seq[Seq[Node]] = Seq(
- {serviceQuantiles} ,
- {schedulerDelayQuantiles} ,
-
- {deserializationQuantiles}
-
- {gcQuantiles} ,
-
- {serializationQuantiles}
- ,
- {gettingResultQuantiles} ,
-
- {peakExecutionMemoryQuantiles}
- ,
- if (hasInput(stageData)) {inputQuantiles} else Nil,
- if (hasOutput(stageData)) {outputQuantiles} else Nil,
- if (hasShuffleRead(stageData)) {
-
- {shuffleReadBlockedQuantiles}
-
- {shuffleReadTotalQuantiles}
-
- {shuffleReadRemoteQuantiles}
-
- } else {
- Nil
- },
- if (hasShuffleWrite(stageData)) {shuffleWriteQuantiles} else Nil,
- if (hasBytesSpilled(stageData)) {memoryBytesSpilledQuantiles} else Nil,
- if (hasBytesSpilled(stageData)) {diskBytesSpilledQuantiles} else Nil)
-
- val quantileHeaders = Seq("Metric", "Min", "25th percentile", "Median", "75th percentile",
- "Max")
- // The summary table does not use CSS to stripe rows, which doesn't work with hidden
- // rows (instead, JavaScript in table.js is used to stripe the non-hidden rows).
- UIUtils.listingTable(
- quantileHeaders,
- identity[Seq[Node]],
- listings,
- fixedWidth = true,
- id = Some("task-summary-table"),
- stripeRowsWithCss = false)
- }
-
- val executorTable = new ExecutorTable(stageData, parent.store)
-
- val maybeAccumulableTable: Seq[Node] =
- if (hasAccumulators(stageData)) { Accumulators ++ accumulableTable } else Seq()
-
- val aggMetrics =
-
-
-
-
- {executorTable.toNodeSeq}
-
-
val content =
summary ++
- dagViz ++
- showAdditionalMetrics ++
+ dagViz ++
++
makeTimeline(
// Only show the tasks in the table
- Option(taskTable).map(_.dataSource.tasks).getOrElse(Nil),
- currentTime) ++
- ++
- {summaryTable.getOrElse("No tasks have reported metrics yet.")}
++
- aggMetrics ++
- maybeAccumulableTable ++
-
-
- ++
-
- {taskTableHTML ++ jsForScrollingDownToTaskTable}
-
- UIUtils.headerSparkPage(request, stageHeader, content, parent, showVisualization = true)
+ Option(taskTable).map({ taskPagedTable =>
+ val from = (eventTimelineTaskPage - 1) * eventTimelineTaskPageSize
+ val to = taskPagedTable.dataSource.dataSize.min(
+ eventTimelineTaskPage * eventTimelineTaskPageSize)
+ taskPagedTable.dataSource.sliceData(from, to)}).getOrElse(Nil), currentTime,
+ eventTimelineTaskPage, eventTimelineTaskPageSize, eventTimelineTotalPages, stageId,
+ stageAttemptId, totalTasks) ++
+
+
+
+
+ UIUtils.headerSparkPage(request, stageHeader, content, parent, showVisualization = true,
+ useDataTables = true)
+
}
- def makeTimeline(tasks: Seq[TaskData], currentTime: Long): Seq[Node] = {
+ def makeTimeline(
+ tasks: Seq[TaskData],
+ currentTime: Long,
+ page: Int,
+ pageSize: Int,
+ totalPages: Int,
+ stageId: Int,
+ stageAttemptId: Int,
+ totalTasks: Int): Seq[Node] = {
val executorsSet = new HashSet[(String, String)]
var minLaunchTime = Long.MaxValue
var maxFinishTime = Long.MinValue
@@ -657,6 +445,31 @@ private[ui] class StagePage(parent: StagesTab, store: AppStatusStore) extends We
Enable zooming
+
+
+
{TIMELINE_LEGEND}
++
@@ -958,7 +771,7 @@ private[ui] class TaskPagedTable(
}
}
-private[ui] object ApiHelper {
+private[spark] object ApiHelper {
val HEADER_ID = "ID"
val HEADER_TASK_INDEX = "Index"
diff --git a/core/src/test/resources/HistoryServerExpectations/blacklisting_for_stage_expectation.json b/core/src/test/resources/HistoryServerExpectations/blacklisting_for_stage_expectation.json
index 5e9e8230e274..62e5c123fd3d 100644
--- a/core/src/test/resources/HistoryServerExpectations/blacklisting_for_stage_expectation.json
+++ b/core/src/test/resources/HistoryServerExpectations/blacklisting_for_stage_expectation.json
@@ -1,639 +1,708 @@
{
- "status": "COMPLETE",
- "stageId": 0,
- "attemptId": 0,
- "numTasks": 10,
- "numActiveTasks": 0,
- "numCompleteTasks": 10,
- "numFailedTasks": 2,
- "numKilledTasks": 0,
- "numCompletedIndices": 10,
- "executorRunTime": 761,
- "executorCpuTime": 269916000,
- "submissionTime": "2018-01-09T10:21:18.152GMT",
- "firstTaskLaunchedTime": "2018-01-09T10:21:18.347GMT",
- "completionTime": "2018-01-09T10:21:19.062GMT",
- "inputBytes": 0,
- "inputRecords": 0,
- "outputBytes": 0,
- "outputRecords": 0,
- "shuffleReadBytes": 0,
- "shuffleReadRecords": 0,
- "shuffleWriteBytes": 460,
- "shuffleWriteRecords": 10,
- "memoryBytesSpilled": 0,
- "diskBytesSpilled": 0,
- "name": "map at :26",
- "details": "org.apache.spark.rdd.RDD.map(RDD.scala:370)\n$line17.$read$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw.(:26)\n$line17.$read$$iw$$iw$$iw$$iw$$iw$$iw$$iw.(:34)\n$line17.$read$$iw$$iw$$iw$$iw$$iw$$iw.(:36)\n$line17.$read$$iw$$iw$$iw$$iw$$iw.(:38)\n$line17.$read$$iw$$iw$$iw$$iw.(:40)\n$line17.$read$$iw$$iw$$iw.(:42)\n$line17.$read$$iw$$iw.(:44)\n$line17.$read$$iw.(:46)\n$line17.$read.(:48)\n$line17.$read$.(:52)\n$line17.$read$.()\n$line17.$eval$.$print$lzycompute(:7)\n$line17.$eval$.$print(:6)\n$line17.$eval.$print()\nsun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\nsun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\nsun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\njava.lang.reflect.Method.invoke(Method.java:498)\nscala.tools.nsc.interpreter.IMain$ReadEvalPrint.call(IMain.scala:786)",
- "schedulingPool": "default",
- "rddIds": [
- 1,
- 0
- ],
- "accumulatorUpdates": [],
- "tasks": {
- "0": {
- "taskId": 0,
- "index": 0,
- "attempt": 0,
- "launchTime": "2018-01-09T10:21:18.347GMT",
- "duration": 562,
- "executorId": "0",
- "host": "172.30.65.138",
- "status": "FAILED",
- "taskLocality": "PROCESS_LOCAL",
- "speculative": false,
- "accumulatorUpdates": [],
- "errorMessage": "java.lang.RuntimeException: Bad executor\n\tat $line17.$read$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$anonfun$2.apply(:27)\n\tat $line17.$read$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$anonfun$2.apply(:26)\n\tat scala.collection.Iterator$$anon$11.next(Iterator.scala:409)\n\tat org.apache.spark.util.collection.ExternalSorter.insertAll(ExternalSorter.scala:193)\n\tat org.apache.spark.shuffle.sort.SortShuffleWriter.write(SortShuffleWriter.scala:63)\n\tat org.apache.spark.scheduler.ShuffleMapTask.runTask(ShuffleMapTask.scala:96)\n\tat org.apache.spark.scheduler.ShuffleMapTask.runTask(ShuffleMapTask.scala:53)\n\tat org.apache.spark.scheduler.Task.run(Task.scala:109)\n\tat org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:345)\n\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n\tat java.lang.Thread.run(Thread.java:748)\n",
- "taskMetrics": {
- "executorDeserializeTime": 0,
- "executorDeserializeCpuTime": 0,
- "executorRunTime": 460,
- "executorCpuTime": 0,
- "resultSize": 0,
- "jvmGcTime": 14,
- "resultSerializationTime": 0,
- "memoryBytesSpilled": 0,
- "diskBytesSpilled": 0,
- "peakExecutionMemory": 0,
- "inputMetrics": {
- "bytesRead": 0,
- "recordsRead": 0
- },
- "outputMetrics": {
- "bytesWritten": 0,
- "recordsWritten": 0
- },
- "shuffleReadMetrics": {
- "remoteBlocksFetched": 0,
- "localBlocksFetched": 0,
- "fetchWaitTime": 0,
- "remoteBytesRead": 0,
- "remoteBytesReadToDisk": 0,
- "localBytesRead": 0,
- "recordsRead": 0
- },
- "shuffleWriteMetrics": {
- "bytesWritten": 0,
- "writeTime": 3873006,
- "recordsWritten": 0
+ "status" : "COMPLETE",
+ "stageId" : 0,
+ "attemptId" : 0,
+ "numTasks" : 10,
+ "numActiveTasks" : 0,
+ "numCompleteTasks" : 10,
+ "numFailedTasks" : 2,
+ "numKilledTasks" : 0,
+ "numCompletedIndices" : 10,
+ "executorRunTime" : 761,
+ "executorCpuTime" : 269916000,
+ "submissionTime" : "2018-01-09T10:21:18.152GMT",
+ "firstTaskLaunchedTime" : "2018-01-09T10:21:18.347GMT",
+ "completionTime" : "2018-01-09T10:21:19.062GMT",
+ "inputBytes" : 0,
+ "inputRecords" : 0,
+ "outputBytes" : 0,
+ "outputRecords" : 0,
+ "shuffleReadBytes" : 0,
+ "shuffleReadRecords" : 0,
+ "shuffleWriteBytes" : 460,
+ "shuffleWriteRecords" : 10,
+ "memoryBytesSpilled" : 0,
+ "diskBytesSpilled" : 0,
+ "name" : "map at :26",
+ "details" : "org.apache.spark.rdd.RDD.map(RDD.scala:370)\n$line17.$read$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw.(:26)\n$line17.$read$$iw$$iw$$iw$$iw$$iw$$iw$$iw.(:34)\n$line17.$read$$iw$$iw$$iw$$iw$$iw$$iw.(:36)\n$line17.$read$$iw$$iw$$iw$$iw$$iw.(:38)\n$line17.$read$$iw$$iw$$iw$$iw.(:40)\n$line17.$read$$iw$$iw$$iw.(:42)\n$line17.$read$$iw$$iw.(:44)\n$line17.$read$$iw.(:46)\n$line17.$read.(:48)\n$line17.$read$.(:52)\n$line17.$read$.()\n$line17.$eval$.$print$lzycompute(:7)\n$line17.$eval$.$print(:6)\n$line17.$eval.$print()\nsun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\nsun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\nsun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\njava.lang.reflect.Method.invoke(Method.java:498)\nscala.tools.nsc.interpreter.IMain$ReadEvalPrint.call(IMain.scala:786)",
+ "schedulingPool" : "default",
+ "rddIds" : [ 1, 0 ],
+ "accumulatorUpdates" : [ ],
+ "tasks" : {
+ "0" : {
+ "taskId" : 0,
+ "index" : 0,
+ "attempt" : 0,
+ "launchTime" : "2018-01-09T10:21:18.347GMT",
+ "duration" : 562,
+ "executorId" : "0",
+ "host" : "172.30.65.138",
+ "status" : "FAILED",
+ "taskLocality" : "PROCESS_LOCAL",
+ "speculative" : false,
+ "accumulatorUpdates" : [ ],
+ "errorMessage" : "java.lang.RuntimeException: Bad executor\n\tat $line17.$read$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$anonfun$2.apply(:27)\n\tat $line17.$read$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$anonfun$2.apply(:26)\n\tat scala.collection.Iterator$$anon$11.next(Iterator.scala:409)\n\tat org.apache.spark.util.collection.ExternalSorter.insertAll(ExternalSorter.scala:193)\n\tat org.apache.spark.shuffle.sort.SortShuffleWriter.write(SortShuffleWriter.scala:63)\n\tat org.apache.spark.scheduler.ShuffleMapTask.runTask(ShuffleMapTask.scala:96)\n\tat org.apache.spark.scheduler.ShuffleMapTask.runTask(ShuffleMapTask.scala:53)\n\tat org.apache.spark.scheduler.Task.run(Task.scala:109)\n\tat org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:345)\n\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n\tat java.lang.Thread.run(Thread.java:748)\n",
+ "taskMetrics" : {
+ "executorDeserializeTime" : 0,
+ "executorDeserializeCpuTime" : 0,
+ "executorRunTime" : 460,
+ "executorCpuTime" : 0,
+ "resultSize" : 0,
+ "jvmGcTime" : 14,
+ "resultSerializationTime" : 0,
+ "memoryBytesSpilled" : 0,
+ "diskBytesSpilled" : 0,
+ "peakExecutionMemory" : 0,
+ "inputMetrics" : {
+ "bytesRead" : 0,
+ "recordsRead" : 0
+ },
+ "outputMetrics" : {
+ "bytesWritten" : 0,
+ "recordsWritten" : 0
+ },
+ "shuffleReadMetrics" : {
+ "remoteBlocksFetched" : 0,
+ "localBlocksFetched" : 0,
+ "fetchWaitTime" : 0,
+ "remoteBytesRead" : 0,
+ "remoteBytesReadToDisk" : 0,
+ "localBytesRead" : 0,
+ "recordsRead" : 0
+ },
+ "shuffleWriteMetrics" : {
+ "bytesWritten" : 0,
+ "writeTime" : 3873006,
+ "recordsWritten" : 0
}
- }
+ },
+ "executorLogs" : {
+ "stdout" : "http://172.30.65.138:64279/logPage/?appId=app-20180109111548-0000&executorId=0&logType=stdout",
+ "stderr" : "http://172.30.65.138:64279/logPage/?appId=app-20180109111548-0000&executorId=0&logType=stderr"
+ },
+ "schedulerDelay" : 102,
+ "gettingResultTime" : 0
},
- "5": {
- "taskId": 5,
- "index": 3,
- "attempt": 0,
- "launchTime": "2018-01-09T10:21:18.958GMT",
- "duration": 22,
- "executorId": "1",
- "host": "172.30.65.138",
- "status": "SUCCESS",
- "taskLocality": "PROCESS_LOCAL",
- "speculative": false,
- "accumulatorUpdates": [],
- "taskMetrics": {
- "executorDeserializeTime": 3,
- "executorDeserializeCpuTime": 2586000,
- "executorRunTime": 9,
- "executorCpuTime": 9635000,
- "resultSize": 1029,
- "jvmGcTime": 0,
- "resultSerializationTime": 0,
- "memoryBytesSpilled": 0,
- "diskBytesSpilled": 0,
- "peakExecutionMemory": 0,
- "inputMetrics": {
- "bytesRead": 0,
- "recordsRead": 0
- },
- "outputMetrics": {
- "bytesWritten": 0,
- "recordsWritten": 0
- },
- "shuffleReadMetrics": {
- "remoteBlocksFetched": 0,
- "localBlocksFetched": 0,
- "fetchWaitTime": 0,
- "remoteBytesRead": 0,
- "remoteBytesReadToDisk": 0,
- "localBytesRead": 0,
- "recordsRead": 0
- },
- "shuffleWriteMetrics": {
- "bytesWritten": 46,
- "writeTime": 262919,
- "recordsWritten": 1
+ "5" : {
+ "taskId" : 5,
+ "index" : 3,
+ "attempt" : 0,
+ "launchTime" : "2018-01-09T10:21:18.958GMT",
+ "duration" : 22,
+ "executorId" : "1",
+ "host" : "172.30.65.138",
+ "status" : "SUCCESS",
+ "taskLocality" : "PROCESS_LOCAL",
+ "speculative" : false,
+ "accumulatorUpdates" : [ ],
+ "taskMetrics" : {
+ "executorDeserializeTime" : 3,
+ "executorDeserializeCpuTime" : 2586000,
+ "executorRunTime" : 9,
+ "executorCpuTime" : 9635000,
+ "resultSize" : 1029,
+ "jvmGcTime" : 0,
+ "resultSerializationTime" : 0,
+ "memoryBytesSpilled" : 0,
+ "diskBytesSpilled" : 0,
+ "peakExecutionMemory" : 0,
+ "inputMetrics" : {
+ "bytesRead" : 0,
+ "recordsRead" : 0
+ },
+ "outputMetrics" : {
+ "bytesWritten" : 0,
+ "recordsWritten" : 0
+ },
+ "shuffleReadMetrics" : {
+ "remoteBlocksFetched" : 0,
+ "localBlocksFetched" : 0,
+ "fetchWaitTime" : 0,
+ "remoteBytesRead" : 0,
+ "remoteBytesReadToDisk" : 0,
+ "localBytesRead" : 0,
+ "recordsRead" : 0
+ },
+ "shuffleWriteMetrics" : {
+ "bytesWritten" : 46,
+ "writeTime" : 262919,
+ "recordsWritten" : 1
}
- }
+ },
+ "executorLogs" : {
+ "stdout" : "http://172.30.65.138:64278/logPage/?appId=app-20180109111548-0000&executorId=1&logType=stdout",
+ "stderr" : "http://172.30.65.138:64278/logPage/?appId=app-20180109111548-0000&executorId=1&logType=stderr"
+ },
+ "schedulerDelay" : 10,
+ "gettingResultTime" : 0
},
- "10": {
- "taskId": 10,
- "index": 8,
- "attempt": 0,
- "launchTime": "2018-01-09T10:21:19.034GMT",
- "duration": 12,
- "executorId": "1",
- "host": "172.30.65.138",
- "status": "SUCCESS",
- "taskLocality": "PROCESS_LOCAL",
- "speculative": false,
- "accumulatorUpdates": [],
- "taskMetrics": {
- "executorDeserializeTime": 2,
- "executorDeserializeCpuTime": 1803000,
- "executorRunTime": 6,
- "executorCpuTime": 6157000,
- "resultSize": 1029,
- "jvmGcTime": 0,
- "resultSerializationTime": 0,
- "memoryBytesSpilled": 0,
- "diskBytesSpilled": 0,
- "peakExecutionMemory": 0,
- "inputMetrics": {
- "bytesRead": 0,
- "recordsRead": 0
- },
- "outputMetrics": {
- "bytesWritten": 0,
- "recordsWritten": 0
- },
- "shuffleReadMetrics": {
- "remoteBlocksFetched": 0,
- "localBlocksFetched": 0,
- "fetchWaitTime": 0,
- "remoteBytesRead": 0,
- "remoteBytesReadToDisk": 0,
- "localBytesRead": 0,
- "recordsRead": 0
- },
- "shuffleWriteMetrics": {
- "bytesWritten": 46,
- "writeTime": 243647,
- "recordsWritten": 1
+ "10" : {
+ "taskId" : 10,
+ "index" : 8,
+ "attempt" : 0,
+ "launchTime" : "2018-01-09T10:21:19.034GMT",
+ "duration" : 12,
+ "executorId" : "1",
+ "host" : "172.30.65.138",
+ "status" : "SUCCESS",
+ "taskLocality" : "PROCESS_LOCAL",
+ "speculative" : false,
+ "accumulatorUpdates" : [ ],
+ "taskMetrics" : {
+ "executorDeserializeTime" : 2,
+ "executorDeserializeCpuTime" : 1803000,
+ "executorRunTime" : 6,
+ "executorCpuTime" : 6157000,
+ "resultSize" : 1029,
+ "jvmGcTime" : 0,
+ "resultSerializationTime" : 0,
+ "memoryBytesSpilled" : 0,
+ "diskBytesSpilled" : 0,
+ "peakExecutionMemory" : 0,
+ "inputMetrics" : {
+ "bytesRead" : 0,
+ "recordsRead" : 0
+ },
+ "outputMetrics" : {
+ "bytesWritten" : 0,
+ "recordsWritten" : 0
+ },
+ "shuffleReadMetrics" : {
+ "remoteBlocksFetched" : 0,
+ "localBlocksFetched" : 0,
+ "fetchWaitTime" : 0,
+ "remoteBytesRead" : 0,
+ "remoteBytesReadToDisk" : 0,
+ "localBytesRead" : 0,
+ "recordsRead" : 0
+ },
+ "shuffleWriteMetrics" : {
+ "bytesWritten" : 46,
+ "writeTime" : 243647,
+ "recordsWritten" : 1
}
- }
+ },
+ "executorLogs" : {
+ "stdout" : "http://172.30.65.138:64278/logPage/?appId=app-20180109111548-0000&executorId=1&logType=stdout",
+ "stderr" : "http://172.30.65.138:64278/logPage/?appId=app-20180109111548-0000&executorId=1&logType=stderr"
+ },
+ "schedulerDelay" : 4,
+ "gettingResultTime" : 0
},
- "1": {
- "taskId": 1,
- "index": 1,
- "attempt": 0,
- "launchTime": "2018-01-09T10:21:18.364GMT",
- "duration": 565,
- "executorId": "1",
- "host": "172.30.65.138",
- "status": "SUCCESS",
- "taskLocality": "PROCESS_LOCAL",
- "speculative": false,
- "accumulatorUpdates": [],
- "taskMetrics": {
- "executorDeserializeTime": 301,
- "executorDeserializeCpuTime": 200029000,
- "executorRunTime": 212,
- "executorCpuTime": 198479000,
- "resultSize": 1115,
- "jvmGcTime": 13,
- "resultSerializationTime": 1,
- "memoryBytesSpilled": 0,
- "diskBytesSpilled": 0,
- "peakExecutionMemory": 0,
- "inputMetrics": {
- "bytesRead": 0,
- "recordsRead": 0
- },
- "outputMetrics": {
- "bytesWritten": 0,
- "recordsWritten": 0
- },
- "shuffleReadMetrics": {
- "remoteBlocksFetched": 0,
- "localBlocksFetched": 0,
- "fetchWaitTime": 0,
- "remoteBytesRead": 0,
- "remoteBytesReadToDisk": 0,
- "localBytesRead": 0,
- "recordsRead": 0
- },
- "shuffleWriteMetrics": {
- "bytesWritten": 46,
- "writeTime": 2409488,
- "recordsWritten": 1
+ "1" : {
+ "taskId" : 1,
+ "index" : 1,
+ "attempt" : 0,
+ "launchTime" : "2018-01-09T10:21:18.364GMT",
+ "duration" : 565,
+ "executorId" : "1",
+ "host" : "172.30.65.138",
+ "status" : "SUCCESS",
+ "taskLocality" : "PROCESS_LOCAL",
+ "speculative" : false,
+ "accumulatorUpdates" : [ ],
+ "taskMetrics" : {
+ "executorDeserializeTime" : 301,
+ "executorDeserializeCpuTime" : 200029000,
+ "executorRunTime" : 212,
+ "executorCpuTime" : 198479000,
+ "resultSize" : 1115,
+ "jvmGcTime" : 13,
+ "resultSerializationTime" : 1,
+ "memoryBytesSpilled" : 0,
+ "diskBytesSpilled" : 0,
+ "peakExecutionMemory" : 0,
+ "inputMetrics" : {
+ "bytesRead" : 0,
+ "recordsRead" : 0
+ },
+ "outputMetrics" : {
+ "bytesWritten" : 0,
+ "recordsWritten" : 0
+ },
+ "shuffleReadMetrics" : {
+ "remoteBlocksFetched" : 0,
+ "localBlocksFetched" : 0,
+ "fetchWaitTime" : 0,
+ "remoteBytesRead" : 0,
+ "remoteBytesReadToDisk" : 0,
+ "localBytesRead" : 0,
+ "recordsRead" : 0
+ },
+ "shuffleWriteMetrics" : {
+ "bytesWritten" : 46,
+ "writeTime" : 2409488,
+ "recordsWritten" : 1
}
- }
+ },
+ "executorLogs" : {
+ "stdout" : "http://172.30.65.138:64278/logPage/?appId=app-20180109111548-0000&executorId=1&logType=stdout",
+ "stderr" : "http://172.30.65.138:64278/logPage/?appId=app-20180109111548-0000&executorId=1&logType=stderr"
+ },
+ "schedulerDelay" : 51,
+ "gettingResultTime" : 0
},
- "6": {
- "taskId": 6,
- "index": 4,
- "attempt": 0,
- "launchTime": "2018-01-09T10:21:18.980GMT",
- "duration": 16,
- "executorId": "1",
- "host": "172.30.65.138",
- "status": "SUCCESS",
- "taskLocality": "PROCESS_LOCAL",
- "speculative": false,
- "accumulatorUpdates": [],
- "taskMetrics": {
- "executorDeserializeTime": 3,
- "executorDeserializeCpuTime": 2610000,
- "executorRunTime": 10,
- "executorCpuTime": 9622000,
- "resultSize": 1029,
- "jvmGcTime": 0,
- "resultSerializationTime": 0,
- "memoryBytesSpilled": 0,
- "diskBytesSpilled": 0,
- "peakExecutionMemory": 0,
- "inputMetrics": {
- "bytesRead": 0,
- "recordsRead": 0
- },
- "outputMetrics": {
- "bytesWritten": 0,
- "recordsWritten": 0
- },
- "shuffleReadMetrics": {
- "remoteBlocksFetched": 0,
- "localBlocksFetched": 0,
- "fetchWaitTime": 0,
- "remoteBytesRead": 0,
- "remoteBytesReadToDisk": 0,
- "localBytesRead": 0,
- "recordsRead": 0
- },
- "shuffleWriteMetrics": {
- "bytesWritten": 46,
- "writeTime": 385110,
- "recordsWritten": 1
+ "6" : {
+ "taskId" : 6,
+ "index" : 4,
+ "attempt" : 0,
+ "launchTime" : "2018-01-09T10:21:18.980GMT",
+ "duration" : 16,
+ "executorId" : "1",
+ "host" : "172.30.65.138",
+ "status" : "SUCCESS",
+ "taskLocality" : "PROCESS_LOCAL",
+ "speculative" : false,
+ "accumulatorUpdates" : [ ],
+ "taskMetrics" : {
+ "executorDeserializeTime" : 3,
+ "executorDeserializeCpuTime" : 2610000,
+ "executorRunTime" : 10,
+ "executorCpuTime" : 9622000,
+ "resultSize" : 1029,
+ "jvmGcTime" : 0,
+ "resultSerializationTime" : 0,
+ "memoryBytesSpilled" : 0,
+ "diskBytesSpilled" : 0,
+ "peakExecutionMemory" : 0,
+ "inputMetrics" : {
+ "bytesRead" : 0,
+ "recordsRead" : 0
+ },
+ "outputMetrics" : {
+ "bytesWritten" : 0,
+ "recordsWritten" : 0
+ },
+ "shuffleReadMetrics" : {
+ "remoteBlocksFetched" : 0,
+ "localBlocksFetched" : 0,
+ "fetchWaitTime" : 0,
+ "remoteBytesRead" : 0,
+ "remoteBytesReadToDisk" : 0,
+ "localBytesRead" : 0,
+ "recordsRead" : 0
+ },
+ "shuffleWriteMetrics" : {
+ "bytesWritten" : 46,
+ "writeTime" : 385110,
+ "recordsWritten" : 1
}
- }
+ },
+ "executorLogs" : {
+ "stdout" : "http://172.30.65.138:64278/logPage/?appId=app-20180109111548-0000&executorId=1&logType=stdout",
+ "stderr" : "http://172.30.65.138:64278/logPage/?appId=app-20180109111548-0000&executorId=1&logType=stderr"
+ },
+ "schedulerDelay" : 3,
+ "gettingResultTime" : 0
},
- "9": {
- "taskId": 9,
- "index": 7,
- "attempt": 0,
- "launchTime": "2018-01-09T10:21:19.022GMT",
- "duration": 12,
- "executorId": "1",
- "host": "172.30.65.138",
- "status": "SUCCESS",
- "taskLocality": "PROCESS_LOCAL",
- "speculative": false,
- "accumulatorUpdates": [],
- "taskMetrics": {
- "executorDeserializeTime": 2,
- "executorDeserializeCpuTime": 1981000,
- "executorRunTime": 7,
- "executorCpuTime": 6335000,
- "resultSize": 1029,
- "jvmGcTime": 0,
- "resultSerializationTime": 0,
- "memoryBytesSpilled": 0,
- "diskBytesSpilled": 0,
- "peakExecutionMemory": 0,
- "inputMetrics": {
- "bytesRead": 0,
- "recordsRead": 0
- },
- "outputMetrics": {
- "bytesWritten": 0,
- "recordsWritten": 0
- },
- "shuffleReadMetrics": {
- "remoteBlocksFetched": 0,
- "localBlocksFetched": 0,
- "fetchWaitTime": 0,
- "remoteBytesRead": 0,
- "remoteBytesReadToDisk": 0,
- "localBytesRead": 0,
- "recordsRead": 0
- },
- "shuffleWriteMetrics": {
- "bytesWritten": 46,
- "writeTime": 259354,
- "recordsWritten": 1
+ "9" : {
+ "taskId" : 9,
+ "index" : 7,
+ "attempt" : 0,
+ "launchTime" : "2018-01-09T10:21:19.022GMT",
+ "duration" : 12,
+ "executorId" : "1",
+ "host" : "172.30.65.138",
+ "status" : "SUCCESS",
+ "taskLocality" : "PROCESS_LOCAL",
+ "speculative" : false,
+ "accumulatorUpdates" : [ ],
+ "taskMetrics" : {
+ "executorDeserializeTime" : 2,
+ "executorDeserializeCpuTime" : 1981000,
+ "executorRunTime" : 7,
+ "executorCpuTime" : 6335000,
+ "resultSize" : 1029,
+ "jvmGcTime" : 0,
+ "resultSerializationTime" : 0,
+ "memoryBytesSpilled" : 0,
+ "diskBytesSpilled" : 0,
+ "peakExecutionMemory" : 0,
+ "inputMetrics" : {
+ "bytesRead" : 0,
+ "recordsRead" : 0
+ },
+ "outputMetrics" : {
+ "bytesWritten" : 0,
+ "recordsWritten" : 0
+ },
+ "shuffleReadMetrics" : {
+ "remoteBlocksFetched" : 0,
+ "localBlocksFetched" : 0,
+ "fetchWaitTime" : 0,
+ "remoteBytesRead" : 0,
+ "remoteBytesReadToDisk" : 0,
+ "localBytesRead" : 0,
+ "recordsRead" : 0
+ },
+ "shuffleWriteMetrics" : {
+ "bytesWritten" : 46,
+ "writeTime" : 259354,
+ "recordsWritten" : 1
}
- }
+ },
+ "executorLogs" : {
+ "stdout" : "http://172.30.65.138:64278/logPage/?appId=app-20180109111548-0000&executorId=1&logType=stdout",
+ "stderr" : "http://172.30.65.138:64278/logPage/?appId=app-20180109111548-0000&executorId=1&logType=stderr"
+ },
+ "schedulerDelay" : 3,
+ "gettingResultTime" : 0
},
- "2": {
- "taskId": 2,
- "index": 2,
- "attempt": 0,
- "launchTime": "2018-01-09T10:21:18.899GMT",
- "duration": 27,
- "executorId": "0",
- "host": "172.30.65.138",
- "status": "FAILED",
- "taskLocality": "PROCESS_LOCAL",
- "speculative": false,
- "accumulatorUpdates": [],
- "errorMessage": "java.lang.RuntimeException: Bad executor\n\tat $line17.$read$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$anonfun$2.apply(:27)\n\tat $line17.$read$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$anonfun$2.apply(:26)\n\tat scala.collection.Iterator$$anon$11.next(Iterator.scala:409)\n\tat org.apache.spark.util.collection.ExternalSorter.insertAll(ExternalSorter.scala:193)\n\tat org.apache.spark.shuffle.sort.SortShuffleWriter.write(SortShuffleWriter.scala:63)\n\tat org.apache.spark.scheduler.ShuffleMapTask.runTask(ShuffleMapTask.scala:96)\n\tat org.apache.spark.scheduler.ShuffleMapTask.runTask(ShuffleMapTask.scala:53)\n\tat org.apache.spark.scheduler.Task.run(Task.scala:109)\n\tat org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:345)\n\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n\tat java.lang.Thread.run(Thread.java:748)\n",
- "taskMetrics": {
- "executorDeserializeTime": 0,
- "executorDeserializeCpuTime": 0,
- "executorRunTime": 16,
- "executorCpuTime": 0,
- "resultSize": 0,
- "jvmGcTime": 0,
- "resultSerializationTime": 0,
- "memoryBytesSpilled": 0,
- "diskBytesSpilled": 0,
- "peakExecutionMemory": 0,
- "inputMetrics": {
- "bytesRead": 0,
- "recordsRead": 0
- },
- "outputMetrics": {
- "bytesWritten": 0,
- "recordsWritten": 0
- },
- "shuffleReadMetrics": {
- "remoteBlocksFetched": 0,
- "localBlocksFetched": 0,
- "fetchWaitTime": 0,
- "remoteBytesRead": 0,
- "remoteBytesReadToDisk": 0,
- "localBytesRead": 0,
- "recordsRead": 0
- },
- "shuffleWriteMetrics": {
- "bytesWritten": 0,
- "writeTime": 126128,
- "recordsWritten": 0
+ "2" : {
+ "taskId" : 2,
+ "index" : 2,
+ "attempt" : 0,
+ "launchTime" : "2018-01-09T10:21:18.899GMT",
+ "duration" : 27,
+ "executorId" : "0",
+ "host" : "172.30.65.138",
+ "status" : "FAILED",
+ "taskLocality" : "PROCESS_LOCAL",
+ "speculative" : false,
+ "accumulatorUpdates" : [ ],
+ "errorMessage" : "java.lang.RuntimeException: Bad executor\n\tat $line17.$read$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$anonfun$2.apply(:27)\n\tat $line17.$read$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$anonfun$2.apply(:26)\n\tat scala.collection.Iterator$$anon$11.next(Iterator.scala:409)\n\tat org.apache.spark.util.collection.ExternalSorter.insertAll(ExternalSorter.scala:193)\n\tat org.apache.spark.shuffle.sort.SortShuffleWriter.write(SortShuffleWriter.scala:63)\n\tat org.apache.spark.scheduler.ShuffleMapTask.runTask(ShuffleMapTask.scala:96)\n\tat org.apache.spark.scheduler.ShuffleMapTask.runTask(ShuffleMapTask.scala:53)\n\tat org.apache.spark.scheduler.Task.run(Task.scala:109)\n\tat org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:345)\n\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n\tat java.lang.Thread.run(Thread.java:748)\n",
+ "taskMetrics" : {
+ "executorDeserializeTime" : 0,
+ "executorDeserializeCpuTime" : 0,
+ "executorRunTime" : 16,
+ "executorCpuTime" : 0,
+ "resultSize" : 0,
+ "jvmGcTime" : 0,
+ "resultSerializationTime" : 0,
+ "memoryBytesSpilled" : 0,
+ "diskBytesSpilled" : 0,
+ "peakExecutionMemory" : 0,
+ "inputMetrics" : {
+ "bytesRead" : 0,
+ "recordsRead" : 0
+ },
+ "outputMetrics" : {
+ "bytesWritten" : 0,
+ "recordsWritten" : 0
+ },
+ "shuffleReadMetrics" : {
+ "remoteBlocksFetched" : 0,
+ "localBlocksFetched" : 0,
+ "fetchWaitTime" : 0,
+ "remoteBytesRead" : 0,
+ "remoteBytesReadToDisk" : 0,
+ "localBytesRead" : 0,
+ "recordsRead" : 0
+ },
+ "shuffleWriteMetrics" : {
+ "bytesWritten" : 0,
+ "writeTime" : 126128,
+ "recordsWritten" : 0
}
- }
+ },
+ "executorLogs" : {
+ "stdout" : "http://172.30.65.138:64279/logPage/?appId=app-20180109111548-0000&executorId=0&logType=stdout",
+ "stderr" : "http://172.30.65.138:64279/logPage/?appId=app-20180109111548-0000&executorId=0&logType=stderr"
+ },
+ "schedulerDelay" : 11,
+ "gettingResultTime" : 0
},
- "7": {
- "taskId": 7,
- "index": 5,
- "attempt": 0,
- "launchTime": "2018-01-09T10:21:18.996GMT",
- "duration": 15,
- "executorId": "1",
- "host": "172.30.65.138",
- "status": "SUCCESS",
- "taskLocality": "PROCESS_LOCAL",
- "speculative": false,
- "accumulatorUpdates": [],
- "taskMetrics": {
- "executorDeserializeTime": 2,
- "executorDeserializeCpuTime": 2231000,
- "executorRunTime": 9,
- "executorCpuTime": 8407000,
- "resultSize": 1029,
- "jvmGcTime": 0,
- "resultSerializationTime": 0,
- "memoryBytesSpilled": 0,
- "diskBytesSpilled": 0,
- "peakExecutionMemory": 0,
- "inputMetrics": {
- "bytesRead": 0,
- "recordsRead": 0
- },
- "outputMetrics": {
- "bytesWritten": 0,
- "recordsWritten": 0
- },
- "shuffleReadMetrics": {
- "remoteBlocksFetched": 0,
- "localBlocksFetched": 0,
- "fetchWaitTime": 0,
- "remoteBytesRead": 0,
- "remoteBytesReadToDisk": 0,
- "localBytesRead": 0,
- "recordsRead": 0
- },
- "shuffleWriteMetrics": {
- "bytesWritten": 46,
- "writeTime": 205520,
- "recordsWritten": 1
+ "7" : {
+ "taskId" : 7,
+ "index" : 5,
+ "attempt" : 0,
+ "launchTime" : "2018-01-09T10:21:18.996GMT",
+ "duration" : 15,
+ "executorId" : "1",
+ "host" : "172.30.65.138",
+ "status" : "SUCCESS",
+ "taskLocality" : "PROCESS_LOCAL",
+ "speculative" : false,
+ "accumulatorUpdates" : [ ],
+ "taskMetrics" : {
+ "executorDeserializeTime" : 2,
+ "executorDeserializeCpuTime" : 2231000,
+ "executorRunTime" : 9,
+ "executorCpuTime" : 8407000,
+ "resultSize" : 1029,
+ "jvmGcTime" : 0,
+ "resultSerializationTime" : 0,
+ "memoryBytesSpilled" : 0,
+ "diskBytesSpilled" : 0,
+ "peakExecutionMemory" : 0,
+ "inputMetrics" : {
+ "bytesRead" : 0,
+ "recordsRead" : 0
+ },
+ "outputMetrics" : {
+ "bytesWritten" : 0,
+ "recordsWritten" : 0
+ },
+ "shuffleReadMetrics" : {
+ "remoteBlocksFetched" : 0,
+ "localBlocksFetched" : 0,
+ "fetchWaitTime" : 0,
+ "remoteBytesRead" : 0,
+ "remoteBytesReadToDisk" : 0,
+ "localBytesRead" : 0,
+ "recordsRead" : 0
+ },
+ "shuffleWriteMetrics" : {
+ "bytesWritten" : 46,
+ "writeTime" : 205520,
+ "recordsWritten" : 1
}
- }
+ },
+ "executorLogs" : {
+ "stdout" : "http://172.30.65.138:64278/logPage/?appId=app-20180109111548-0000&executorId=1&logType=stdout",
+ "stderr" : "http://172.30.65.138:64278/logPage/?appId=app-20180109111548-0000&executorId=1&logType=stderr"
+ },
+ "schedulerDelay" : 4,
+ "gettingResultTime" : 0
},
- "3": {
- "taskId": 3,
- "index": 0,
- "attempt": 1,
- "launchTime": "2018-01-09T10:21:18.919GMT",
- "duration": 24,
- "executorId": "1",
- "host": "172.30.65.138",
- "status": "SUCCESS",
- "taskLocality": "PROCESS_LOCAL",
- "speculative": false,
- "accumulatorUpdates": [],
- "taskMetrics": {
- "executorDeserializeTime": 8,
- "executorDeserializeCpuTime": 8878000,
- "executorRunTime": 10,
- "executorCpuTime": 9364000,
- "resultSize": 1029,
- "jvmGcTime": 0,
- "resultSerializationTime": 0,
- "memoryBytesSpilled": 0,
- "diskBytesSpilled": 0,
- "peakExecutionMemory": 0,
- "inputMetrics": {
- "bytesRead": 0,
- "recordsRead": 0
- },
- "outputMetrics": {
- "bytesWritten": 0,
- "recordsWritten": 0
- },
- "shuffleReadMetrics": {
- "remoteBlocksFetched": 0,
- "localBlocksFetched": 0,
- "fetchWaitTime": 0,
- "remoteBytesRead": 0,
- "remoteBytesReadToDisk": 0,
- "localBytesRead": 0,
- "recordsRead": 0
- },
- "shuffleWriteMetrics": {
- "bytesWritten": 46,
- "writeTime": 207014,
- "recordsWritten": 1
+ "3" : {
+ "taskId" : 3,
+ "index" : 0,
+ "attempt" : 1,
+ "launchTime" : "2018-01-09T10:21:18.919GMT",
+ "duration" : 24,
+ "executorId" : "1",
+ "host" : "172.30.65.138",
+ "status" : "SUCCESS",
+ "taskLocality" : "PROCESS_LOCAL",
+ "speculative" : false,
+ "accumulatorUpdates" : [ ],
+ "taskMetrics" : {
+ "executorDeserializeTime" : 8,
+ "executorDeserializeCpuTime" : 8878000,
+ "executorRunTime" : 10,
+ "executorCpuTime" : 9364000,
+ "resultSize" : 1029,
+ "jvmGcTime" : 0,
+ "resultSerializationTime" : 0,
+ "memoryBytesSpilled" : 0,
+ "diskBytesSpilled" : 0,
+ "peakExecutionMemory" : 0,
+ "inputMetrics" : {
+ "bytesRead" : 0,
+ "recordsRead" : 0
+ },
+ "outputMetrics" : {
+ "bytesWritten" : 0,
+ "recordsWritten" : 0
+ },
+ "shuffleReadMetrics" : {
+ "remoteBlocksFetched" : 0,
+ "localBlocksFetched" : 0,
+ "fetchWaitTime" : 0,
+ "remoteBytesRead" : 0,
+ "remoteBytesReadToDisk" : 0,
+ "localBytesRead" : 0,
+ "recordsRead" : 0
+ },
+ "shuffleWriteMetrics" : {
+ "bytesWritten" : 46,
+ "writeTime" : 207014,
+ "recordsWritten" : 1
}
- }
+ },
+ "executorLogs" : {
+ "stdout" : "http://172.30.65.138:64278/logPage/?appId=app-20180109111548-0000&executorId=1&logType=stdout",
+ "stderr" : "http://172.30.65.138:64278/logPage/?appId=app-20180109111548-0000&executorId=1&logType=stderr"
+ },
+ "schedulerDelay" : 6,
+ "gettingResultTime" : 0
},
- "11": {
- "taskId": 11,
- "index": 9,
- "attempt": 0,
- "launchTime": "2018-01-09T10:21:19.045GMT",
- "duration": 15,
- "executorId": "1",
- "host": "172.30.65.138",
- "status": "SUCCESS",
- "taskLocality": "PROCESS_LOCAL",
- "speculative": false,
- "accumulatorUpdates": [],
- "taskMetrics": {
- "executorDeserializeTime": 3,
- "executorDeserializeCpuTime": 2017000,
- "executorRunTime": 6,
- "executorCpuTime": 6676000,
- "resultSize": 1029,
- "jvmGcTime": 0,
- "resultSerializationTime": 0,
- "memoryBytesSpilled": 0,
- "diskBytesSpilled": 0,
- "peakExecutionMemory": 0,
- "inputMetrics": {
- "bytesRead": 0,
- "recordsRead": 0
- },
- "outputMetrics": {
- "bytesWritten": 0,
- "recordsWritten": 0
- },
- "shuffleReadMetrics": {
- "remoteBlocksFetched": 0,
- "localBlocksFetched": 0,
- "fetchWaitTime": 0,
- "remoteBytesRead": 0,
- "remoteBytesReadToDisk": 0,
- "localBytesRead": 0,
- "recordsRead": 0
- },
- "shuffleWriteMetrics": {
- "bytesWritten": 46,
- "writeTime": 233652,
- "recordsWritten": 1
+ "11" : {
+ "taskId" : 11,
+ "index" : 9,
+ "attempt" : 0,
+ "launchTime" : "2018-01-09T10:21:19.045GMT",
+ "duration" : 15,
+ "executorId" : "1",
+ "host" : "172.30.65.138",
+ "status" : "SUCCESS",
+ "taskLocality" : "PROCESS_LOCAL",
+ "speculative" : false,
+ "accumulatorUpdates" : [ ],
+ "taskMetrics" : {
+ "executorDeserializeTime" : 3,
+ "executorDeserializeCpuTime" : 2017000,
+ "executorRunTime" : 6,
+ "executorCpuTime" : 6676000,
+ "resultSize" : 1029,
+ "jvmGcTime" : 0,
+ "resultSerializationTime" : 0,
+ "memoryBytesSpilled" : 0,
+ "diskBytesSpilled" : 0,
+ "peakExecutionMemory" : 0,
+ "inputMetrics" : {
+ "bytesRead" : 0,
+ "recordsRead" : 0
+ },
+ "outputMetrics" : {
+ "bytesWritten" : 0,
+ "recordsWritten" : 0
+ },
+ "shuffleReadMetrics" : {
+ "remoteBlocksFetched" : 0,
+ "localBlocksFetched" : 0,
+ "fetchWaitTime" : 0,
+ "remoteBytesRead" : 0,
+ "remoteBytesReadToDisk" : 0,
+ "localBytesRead" : 0,
+ "recordsRead" : 0
+ },
+ "shuffleWriteMetrics" : {
+ "bytesWritten" : 46,
+ "writeTime" : 233652,
+ "recordsWritten" : 1
}
- }
+ },
+ "executorLogs" : {
+ "stdout" : "http://172.30.65.138:64278/logPage/?appId=app-20180109111548-0000&executorId=1&logType=stdout",
+ "stderr" : "http://172.30.65.138:64278/logPage/?appId=app-20180109111548-0000&executorId=1&logType=stderr"
+ },
+ "schedulerDelay" : 6,
+ "gettingResultTime" : 0
},
- "8": {
- "taskId": 8,
- "index": 6,
- "attempt": 0,
- "launchTime": "2018-01-09T10:21:19.011GMT",
- "duration": 11,
- "executorId": "1",
- "host": "172.30.65.138",
- "status": "SUCCESS",
- "taskLocality": "PROCESS_LOCAL",
- "speculative": false,
- "accumulatorUpdates": [],
- "taskMetrics": {
- "executorDeserializeTime": 1,
- "executorDeserializeCpuTime": 1554000,
- "executorRunTime": 7,
- "executorCpuTime": 6034000,
- "resultSize": 1029,
- "jvmGcTime": 0,
- "resultSerializationTime": 0,
- "memoryBytesSpilled": 0,
- "diskBytesSpilled": 0,
- "peakExecutionMemory": 0,
- "inputMetrics": {
- "bytesRead": 0,
- "recordsRead": 0
- },
- "outputMetrics": {
- "bytesWritten": 0,
- "recordsWritten": 0
- },
- "shuffleReadMetrics": {
- "remoteBlocksFetched": 0,
- "localBlocksFetched": 0,
- "fetchWaitTime": 0,
- "remoteBytesRead": 0,
- "remoteBytesReadToDisk": 0,
- "localBytesRead": 0,
- "recordsRead": 0
- },
- "shuffleWriteMetrics": {
- "bytesWritten": 46,
- "writeTime": 213296,
- "recordsWritten": 1
+ "8" : {
+ "taskId" : 8,
+ "index" : 6,
+ "attempt" : 0,
+ "launchTime" : "2018-01-09T10:21:19.011GMT",
+ "duration" : 11,
+ "executorId" : "1",
+ "host" : "172.30.65.138",
+ "status" : "SUCCESS",
+ "taskLocality" : "PROCESS_LOCAL",
+ "speculative" : false,
+ "accumulatorUpdates" : [ ],
+ "taskMetrics" : {
+ "executorDeserializeTime" : 1,
+ "executorDeserializeCpuTime" : 1554000,
+ "executorRunTime" : 7,
+ "executorCpuTime" : 6034000,
+ "resultSize" : 1029,
+ "jvmGcTime" : 0,
+ "resultSerializationTime" : 0,
+ "memoryBytesSpilled" : 0,
+ "diskBytesSpilled" : 0,
+ "peakExecutionMemory" : 0,
+ "inputMetrics" : {
+ "bytesRead" : 0,
+ "recordsRead" : 0
+ },
+ "outputMetrics" : {
+ "bytesWritten" : 0,
+ "recordsWritten" : 0
+ },
+ "shuffleReadMetrics" : {
+ "remoteBlocksFetched" : 0,
+ "localBlocksFetched" : 0,
+ "fetchWaitTime" : 0,
+ "remoteBytesRead" : 0,
+ "remoteBytesReadToDisk" : 0,
+ "localBytesRead" : 0,
+ "recordsRead" : 0
+ },
+ "shuffleWriteMetrics" : {
+ "bytesWritten" : 46,
+ "writeTime" : 213296,
+ "recordsWritten" : 1
}
- }
+ },
+ "executorLogs" : {
+ "stdout" : "http://172.30.65.138:64278/logPage/?appId=app-20180109111548-0000&executorId=1&logType=stdout",
+ "stderr" : "http://172.30.65.138:64278/logPage/?appId=app-20180109111548-0000&executorId=1&logType=stderr"
+ },
+ "schedulerDelay" : 3,
+ "gettingResultTime" : 0
},
- "4": {
- "taskId": 4,
- "index": 2,
- "attempt": 1,
- "launchTime": "2018-01-09T10:21:18.943GMT",
- "duration": 16,
- "executorId": "1",
- "host": "172.30.65.138",
- "status": "SUCCESS",
- "taskLocality": "PROCESS_LOCAL",
- "speculative": false,
- "accumulatorUpdates": [],
- "taskMetrics": {
- "executorDeserializeTime": 2,
- "executorDeserializeCpuTime": 2211000,
- "executorRunTime": 9,
- "executorCpuTime": 9207000,
- "resultSize": 1029,
- "jvmGcTime": 0,
- "resultSerializationTime": 0,
- "memoryBytesSpilled": 0,
- "diskBytesSpilled": 0,
- "peakExecutionMemory": 0,
- "inputMetrics": {
- "bytesRead": 0,
- "recordsRead": 0
- },
- "outputMetrics": {
- "bytesWritten": 0,
- "recordsWritten": 0
- },
- "shuffleReadMetrics": {
- "remoteBlocksFetched": 0,
- "localBlocksFetched": 0,
- "fetchWaitTime": 0,
- "remoteBytesRead": 0,
- "remoteBytesReadToDisk": 0,
- "localBytesRead": 0,
- "recordsRead": 0
- },
- "shuffleWriteMetrics": {
- "bytesWritten": 46,
- "writeTime": 292381,
- "recordsWritten": 1
+ "4" : {
+ "taskId" : 4,
+ "index" : 2,
+ "attempt" : 1,
+ "launchTime" : "2018-01-09T10:21:18.943GMT",
+ "duration" : 16,
+ "executorId" : "1",
+ "host" : "172.30.65.138",
+ "status" : "SUCCESS",
+ "taskLocality" : "PROCESS_LOCAL",
+ "speculative" : false,
+ "accumulatorUpdates" : [ ],
+ "taskMetrics" : {
+ "executorDeserializeTime" : 2,
+ "executorDeserializeCpuTime" : 2211000,
+ "executorRunTime" : 9,
+ "executorCpuTime" : 9207000,
+ "resultSize" : 1029,
+ "jvmGcTime" : 0,
+ "resultSerializationTime" : 0,
+ "memoryBytesSpilled" : 0,
+ "diskBytesSpilled" : 0,
+ "peakExecutionMemory" : 0,
+ "inputMetrics" : {
+ "bytesRead" : 0,
+ "recordsRead" : 0
+ },
+ "outputMetrics" : {
+ "bytesWritten" : 0,
+ "recordsWritten" : 0
+ },
+ "shuffleReadMetrics" : {
+ "remoteBlocksFetched" : 0,
+ "localBlocksFetched" : 0,
+ "fetchWaitTime" : 0,
+ "remoteBytesRead" : 0,
+ "remoteBytesReadToDisk" : 0,
+ "localBytesRead" : 0,
+ "recordsRead" : 0
+ },
+ "shuffleWriteMetrics" : {
+ "bytesWritten" : 46,
+ "writeTime" : 292381,
+ "recordsWritten" : 1
}
- }
+ },
+ "executorLogs" : {
+ "stdout" : "http://172.30.65.138:64278/logPage/?appId=app-20180109111548-0000&executorId=1&logType=stdout",
+ "stderr" : "http://172.30.65.138:64278/logPage/?appId=app-20180109111548-0000&executorId=1&logType=stderr"
+ },
+ "schedulerDelay" : 5,
+ "gettingResultTime" : 0
}
},
- "executorSummary": {
- "0": {
- "taskTime": 589,
- "failedTasks": 2,
- "succeededTasks": 0,
- "killedTasks": 0,
- "inputBytes": 0,
- "inputRecords": 0,
- "outputBytes": 0,
- "outputRecords": 0,
- "shuffleRead": 0,
- "shuffleReadRecords": 0,
- "shuffleWrite": 0,
- "shuffleWriteRecords": 0,
- "memoryBytesSpilled": 0,
- "diskBytesSpilled": 0,
- "isBlacklistedForStage": true
+ "executorSummary" : {
+ "0" : {
+ "taskTime" : 589,
+ "failedTasks" : 2,
+ "succeededTasks" : 0,
+ "killedTasks" : 0,
+ "inputBytes" : 0,
+ "inputRecords" : 0,
+ "outputBytes" : 0,
+ "outputRecords" : 0,
+ "shuffleRead" : 0,
+ "shuffleReadRecords" : 0,
+ "shuffleWrite" : 0,
+ "shuffleWriteRecords" : 0,
+ "memoryBytesSpilled" : 0,
+ "diskBytesSpilled" : 0,
+ "isBlacklistedForStage" : true
},
- "1": {
- "taskTime": 708,
- "failedTasks": 0,
- "succeededTasks": 10,
- "killedTasks": 0,
- "inputBytes": 0,
- "inputRecords": 0,
- "outputBytes": 0,
- "outputRecords": 0,
- "shuffleRead": 0,
- "shuffleReadRecords": 0,
- "shuffleWrite": 460,
- "shuffleWriteRecords": 10,
- "memoryBytesSpilled": 0,
- "diskBytesSpilled": 0,
- "isBlacklistedForStage": false
+ "1" : {
+ "taskTime" : 708,
+ "failedTasks" : 0,
+ "succeededTasks" : 10,
+ "killedTasks" : 0,
+ "inputBytes" : 0,
+ "inputRecords" : 0,
+ "outputBytes" : 0,
+ "outputRecords" : 0,
+ "shuffleRead" : 0,
+ "shuffleReadRecords" : 0,
+ "shuffleWrite" : 460,
+ "shuffleWriteRecords" : 10,
+ "memoryBytesSpilled" : 0,
+ "diskBytesSpilled" : 0,
+ "isBlacklistedForStage" : false
}
},
- "killedTasksSummary": {}
+ "killedTasksSummary" : { }
}
diff --git a/core/src/test/resources/HistoryServerExpectations/blacklisting_node_for_stage_expectation.json b/core/src/test/resources/HistoryServerExpectations/blacklisting_node_for_stage_expectation.json
index acd4cc53de6c..6e46c881b2a2 100644
--- a/core/src/test/resources/HistoryServerExpectations/blacklisting_node_for_stage_expectation.json
+++ b/core/src/test/resources/HistoryServerExpectations/blacklisting_node_for_stage_expectation.json
@@ -74,7 +74,13 @@
"writeTime" : 3662221,
"recordsWritten" : 3
}
- }
+ },
+ "executorLogs" : {
+ "stdout" : "http://apiros-3.gce.test.com:8042/node/containerlogs/container_1516285256255_0012_01_000002/attilapiros/stdout?start=-4096",
+ "stderr" : "http://apiros-3.gce.test.com:8042/node/containerlogs/container_1516285256255_0012_01_000002/attilapiros/stderr?start=-4096"
+ },
+ "schedulerDelay" : 68,
+ "gettingResultTime" : 0
},
"5" : {
"taskId" : 5,
@@ -122,7 +128,13 @@
"writeTime" : 191901,
"recordsWritten" : 0
}
- }
+ },
+ "executorLogs" : {
+ "stdout" : "http://apiros-2.gce.test.com:8042/node/containerlogs/container_1516285256255_0012_01_000007/attilapiros/stdout?start=-4096",
+ "stderr" : "http://apiros-2.gce.test.com:8042/node/containerlogs/container_1516285256255_0012_01_000007/attilapiros/stderr?start=-4096"
+ },
+ "schedulerDelay" : 46,
+ "gettingResultTime" : 0
},
"10" : {
"taskId" : 10,
@@ -169,7 +181,13 @@
"writeTime" : 301705,
"recordsWritten" : 3
}
- }
+ },
+ "executorLogs" : {
+ "stdout" : "http://apiros-3.gce.test.com:8042/node/containerlogs/container_1516285256255_0012_01_000003/attilapiros/stdout?start=-4096",
+ "stderr" : "http://apiros-3.gce.test.com:8042/node/containerlogs/container_1516285256255_0012_01_000003/attilapiros/stderr?start=-4096"
+ },
+ "schedulerDelay" : 50,
+ "gettingResultTime" : 0
},
"1" : {
"taskId" : 1,
@@ -217,7 +235,13 @@
"writeTime" : 3075188,
"recordsWritten" : 0
}
- }
+ },
+ "executorLogs" : {
+ "stdout" : "http://apiros-2.gce.test.com:8042/node/containerlogs/container_1516285256255_0012_01_000007/attilapiros/stdout?start=-4096",
+ "stderr" : "http://apiros-2.gce.test.com:8042/node/containerlogs/container_1516285256255_0012_01_000007/attilapiros/stderr?start=-4096"
+ },
+ "schedulerDelay" : 174,
+ "gettingResultTime" : 0
},
"6" : {
"taskId" : 6,
@@ -265,7 +289,13 @@
"writeTime" : 183718,
"recordsWritten" : 0
}
- }
+ },
+ "executorLogs" : {
+ "stdout" : "http://apiros-2.gce.test.com:8042/node/containerlogs/container_1516285256255_0012_01_000005/attilapiros/stdout?start=-4096",
+ "stderr" : "http://apiros-2.gce.test.com:8042/node/containerlogs/container_1516285256255_0012_01_000005/attilapiros/stderr?start=-4096"
+ },
+ "schedulerDelay" : 16,
+ "gettingResultTime" : 0
},
"9" : {
"taskId" : 9,
@@ -312,7 +342,13 @@
"writeTime" : 366050,
"recordsWritten" : 3
}
- }
+ },
+ "executorLogs" : {
+ "stdout" : "http://apiros-3.gce.test.com:8042/node/containerlogs/container_1516285256255_0012_01_000003/attilapiros/stdout?start=-4096",
+ "stderr" : "http://apiros-3.gce.test.com:8042/node/containerlogs/container_1516285256255_0012_01_000003/attilapiros/stderr?start=-4096"
+ },
+ "schedulerDelay" : 42,
+ "gettingResultTime" : 0
},
"13" : {
"taskId" : 13,
@@ -359,7 +395,13 @@
"writeTime" : 369513,
"recordsWritten" : 3
}
- }
+ },
+ "executorLogs" : {
+ "stdout" : "http://apiros-3.gce.test.com:8042/node/containerlogs/container_1516285256255_0012_01_000003/attilapiros/stdout?start=-4096",
+ "stderr" : "http://apiros-3.gce.test.com:8042/node/containerlogs/container_1516285256255_0012_01_000003/attilapiros/stderr?start=-4096"
+ },
+ "schedulerDelay" : 26,
+ "gettingResultTime" : 0
},
"2" : {
"taskId" : 2,
@@ -406,7 +448,13 @@
"writeTime" : 3322956,
"recordsWritten" : 3
}
- }
+ },
+ "executorLogs" : {
+ "stdout" : "http://apiros-2.gce.test.com:8042/node/containerlogs/container_1516285256255_0012_01_000004/attilapiros/stdout?start=-4096",
+ "stderr" : "http://apiros-2.gce.test.com:8042/node/containerlogs/container_1516285256255_0012_01_000004/attilapiros/stderr?start=-4096"
+ },
+ "schedulerDelay" : 74,
+ "gettingResultTime" : 0
},
"12" : {
"taskId" : 12,
@@ -453,7 +501,13 @@
"writeTime" : 319101,
"recordsWritten" : 3
}
- }
+ },
+ "executorLogs" : {
+ "stdout" : "http://apiros-3.gce.test.com:8042/node/containerlogs/container_1516285256255_0012_01_000002/attilapiros/stdout?start=-4096",
+ "stderr" : "http://apiros-3.gce.test.com:8042/node/containerlogs/container_1516285256255_0012_01_000002/attilapiros/stderr?start=-4096"
+ },
+ "schedulerDelay" : 22,
+ "gettingResultTime" : 0
},
"7" : {
"taskId" : 7,
@@ -500,7 +554,13 @@
"writeTime" : 377601,
"recordsWritten" : 3
}
- }
+ },
+ "executorLogs" : {
+ "stdout" : "http://apiros-3.gce.test.com:8042/node/containerlogs/container_1516285256255_0012_01_000003/attilapiros/stdout?start=-4096",
+ "stderr" : "http://apiros-3.gce.test.com:8042/node/containerlogs/container_1516285256255_0012_01_000003/attilapiros/stderr?start=-4096"
+ },
+ "schedulerDelay" : 20,
+ "gettingResultTime" : 0
},
"3" : {
"taskId" : 3,
@@ -547,7 +607,13 @@
"writeTime" : 3587839,
"recordsWritten" : 3
}
- }
+ },
+ "executorLogs" : {
+ "stdout" : "http://apiros-3.gce.test.com:8042/node/containerlogs/container_1516285256255_0012_01_000003/attilapiros/stdout?start=-4096",
+ "stderr" : "http://apiros-3.gce.test.com:8042/node/containerlogs/container_1516285256255_0012_01_000003/attilapiros/stderr?start=-4096"
+ },
+ "schedulerDelay" : 63,
+ "gettingResultTime" : 0
},
"11" : {
"taskId" : 11,
@@ -594,7 +660,13 @@
"writeTime" : 323898,
"recordsWritten" : 3
}
- }
+ },
+ "executorLogs" : {
+ "stdout" : "http://apiros-3.gce.test.com:8042/node/containerlogs/container_1516285256255_0012_01_000002/attilapiros/stdout?start=-4096",
+ "stderr" : "http://apiros-3.gce.test.com:8042/node/containerlogs/container_1516285256255_0012_01_000002/attilapiros/stderr?start=-4096"
+ },
+ "schedulerDelay" : 12,
+ "gettingResultTime" : 0
},
"8" : {
"taskId" : 8,
@@ -641,7 +713,13 @@
"writeTime" : 311940,
"recordsWritten" : 3
}
- }
+ },
+ "executorLogs" : {
+ "stdout" : "http://apiros-3.gce.test.com:8042/node/containerlogs/container_1516285256255_0012_01_000002/attilapiros/stdout?start=-4096",
+ "stderr" : "http://apiros-3.gce.test.com:8042/node/containerlogs/container_1516285256255_0012_01_000002/attilapiros/stderr?start=-4096"
+ },
+ "schedulerDelay" : 84,
+ "gettingResultTime" : 0
},
"4" : {
"taskId" : 4,
@@ -689,7 +767,13 @@
"writeTime" : 16858066,
"recordsWritten" : 0
}
- }
+ },
+ "executorLogs" : {
+ "stdout" : "http://apiros-2.gce.test.com:8042/node/containerlogs/container_1516285256255_0012_01_000005/attilapiros/stdout?start=-4096",
+ "stderr" : "http://apiros-2.gce.test.com:8042/node/containerlogs/container_1516285256255_0012_01_000005/attilapiros/stderr?start=-4096"
+ },
+ "schedulerDelay" : 338,
+ "gettingResultTime" : 0
}
},
"executorSummary" : {
diff --git a/core/src/test/resources/HistoryServerExpectations/one_stage_attempt_json_expectation.json b/core/src/test/resources/HistoryServerExpectations/one_stage_attempt_json_expectation.json
index 03f886afa541..aa9471301fe3 100644
--- a/core/src/test/resources/HistoryServerExpectations/one_stage_attempt_json_expectation.json
+++ b/core/src/test/resources/HistoryServerExpectations/one_stage_attempt_json_expectation.json
@@ -74,7 +74,10 @@
"writeTime" : 76000,
"recordsWritten" : 0
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 19,
+ "gettingResultTime" : 0
},
"14" : {
"taskId" : 14,
@@ -121,7 +124,10 @@
"writeTime" : 88000,
"recordsWritten" : 0
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 13,
+ "gettingResultTime" : 0
},
"9" : {
"taskId" : 9,
@@ -168,7 +174,10 @@
"writeTime" : 98000,
"recordsWritten" : 0
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 17,
+ "gettingResultTime" : 0
},
"13" : {
"taskId" : 13,
@@ -215,7 +224,10 @@
"writeTime" : 73000,
"recordsWritten" : 0
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 14,
+ "gettingResultTime" : 0
},
"12" : {
"taskId" : 12,
@@ -262,7 +274,10 @@
"writeTime" : 101000,
"recordsWritten" : 0
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 17,
+ "gettingResultTime" : 0
},
"11" : {
"taskId" : 11,
@@ -309,7 +324,10 @@
"writeTime" : 83000,
"recordsWritten" : 0
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 17,
+ "gettingResultTime" : 0
},
"8" : {
"taskId" : 8,
@@ -356,7 +374,10 @@
"writeTime" : 94000,
"recordsWritten" : 0
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 16,
+ "gettingResultTime" : 0
},
"15" : {
"taskId" : 15,
@@ -403,7 +424,10 @@
"writeTime" : 79000,
"recordsWritten" : 0
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 13,
+ "gettingResultTime" : 0
}
},
"executorSummary" : {
diff --git a/core/src/test/resources/HistoryServerExpectations/one_stage_json_expectation.json b/core/src/test/resources/HistoryServerExpectations/one_stage_json_expectation.json
index 947c89906955..584803b5e863 100644
--- a/core/src/test/resources/HistoryServerExpectations/one_stage_json_expectation.json
+++ b/core/src/test/resources/HistoryServerExpectations/one_stage_json_expectation.json
@@ -74,7 +74,10 @@
"writeTime" : 76000,
"recordsWritten" : 0
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 19,
+ "gettingResultTime" : 0
},
"14" : {
"taskId" : 14,
@@ -121,7 +124,10 @@
"writeTime" : 88000,
"recordsWritten" : 0
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 13,
+ "gettingResultTime" : 0
},
"9" : {
"taskId" : 9,
@@ -168,7 +174,10 @@
"writeTime" : 98000,
"recordsWritten" : 0
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 17,
+ "gettingResultTime" : 0
},
"13" : {
"taskId" : 13,
@@ -215,7 +224,10 @@
"writeTime" : 73000,
"recordsWritten" : 0
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 14,
+ "gettingResultTime" : 0
},
"12" : {
"taskId" : 12,
@@ -262,7 +274,10 @@
"writeTime" : 101000,
"recordsWritten" : 0
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 17,
+ "gettingResultTime" : 0
},
"11" : {
"taskId" : 11,
@@ -309,7 +324,10 @@
"writeTime" : 83000,
"recordsWritten" : 0
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 17,
+ "gettingResultTime" : 0
},
"8" : {
"taskId" : 8,
@@ -356,7 +374,10 @@
"writeTime" : 94000,
"recordsWritten" : 0
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 16,
+ "gettingResultTime" : 0
},
"15" : {
"taskId" : 15,
@@ -403,7 +424,10 @@
"writeTime" : 79000,
"recordsWritten" : 0
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 13,
+ "gettingResultTime" : 0
}
},
"executorSummary" : {
diff --git a/core/src/test/resources/HistoryServerExpectations/stage_task_list_expectation.json b/core/src/test/resources/HistoryServerExpectations/stage_task_list_expectation.json
index a15ee2352336..f859ab6fff24 100644
--- a/core/src/test/resources/HistoryServerExpectations/stage_task_list_expectation.json
+++ b/core/src/test/resources/HistoryServerExpectations/stage_task_list_expectation.json
@@ -43,7 +43,10 @@
"writeTime" : 3842811,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 53,
+ "gettingResultTime" : 0
}, {
"taskId" : 1,
"index" : 1,
@@ -89,7 +92,10 @@
"writeTime" : 3934399,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 40,
+ "gettingResultTime" : 0
}, {
"taskId" : 2,
"index" : 2,
@@ -135,7 +141,10 @@
"writeTime" : 89885,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 37,
+ "gettingResultTime" : 0
}, {
"taskId" : 3,
"index" : 3,
@@ -181,7 +190,10 @@
"writeTime" : 1311694,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 41,
+ "gettingResultTime" : 0
}, {
"taskId" : 4,
"index" : 4,
@@ -227,7 +239,10 @@
"writeTime" : 83022,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 38,
+ "gettingResultTime" : 0
}, {
"taskId" : 5,
"index" : 5,
@@ -273,7 +288,10 @@
"writeTime" : 3675510,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 33,
+ "gettingResultTime" : 0
}, {
"taskId" : 6,
"index" : 6,
@@ -319,7 +337,10 @@
"writeTime" : 4016617,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 38,
+ "gettingResultTime" : 0
}, {
"taskId" : 7,
"index" : 7,
@@ -365,7 +386,10 @@
"writeTime" : 2579051,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 43,
+ "gettingResultTime" : 0
}, {
"taskId" : 8,
"index" : 8,
@@ -411,7 +435,10 @@
"writeTime" : 121551,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 5,
+ "gettingResultTime" : 0
}, {
"taskId" : 9,
"index" : 9,
@@ -457,7 +484,10 @@
"writeTime" : 101664,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 8,
+ "gettingResultTime" : 0
}, {
"taskId" : 10,
"index" : 10,
@@ -503,7 +533,10 @@
"writeTime" : 94709,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 18,
+ "gettingResultTime" : 0
}, {
"taskId" : 11,
"index" : 11,
@@ -549,7 +582,10 @@
"writeTime" : 94507,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 8,
+ "gettingResultTime" : 0
}, {
"taskId" : 12,
"index" : 12,
@@ -595,7 +631,10 @@
"writeTime" : 102476,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 7,
+ "gettingResultTime" : 0
}, {
"taskId" : 13,
"index" : 13,
@@ -641,7 +680,10 @@
"writeTime" : 95004,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 53,
+ "gettingResultTime" : 0
}, {
"taskId" : 14,
"index" : 14,
@@ -687,7 +729,10 @@
"writeTime" : 95646,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 5,
+ "gettingResultTime" : 0
}, {
"taskId" : 15,
"index" : 15,
@@ -733,7 +778,10 @@
"writeTime" : 602780,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 4,
+ "gettingResultTime" : 0
}, {
"taskId" : 16,
"index" : 16,
@@ -779,7 +827,10 @@
"writeTime" : 108320,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 4,
+ "gettingResultTime" : 0
}, {
"taskId" : 17,
"index" : 17,
@@ -825,7 +876,10 @@
"writeTime" : 99944,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 20,
+ "gettingResultTime" : 0
}, {
"taskId" : 18,
"index" : 18,
@@ -871,7 +925,10 @@
"writeTime" : 100836,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 3,
+ "gettingResultTime" : 0
}, {
"taskId" : 19,
"index" : 19,
@@ -917,5 +974,8 @@
"writeTime" : 95788,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 5,
+ "gettingResultTime" : 0
} ]
diff --git a/core/src/test/resources/HistoryServerExpectations/stage_task_list_from_multi_attempt_app_json_1__expectation.json b/core/src/test/resources/HistoryServerExpectations/stage_task_list_from_multi_attempt_app_json_1__expectation.json
index f9182b165833..ea88ca116707 100644
--- a/core/src/test/resources/HistoryServerExpectations/stage_task_list_from_multi_attempt_app_json_1__expectation.json
+++ b/core/src/test/resources/HistoryServerExpectations/stage_task_list_from_multi_attempt_app_json_1__expectation.json
@@ -48,7 +48,10 @@
"writeTime" : 0,
"recordsWritten" : 0
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 30,
+ "gettingResultTime" : 0
}, {
"taskId" : 1,
"index" : 1,
@@ -99,7 +102,10 @@
"writeTime" : 0,
"recordsWritten" : 0
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 22,
+ "gettingResultTime" : 0
}, {
"taskId" : 2,
"index" : 2,
@@ -150,7 +156,10 @@
"writeTime" : 0,
"recordsWritten" : 0
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 18,
+ "gettingResultTime" : 0
}, {
"taskId" : 3,
"index" : 3,
@@ -201,7 +210,10 @@
"writeTime" : 0,
"recordsWritten" : 0
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 20,
+ "gettingResultTime" : 0
}, {
"taskId" : 4,
"index" : 4,
@@ -252,7 +264,10 @@
"writeTime" : 0,
"recordsWritten" : 0
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 24,
+ "gettingResultTime" : 0
}, {
"taskId" : 5,
"index" : 5,
@@ -303,7 +318,10 @@
"writeTime" : 0,
"recordsWritten" : 0
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 23,
+ "gettingResultTime" : 0
}, {
"taskId" : 6,
"index" : 6,
@@ -354,7 +372,10 @@
"writeTime" : 0,
"recordsWritten" : 0
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 22,
+ "gettingResultTime" : 0
}, {
"taskId" : 7,
"index" : 7,
@@ -405,5 +426,8 @@
"writeTime" : 0,
"recordsWritten" : 0
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 22,
+ "gettingResultTime" : 0
} ]
diff --git a/core/src/test/resources/HistoryServerExpectations/stage_task_list_from_multi_attempt_app_json_2__expectation.json b/core/src/test/resources/HistoryServerExpectations/stage_task_list_from_multi_attempt_app_json_2__expectation.json
index 76dd2f710b90..efd0a45bf01d 100644
--- a/core/src/test/resources/HistoryServerExpectations/stage_task_list_from_multi_attempt_app_json_2__expectation.json
+++ b/core/src/test/resources/HistoryServerExpectations/stage_task_list_from_multi_attempt_app_json_2__expectation.json
@@ -48,7 +48,10 @@
"writeTime" : 0,
"recordsWritten" : 0
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 30,
+ "gettingResultTime" : 0
}, {
"taskId" : 1,
"index" : 1,
@@ -99,7 +102,10 @@
"writeTime" : 0,
"recordsWritten" : 0
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 22,
+ "gettingResultTime" : 0
}, {
"taskId" : 2,
"index" : 2,
@@ -150,7 +156,10 @@
"writeTime" : 0,
"recordsWritten" : 0
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 18,
+ "gettingResultTime" : 0
}, {
"taskId" : 3,
"index" : 3,
@@ -201,7 +210,10 @@
"writeTime" : 0,
"recordsWritten" : 0
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 20,
+ "gettingResultTime" : 0
}, {
"taskId" : 4,
"index" : 4,
@@ -252,7 +264,10 @@
"writeTime" : 0,
"recordsWritten" : 0
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 24,
+ "gettingResultTime" : 0
}, {
"taskId" : 5,
"index" : 5,
@@ -303,7 +318,10 @@
"writeTime" : 0,
"recordsWritten" : 0
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 23,
+ "gettingResultTime" : 0
}, {
"taskId" : 6,
"index" : 6,
@@ -354,7 +372,10 @@
"writeTime" : 0,
"recordsWritten" : 0
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 22,
+ "gettingResultTime" : 0
}, {
"taskId" : 7,
"index" : 7,
@@ -405,5 +426,8 @@
"writeTime" : 0,
"recordsWritten" : 0
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 22,
+ "gettingResultTime" : 0
} ]
diff --git a/core/src/test/resources/HistoryServerExpectations/stage_task_list_w__offset___length_expectation.json b/core/src/test/resources/HistoryServerExpectations/stage_task_list_w__offset___length_expectation.json
index 6bdc10465d89..d83528d84972 100644
--- a/core/src/test/resources/HistoryServerExpectations/stage_task_list_w__offset___length_expectation.json
+++ b/core/src/test/resources/HistoryServerExpectations/stage_task_list_w__offset___length_expectation.json
@@ -43,7 +43,10 @@
"writeTime" : 94709,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 18,
+ "gettingResultTime" : 0
}, {
"taskId" : 11,
"index" : 11,
@@ -89,7 +92,10 @@
"writeTime" : 94507,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 8,
+ "gettingResultTime" : 0
}, {
"taskId" : 12,
"index" : 12,
@@ -135,7 +141,10 @@
"writeTime" : 102476,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 7,
+ "gettingResultTime" : 0
}, {
"taskId" : 13,
"index" : 13,
@@ -181,7 +190,10 @@
"writeTime" : 95004,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 53,
+ "gettingResultTime" : 0
}, {
"taskId" : 14,
"index" : 14,
@@ -227,7 +239,10 @@
"writeTime" : 95646,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 5,
+ "gettingResultTime" : 0
}, {
"taskId" : 15,
"index" : 15,
@@ -273,7 +288,10 @@
"writeTime" : 602780,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 4,
+ "gettingResultTime" : 0
}, {
"taskId" : 16,
"index" : 16,
@@ -319,7 +337,10 @@
"writeTime" : 108320,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 4,
+ "gettingResultTime" : 0
}, {
"taskId" : 17,
"index" : 17,
@@ -365,7 +386,10 @@
"writeTime" : 99944,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 20,
+ "gettingResultTime" : 0
}, {
"taskId" : 18,
"index" : 18,
@@ -411,7 +435,10 @@
"writeTime" : 100836,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 3,
+ "gettingResultTime" : 0
}, {
"taskId" : 19,
"index" : 19,
@@ -457,7 +484,10 @@
"writeTime" : 95788,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 5,
+ "gettingResultTime" : 0
}, {
"taskId" : 20,
"index" : 20,
@@ -503,7 +533,10 @@
"writeTime" : 97716,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 4,
+ "gettingResultTime" : 0
}, {
"taskId" : 21,
"index" : 21,
@@ -549,7 +582,10 @@
"writeTime" : 100270,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 3,
+ "gettingResultTime" : 0
}, {
"taskId" : 22,
"index" : 22,
@@ -595,7 +631,10 @@
"writeTime" : 143427,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 3,
+ "gettingResultTime" : 0
}, {
"taskId" : 23,
"index" : 23,
@@ -641,7 +680,10 @@
"writeTime" : 91844,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 16,
+ "gettingResultTime" : 0
}, {
"taskId" : 24,
"index" : 24,
@@ -687,7 +729,10 @@
"writeTime" : 157194,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 5,
+ "gettingResultTime" : 0
}, {
"taskId" : 25,
"index" : 25,
@@ -733,7 +778,10 @@
"writeTime" : 94134,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 9,
+ "gettingResultTime" : 0
}, {
"taskId" : 26,
"index" : 26,
@@ -779,7 +827,10 @@
"writeTime" : 108213,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 8,
+ "gettingResultTime" : 0
}, {
"taskId" : 27,
"index" : 27,
@@ -825,7 +876,10 @@
"writeTime" : 102019,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 6,
+ "gettingResultTime" : 0
}, {
"taskId" : 28,
"index" : 28,
@@ -871,7 +925,10 @@
"writeTime" : 104299,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 17,
+ "gettingResultTime" : 0
}, {
"taskId" : 29,
"index" : 29,
@@ -917,7 +974,10 @@
"writeTime" : 114938,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 11,
+ "gettingResultTime" : 0
}, {
"taskId" : 30,
"index" : 30,
@@ -963,7 +1023,10 @@
"writeTime" : 119770,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 24,
+ "gettingResultTime" : 0
}, {
"taskId" : 31,
"index" : 31,
@@ -1009,7 +1072,10 @@
"writeTime" : 92619,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 14,
+ "gettingResultTime" : 0
}, {
"taskId" : 32,
"index" : 32,
@@ -1055,7 +1121,10 @@
"writeTime" : 89603,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 13,
+ "gettingResultTime" : 0
}, {
"taskId" : 33,
"index" : 33,
@@ -1101,7 +1170,10 @@
"writeTime" : 118329,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 10,
+ "gettingResultTime" : 0
}, {
"taskId" : 34,
"index" : 34,
@@ -1147,7 +1219,10 @@
"writeTime" : 127746,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 9,
+ "gettingResultTime" : 0
}, {
"taskId" : 35,
"index" : 35,
@@ -1193,7 +1268,10 @@
"writeTime" : 160963,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 10,
+ "gettingResultTime" : 0
}, {
"taskId" : 36,
"index" : 36,
@@ -1239,7 +1317,10 @@
"writeTime" : 123855,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 6,
+ "gettingResultTime" : 0
}, {
"taskId" : 37,
"index" : 37,
@@ -1285,7 +1366,10 @@
"writeTime" : 111869,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 6,
+ "gettingResultTime" : 0
}, {
"taskId" : 38,
"index" : 38,
@@ -1331,7 +1415,10 @@
"writeTime" : 131158,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 13,
+ "gettingResultTime" : 0
}, {
"taskId" : 39,
"index" : 39,
@@ -1377,7 +1464,10 @@
"writeTime" : 98748,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 13,
+ "gettingResultTime" : 0
}, {
"taskId" : 40,
"index" : 40,
@@ -1423,7 +1513,10 @@
"writeTime" : 94792,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 6,
+ "gettingResultTime" : 0
}, {
"taskId" : 41,
"index" : 41,
@@ -1469,7 +1562,10 @@
"writeTime" : 90765,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 6,
+ "gettingResultTime" : 0
}, {
"taskId" : 42,
"index" : 42,
@@ -1515,7 +1611,10 @@
"writeTime" : 103713,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 15,
+ "gettingResultTime" : 0
}, {
"taskId" : 43,
"index" : 43,
@@ -1561,7 +1660,10 @@
"writeTime" : 171516,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 21,
+ "gettingResultTime" : 0
}, {
"taskId" : 44,
"index" : 44,
@@ -1607,7 +1709,10 @@
"writeTime" : 98293,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 16,
+ "gettingResultTime" : 0
}, {
"taskId" : 45,
"index" : 45,
@@ -1653,7 +1758,10 @@
"writeTime" : 92985,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 16,
+ "gettingResultTime" : 0
}, {
"taskId" : 46,
"index" : 46,
@@ -1699,7 +1807,10 @@
"writeTime" : 113322,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 11,
+ "gettingResultTime" : 0
}, {
"taskId" : 47,
"index" : 47,
@@ -1745,7 +1856,10 @@
"writeTime" : 103015,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 13,
+ "gettingResultTime" : 0
}, {
"taskId" : 48,
"index" : 48,
@@ -1791,7 +1905,10 @@
"writeTime" : 139844,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 3,
+ "gettingResultTime" : 0
}, {
"taskId" : 49,
"index" : 49,
@@ -1837,7 +1954,10 @@
"writeTime" : 94984,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 4,
+ "gettingResultTime" : 0
}, {
"taskId" : 50,
"index" : 50,
@@ -1883,7 +2003,10 @@
"writeTime" : 90836,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 4,
+ "gettingResultTime" : 0
}, {
"taskId" : 51,
"index" : 51,
@@ -1929,7 +2052,10 @@
"writeTime" : 96013,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 2,
+ "gettingResultTime" : 0
}, {
"taskId" : 52,
"index" : 52,
@@ -1975,7 +2101,10 @@
"writeTime" : 89664,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 5,
+ "gettingResultTime" : 0
}, {
"taskId" : 53,
"index" : 53,
@@ -2021,7 +2150,10 @@
"writeTime" : 92835,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 5,
+ "gettingResultTime" : 0
}, {
"taskId" : 54,
"index" : 54,
@@ -2067,7 +2199,10 @@
"writeTime" : 90506,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 38,
+ "gettingResultTime" : 0
}, {
"taskId" : 55,
"index" : 55,
@@ -2113,7 +2248,10 @@
"writeTime" : 108309,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 5,
+ "gettingResultTime" : 0
}, {
"taskId" : 56,
"index" : 56,
@@ -2159,7 +2297,10 @@
"writeTime" : 90329,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 6,
+ "gettingResultTime" : 0
}, {
"taskId" : 57,
"index" : 57,
@@ -2205,7 +2346,10 @@
"writeTime" : 96849,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 2,
+ "gettingResultTime" : 0
}, {
"taskId" : 58,
"index" : 58,
@@ -2251,7 +2395,10 @@
"writeTime" : 97521,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 4,
+ "gettingResultTime" : 0
}, {
"taskId" : 59,
"index" : 59,
@@ -2297,5 +2444,8 @@
"writeTime" : 100753,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 3,
+ "gettingResultTime" : 0
} ]
diff --git a/core/src/test/resources/HistoryServerExpectations/stage_task_list_w__sortBy_expectation.json b/core/src/test/resources/HistoryServerExpectations/stage_task_list_w__sortBy_expectation.json
index bc1cd49909d3..82e339c8f56d 100644
--- a/core/src/test/resources/HistoryServerExpectations/stage_task_list_w__sortBy_expectation.json
+++ b/core/src/test/resources/HistoryServerExpectations/stage_task_list_w__sortBy_expectation.json
@@ -43,7 +43,10 @@
"writeTime" : 4016617,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 38,
+ "gettingResultTime" : 0
}, {
"taskId" : 5,
"index" : 5,
@@ -89,7 +92,10 @@
"writeTime" : 3675510,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 33,
+ "gettingResultTime" : 0
}, {
"taskId" : 1,
"index" : 1,
@@ -135,7 +141,10 @@
"writeTime" : 3934399,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 40,
+ "gettingResultTime" : 0
}, {
"taskId" : 7,
"index" : 7,
@@ -181,7 +190,10 @@
"writeTime" : 2579051,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 43,
+ "gettingResultTime" : 0
}, {
"taskId" : 4,
"index" : 4,
@@ -227,7 +239,10 @@
"writeTime" : 83022,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 38,
+ "gettingResultTime" : 0
}, {
"taskId" : 3,
"index" : 3,
@@ -273,7 +288,10 @@
"writeTime" : 1311694,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 41,
+ "gettingResultTime" : 0
}, {
"taskId" : 0,
"index" : 0,
@@ -319,7 +337,10 @@
"writeTime" : 3842811,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 53,
+ "gettingResultTime" : 0
}, {
"taskId" : 2,
"index" : 2,
@@ -365,7 +386,10 @@
"writeTime" : 89885,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 37,
+ "gettingResultTime" : 0
}, {
"taskId" : 22,
"index" : 22,
@@ -411,7 +435,10 @@
"writeTime" : 143427,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 3,
+ "gettingResultTime" : 0
}, {
"taskId" : 18,
"index" : 18,
@@ -457,7 +484,10 @@
"writeTime" : 100836,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 3,
+ "gettingResultTime" : 0
}, {
"taskId" : 17,
"index" : 17,
@@ -503,7 +533,10 @@
"writeTime" : 99944,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 20,
+ "gettingResultTime" : 0
}, {
"taskId" : 21,
"index" : 21,
@@ -549,7 +582,10 @@
"writeTime" : 100270,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 3,
+ "gettingResultTime" : 0
}, {
"taskId" : 19,
"index" : 19,
@@ -595,7 +631,10 @@
"writeTime" : 95788,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 5,
+ "gettingResultTime" : 0
}, {
"taskId" : 16,
"index" : 16,
@@ -641,7 +680,10 @@
"writeTime" : 108320,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 4,
+ "gettingResultTime" : 0
}, {
"taskId" : 9,
"index" : 9,
@@ -687,7 +729,10 @@
"writeTime" : 101664,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 8,
+ "gettingResultTime" : 0
}, {
"taskId" : 20,
"index" : 20,
@@ -733,7 +778,10 @@
"writeTime" : 97716,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 4,
+ "gettingResultTime" : 0
}, {
"taskId" : 14,
"index" : 14,
@@ -779,7 +827,10 @@
"writeTime" : 95646,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 5,
+ "gettingResultTime" : 0
}, {
"taskId" : 8,
"index" : 8,
@@ -825,7 +876,10 @@
"writeTime" : 121551,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 5,
+ "gettingResultTime" : 0
}, {
"taskId" : 12,
"index" : 12,
@@ -871,7 +925,10 @@
"writeTime" : 102476,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 7,
+ "gettingResultTime" : 0
}, {
"taskId" : 15,
"index" : 15,
@@ -917,5 +974,8 @@
"writeTime" : 602780,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 4,
+ "gettingResultTime" : 0
} ]
diff --git a/core/src/test/resources/HistoryServerExpectations/stage_task_list_w__sortBy_short_names___runtime_expectation.json b/core/src/test/resources/HistoryServerExpectations/stage_task_list_w__sortBy_short_names___runtime_expectation.json
index bc1cd49909d3..82e339c8f56d 100644
--- a/core/src/test/resources/HistoryServerExpectations/stage_task_list_w__sortBy_short_names___runtime_expectation.json
+++ b/core/src/test/resources/HistoryServerExpectations/stage_task_list_w__sortBy_short_names___runtime_expectation.json
@@ -43,7 +43,10 @@
"writeTime" : 4016617,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 38,
+ "gettingResultTime" : 0
}, {
"taskId" : 5,
"index" : 5,
@@ -89,7 +92,10 @@
"writeTime" : 3675510,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 33,
+ "gettingResultTime" : 0
}, {
"taskId" : 1,
"index" : 1,
@@ -135,7 +141,10 @@
"writeTime" : 3934399,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 40,
+ "gettingResultTime" : 0
}, {
"taskId" : 7,
"index" : 7,
@@ -181,7 +190,10 @@
"writeTime" : 2579051,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 43,
+ "gettingResultTime" : 0
}, {
"taskId" : 4,
"index" : 4,
@@ -227,7 +239,10 @@
"writeTime" : 83022,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 38,
+ "gettingResultTime" : 0
}, {
"taskId" : 3,
"index" : 3,
@@ -273,7 +288,10 @@
"writeTime" : 1311694,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 41,
+ "gettingResultTime" : 0
}, {
"taskId" : 0,
"index" : 0,
@@ -319,7 +337,10 @@
"writeTime" : 3842811,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 53,
+ "gettingResultTime" : 0
}, {
"taskId" : 2,
"index" : 2,
@@ -365,7 +386,10 @@
"writeTime" : 89885,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 37,
+ "gettingResultTime" : 0
}, {
"taskId" : 22,
"index" : 22,
@@ -411,7 +435,10 @@
"writeTime" : 143427,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 3,
+ "gettingResultTime" : 0
}, {
"taskId" : 18,
"index" : 18,
@@ -457,7 +484,10 @@
"writeTime" : 100836,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 3,
+ "gettingResultTime" : 0
}, {
"taskId" : 17,
"index" : 17,
@@ -503,7 +533,10 @@
"writeTime" : 99944,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 20,
+ "gettingResultTime" : 0
}, {
"taskId" : 21,
"index" : 21,
@@ -549,7 +582,10 @@
"writeTime" : 100270,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 3,
+ "gettingResultTime" : 0
}, {
"taskId" : 19,
"index" : 19,
@@ -595,7 +631,10 @@
"writeTime" : 95788,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 5,
+ "gettingResultTime" : 0
}, {
"taskId" : 16,
"index" : 16,
@@ -641,7 +680,10 @@
"writeTime" : 108320,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 4,
+ "gettingResultTime" : 0
}, {
"taskId" : 9,
"index" : 9,
@@ -687,7 +729,10 @@
"writeTime" : 101664,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 8,
+ "gettingResultTime" : 0
}, {
"taskId" : 20,
"index" : 20,
@@ -733,7 +778,10 @@
"writeTime" : 97716,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 4,
+ "gettingResultTime" : 0
}, {
"taskId" : 14,
"index" : 14,
@@ -779,7 +827,10 @@
"writeTime" : 95646,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 5,
+ "gettingResultTime" : 0
}, {
"taskId" : 8,
"index" : 8,
@@ -825,7 +876,10 @@
"writeTime" : 121551,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 5,
+ "gettingResultTime" : 0
}, {
"taskId" : 12,
"index" : 12,
@@ -871,7 +925,10 @@
"writeTime" : 102476,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 7,
+ "gettingResultTime" : 0
}, {
"taskId" : 15,
"index" : 15,
@@ -917,5 +974,8 @@
"writeTime" : 602780,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 4,
+ "gettingResultTime" : 0
} ]
diff --git a/core/src/test/resources/HistoryServerExpectations/stage_task_list_w__sortBy_short_names__runtime_expectation.json b/core/src/test/resources/HistoryServerExpectations/stage_task_list_w__sortBy_short_names__runtime_expectation.json
index 09857cb401ac..01eef1b565bf 100644
--- a/core/src/test/resources/HistoryServerExpectations/stage_task_list_w__sortBy_short_names__runtime_expectation.json
+++ b/core/src/test/resources/HistoryServerExpectations/stage_task_list_w__sortBy_short_names__runtime_expectation.json
@@ -43,7 +43,10 @@
"writeTime" : 94792,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 6,
+ "gettingResultTime" : 0
}, {
"taskId" : 41,
"index" : 41,
@@ -89,7 +92,10 @@
"writeTime" : 90765,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 6,
+ "gettingResultTime" : 0
}, {
"taskId" : 43,
"index" : 43,
@@ -135,7 +141,10 @@
"writeTime" : 171516,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 21,
+ "gettingResultTime" : 0
}, {
"taskId" : 57,
"index" : 57,
@@ -181,7 +190,10 @@
"writeTime" : 96849,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 2,
+ "gettingResultTime" : 0
}, {
"taskId" : 58,
"index" : 58,
@@ -227,7 +239,10 @@
"writeTime" : 97521,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 4,
+ "gettingResultTime" : 0
}, {
"taskId" : 68,
"index" : 68,
@@ -273,7 +288,10 @@
"writeTime" : 101750,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 4,
+ "gettingResultTime" : 0
}, {
"taskId" : 86,
"index" : 86,
@@ -319,7 +337,10 @@
"writeTime" : 95848,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 8,
+ "gettingResultTime" : 0
}, {
"taskId" : 32,
"index" : 32,
@@ -365,7 +386,10 @@
"writeTime" : 89603,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 13,
+ "gettingResultTime" : 0
}, {
"taskId" : 39,
"index" : 39,
@@ -411,7 +435,10 @@
"writeTime" : 98748,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 13,
+ "gettingResultTime" : 0
}, {
"taskId" : 42,
"index" : 42,
@@ -457,7 +484,10 @@
"writeTime" : 103713,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 15,
+ "gettingResultTime" : 0
}, {
"taskId" : 51,
"index" : 51,
@@ -503,7 +533,10 @@
"writeTime" : 96013,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 2,
+ "gettingResultTime" : 0
}, {
"taskId" : 59,
"index" : 59,
@@ -549,7 +582,10 @@
"writeTime" : 100753,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 3,
+ "gettingResultTime" : 0
}, {
"taskId" : 63,
"index" : 63,
@@ -595,7 +631,10 @@
"writeTime" : 102779,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 3,
+ "gettingResultTime" : 0
}, {
"taskId" : 87,
"index" : 87,
@@ -641,7 +680,10 @@
"writeTime" : 102159,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 7,
+ "gettingResultTime" : 0
}, {
"taskId" : 90,
"index" : 90,
@@ -687,7 +729,10 @@
"writeTime" : 98472,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 4,
+ "gettingResultTime" : 0
}, {
"taskId" : 99,
"index" : 99,
@@ -733,7 +778,10 @@
"writeTime" : 133964,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 3,
+ "gettingResultTime" : 0
}, {
"taskId" : 44,
"index" : 44,
@@ -779,7 +827,10 @@
"writeTime" : 98293,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 16,
+ "gettingResultTime" : 0
}, {
"taskId" : 47,
"index" : 47,
@@ -825,7 +876,10 @@
"writeTime" : 103015,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 13,
+ "gettingResultTime" : 0
}, {
"taskId" : 50,
"index" : 50,
@@ -871,7 +925,10 @@
"writeTime" : 90836,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 4,
+ "gettingResultTime" : 0
}, {
"taskId" : 52,
"index" : 52,
@@ -917,5 +974,8 @@
"writeTime" : 89664,
"recordsWritten" : 10
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 5,
+ "gettingResultTime" : 0
} ]
diff --git a/core/src/test/resources/HistoryServerExpectations/stage_with_accumulable_json_expectation.json b/core/src/test/resources/HistoryServerExpectations/stage_with_accumulable_json_expectation.json
index 963f010968b6..a8e1fd303a42 100644
--- a/core/src/test/resources/HistoryServerExpectations/stage_with_accumulable_json_expectation.json
+++ b/core/src/test/resources/HistoryServerExpectations/stage_with_accumulable_json_expectation.json
@@ -83,14 +83,17 @@
"writeTime" : 0,
"recordsWritten" : 0
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 30,
+ "gettingResultTime" : 0
},
- "1" : {
- "taskId" : 1,
- "index" : 1,
+ "5" : {
+ "taskId" : 5,
+ "index" : 5,
"attempt" : 0,
- "launchTime" : "2015-03-16T19:25:36.521GMT",
- "duration" : 53,
+ "launchTime" : "2015-03-16T19:25:36.523GMT",
+ "duration" : 52,
"executorId" : "",
"host" : "localhost",
"status" : "SUCCESS",
@@ -99,11 +102,11 @@
"accumulatorUpdates" : [ {
"id" : 1,
"name" : "my counter",
- "update" : "247",
- "value" : "2175"
+ "update" : "897",
+ "value" : "3750"
} ],
"taskMetrics" : {
- "executorDeserializeTime" : 14,
+ "executorDeserializeTime" : 12,
"executorDeserializeCpuTime" : 0,
"executorRunTime" : 15,
"executorCpuTime" : 0,
@@ -135,14 +138,17 @@
"writeTime" : 0,
"recordsWritten" : 0
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 23,
+ "gettingResultTime" : 0
},
- "2" : {
- "taskId" : 2,
- "index" : 2,
+ "1" : {
+ "taskId" : 1,
+ "index" : 1,
"attempt" : 0,
- "launchTime" : "2015-03-16T19:25:36.522GMT",
- "duration" : 48,
+ "launchTime" : "2015-03-16T19:25:36.521GMT",
+ "duration" : 53,
"executorId" : "",
"host" : "localhost",
"status" : "SUCCESS",
@@ -151,11 +157,11 @@
"accumulatorUpdates" : [ {
"id" : 1,
"name" : "my counter",
- "update" : "378",
- "value" : "378"
+ "update" : "247",
+ "value" : "2175"
} ],
"taskMetrics" : {
- "executorDeserializeTime" : 13,
+ "executorDeserializeTime" : 14,
"executorDeserializeCpuTime" : 0,
"executorRunTime" : 15,
"executorCpuTime" : 0,
@@ -187,14 +193,17 @@
"writeTime" : 0,
"recordsWritten" : 0
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 22,
+ "gettingResultTime" : 0
},
- "3" : {
- "taskId" : 3,
- "index" : 3,
+ "6" : {
+ "taskId" : 6,
+ "index" : 6,
"attempt" : 0,
- "launchTime" : "2015-03-16T19:25:36.522GMT",
- "duration" : 50,
+ "launchTime" : "2015-03-16T19:25:36.523GMT",
+ "duration" : 51,
"executorId" : "",
"host" : "localhost",
"status" : "SUCCESS",
@@ -203,11 +212,11 @@
"accumulatorUpdates" : [ {
"id" : 1,
"name" : "my counter",
- "update" : "572",
- "value" : "950"
+ "update" : "978",
+ "value" : "1928"
} ],
"taskMetrics" : {
- "executorDeserializeTime" : 13,
+ "executorDeserializeTime" : 12,
"executorDeserializeCpuTime" : 0,
"executorRunTime" : 15,
"executorCpuTime" : 0,
@@ -239,14 +248,17 @@
"writeTime" : 0,
"recordsWritten" : 0
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 22,
+ "gettingResultTime" : 0
},
- "4" : {
- "taskId" : 4,
- "index" : 4,
+ "2" : {
+ "taskId" : 2,
+ "index" : 2,
"attempt" : 0,
"launchTime" : "2015-03-16T19:25:36.522GMT",
- "duration" : 52,
+ "duration" : 48,
"executorId" : "",
"host" : "localhost",
"status" : "SUCCESS",
@@ -255,17 +267,17 @@
"accumulatorUpdates" : [ {
"id" : 1,
"name" : "my counter",
- "update" : "678",
- "value" : "2853"
+ "update" : "378",
+ "value" : "378"
} ],
"taskMetrics" : {
- "executorDeserializeTime" : 12,
+ "executorDeserializeTime" : 13,
"executorDeserializeCpuTime" : 0,
"executorRunTime" : 15,
"executorCpuTime" : 0,
"resultSize" : 697,
"jvmGcTime" : 0,
- "resultSerializationTime" : 1,
+ "resultSerializationTime" : 2,
"memoryBytesSpilled" : 0,
"diskBytesSpilled" : 0,
"peakExecutionMemory" : 0,
@@ -291,14 +303,17 @@
"writeTime" : 0,
"recordsWritten" : 0
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 18,
+ "gettingResultTime" : 0
},
- "5" : {
- "taskId" : 5,
- "index" : 5,
+ "7" : {
+ "taskId" : 7,
+ "index" : 7,
"attempt" : 0,
- "launchTime" : "2015-03-16T19:25:36.523GMT",
- "duration" : 52,
+ "launchTime" : "2015-03-16T19:25:36.524GMT",
+ "duration" : 51,
"executorId" : "",
"host" : "localhost",
"status" : "SUCCESS",
@@ -307,8 +322,8 @@
"accumulatorUpdates" : [ {
"id" : 1,
"name" : "my counter",
- "update" : "897",
- "value" : "3750"
+ "update" : "1222",
+ "value" : "4972"
} ],
"taskMetrics" : {
"executorDeserializeTime" : 12,
@@ -343,14 +358,17 @@
"writeTime" : 0,
"recordsWritten" : 0
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 22,
+ "gettingResultTime" : 0
},
- "6" : {
- "taskId" : 6,
- "index" : 6,
+ "3" : {
+ "taskId" : 3,
+ "index" : 3,
"attempt" : 0,
- "launchTime" : "2015-03-16T19:25:36.523GMT",
- "duration" : 51,
+ "launchTime" : "2015-03-16T19:25:36.522GMT",
+ "duration" : 50,
"executorId" : "",
"host" : "localhost",
"status" : "SUCCESS",
@@ -359,11 +377,11 @@
"accumulatorUpdates" : [ {
"id" : 1,
"name" : "my counter",
- "update" : "978",
- "value" : "1928"
+ "update" : "572",
+ "value" : "950"
} ],
"taskMetrics" : {
- "executorDeserializeTime" : 12,
+ "executorDeserializeTime" : 13,
"executorDeserializeCpuTime" : 0,
"executorRunTime" : 15,
"executorCpuTime" : 0,
@@ -395,14 +413,17 @@
"writeTime" : 0,
"recordsWritten" : 0
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 20,
+ "gettingResultTime" : 0
},
- "7" : {
- "taskId" : 7,
- "index" : 7,
+ "4" : {
+ "taskId" : 4,
+ "index" : 4,
"attempt" : 0,
- "launchTime" : "2015-03-16T19:25:36.524GMT",
- "duration" : 51,
+ "launchTime" : "2015-03-16T19:25:36.522GMT",
+ "duration" : 52,
"executorId" : "",
"host" : "localhost",
"status" : "SUCCESS",
@@ -411,8 +432,8 @@
"accumulatorUpdates" : [ {
"id" : 1,
"name" : "my counter",
- "update" : "1222",
- "value" : "4972"
+ "update" : "678",
+ "value" : "2853"
} ],
"taskMetrics" : {
"executorDeserializeTime" : 12,
@@ -421,7 +442,7 @@
"executorCpuTime" : 0,
"resultSize" : 697,
"jvmGcTime" : 0,
- "resultSerializationTime" : 2,
+ "resultSerializationTime" : 1,
"memoryBytesSpilled" : 0,
"diskBytesSpilled" : 0,
"peakExecutionMemory" : 0,
@@ -447,7 +468,10 @@
"writeTime" : 0,
"recordsWritten" : 0
}
- }
+ },
+ "executorLogs" : { },
+ "schedulerDelay" : 24,
+ "gettingResultTime" : 0
}
},
"executorSummary" : {
diff --git a/core/src/test/scala/org/apache/spark/status/AppStatusUtilsSuite.scala b/core/src/test/scala/org/apache/spark/status/AppStatusUtilsSuite.scala
index 9e74e86ad54b..a01b24d323d2 100644
--- a/core/src/test/scala/org/apache/spark/status/AppStatusUtilsSuite.scala
+++ b/core/src/test/scala/org/apache/spark/status/AppStatusUtilsSuite.scala
@@ -52,7 +52,10 @@ class AppStatusUtilsSuite extends SparkFunSuite {
inputMetrics = null,
outputMetrics = null,
shuffleReadMetrics = null,
- shuffleWriteMetrics = null)))
+ shuffleWriteMetrics = null)),
+ executorLogs = null,
+ schedulerDelay = 0L,
+ gettingResultTime = 0L)
assert(AppStatusUtils.schedulerDelay(runningTask) === 0L)
val finishedTask = new TaskData(
@@ -83,7 +86,10 @@ class AppStatusUtilsSuite extends SparkFunSuite {
inputMetrics = null,
outputMetrics = null,
shuffleReadMetrics = null,
- shuffleWriteMetrics = null)))
+ shuffleWriteMetrics = null)),
+ executorLogs = null,
+ schedulerDelay = 0L,
+ gettingResultTime = 0L)
assert(AppStatusUtils.schedulerDelay(finishedTask) === 3L)
}
}
diff --git a/core/src/test/scala/org/apache/spark/ui/StagePageSuite.scala b/core/src/test/scala/org/apache/spark/ui/StagePageSuite.scala
index 2945c3ee0a9d..5e976ae4e91d 100644
--- a/core/src/test/scala/org/apache/spark/ui/StagePageSuite.scala
+++ b/core/src/test/scala/org/apache/spark/ui/StagePageSuite.scala
@@ -96,18 +96,6 @@ class StagePageSuite extends SparkFunSuite with LocalSparkContext {
}
}
- test("peak execution memory should displayed") {
- val html = renderStagePage().toString().toLowerCase(Locale.ROOT)
- val targetString = "peak execution memory"
- assert(html.contains(targetString))
- }
-
- test("SPARK-10543: peak execution memory should be per-task rather than cumulative") {
- val html = renderStagePage().toString().toLowerCase(Locale.ROOT)
- // verify min/25/50/75/max show task value not cumulative values
- assert(html.contains(s"$peakExecutionMemory.0 b " * 5))
- }
-
/**
* Render a stage page started with the given conf and return the HTML.
* This also runs a dummy stage to populate the page with useful content.