apache-spark - examples - apache spark wikipedia
¿Qué significan los números en la barra de progreso en spark-shell? (2)
En mi spark-shell, ¿qué significan las entradas como las siguientes cuando ejecuto una función?
[Stage7:===========> (14174 + 5) / 62500]
Lo que obtienes es una
Console Progress Bar
,
[Stage 7:
muestra la etapa en la que te encuentras ahora, y
(14174 + 5) / 62500]
es
(numCompletedTasks + numActiveTasks) / totalNumOfTasksInThisStage]
.
La barra de progreso muestra
numCompletedTasks
/
totalNumOfTasksInThisStage
.
Se mostrará cuando
spark.ui.showConsoleProgress
sea verdadero (por defecto)
y
el nivel de registro en
conf/log4j.properties
sea
ERROR
o
WARN
(
!log.isInfoEnabled
es verdadero).
Veamos el código en ConsoleProgressBar.scala que lo muestra:
private def show(now: Long, stages: Seq[SparkStageInfo]) {
val width = TerminalWidth / stages.size
val bar = stages.map { s =>
val total = s.numTasks()
val header = s"[Stage ${s.stageId()}:"
val tailer = s"(${s.numCompletedTasks()} + ${s.numActiveTasks()}) / $total]"
val w = width - header.length - tailer.length
val bar = if (w > 0) {
val percent = w * s.numCompletedTasks() / total
(0 until w).map { i =>
if (i < percent) "=" else if (i == percent) ">" else " "
}.mkString("")
} else {
""
}
header + bar + tailer
}.mkString("")
// only refresh if it''s changed of after 1 minute (or the ssh connection will be closed
// after idle some time)
if (bar != lastProgressBar || now - lastUpdateTime > 60 * 1000L) {
System.err.print(CR + bar)
lastUpdateTime = now
}
lastProgressBar = bar
}
Supongamos que ve lo siguiente (X, A, B, C son siempre enteros no negativos):
[Stage X:==========> (A + B) / C]
(por ejemplo, en la pregunta X = 7, A = 14174, B = 5 y C = 62500)
Esto es lo que está sucediendo a un alto nivel: Spark divide el trabajo en etapas y tareas en cada etapa. Este indicador de progreso significa que la Etapa X se compone de tareas en C. Durante la ejecución, A y B comienzan en cero y siguen cambiando. A es siempre el número de tareas ya finalizadas y B es el número de tareas que se están ejecutando actualmente. Para una etapa con muchas tareas (mucho más que los trabajadores que tiene), debe esperar ver que B aumente a un número que corresponda a la cantidad de trabajadores que tiene en el clúster, luego debe comenzar a ver A aumentar a medida que se completan las tareas. Hacia el final, a medida que se ejecutan las últimas tareas, B comenzará a disminuir hasta llegar a 0, momento en el que A debería ser igual a C, la etapa está terminada y la chispa se mueve a la siguiente etapa. C permanecerá constante durante todo el tiempo, recuerde que es el número total de tareas en la etapa y nunca cambia.
El ====> muestra el porcentaje de trabajo realizado en base a lo que describí anteriormente. Al principio, el> estará hacia la izquierda y se moverá hacia la derecha a medida que se completen las tareas.