python - started - Tareas activas es un número negativo en Spark UI
getting started apache spark (2)
Cuando uso spark-1.6.2 y pyspark , vi esto:
donde ve que las tareas activas son un número negativo (la diferencia de las tareas totales de las tareas completadas).
¿Cuál es la fuente de este error?
Nodo que tengo muchos ejecutores. Sin embargo, parece que hay una tarea que parece haber estado inactiva (no veo ningún progreso), mientras que otra tarea idéntica se completa normalmente.
También esto está relacionado: ese correo puedo confirmar que se están creando muchas tareas, ya que estoy usando 1k o 2k ejecutores.
El error que obtengo es un poco diferente:
16/08/15 20:03:38 ERROR LiveListenerBus: Dropping SparkListenerEvent because no remaining room in event queue. This likely means one of the SparkListeners is too slow and cannot keep up with the rate at which tasks are being started by the scheduler.
16/08/15 20:07:18 WARN TaskSetManager: Lost task 20652.0 in stage 4.0 (TID 116652, myfoo.com): FetchFailed(BlockManagerId(61, mybar.com, 7337), shuffleId=0, mapId=328, reduceId=20652, message=
org.apache.spark.shuffle.FetchFailedException: java.util.concurrent.TimeoutException: Timeout waiting for task.
Es un problema de chispa. Ocurre cuando los ejecutores se reinician después de fallas. El problema JIRA para el mismo ya está creado. Puede obtener más detalles sobre el mismo en el enlace https://issues.apache.org/jira/browse/SPARK-10141 .
Respondido en la lista de correo de Spark-dev de S. Owen , hay varias entradas de JIRA que son relevantes para este problema, tales como:
- La interfaz de usuario de ResourceManager muestra un valor negativo
- NodeManager informa contenedores negativos que se ejecutan
Este comportamiento generalmente ocurre cuando (muchos) ejecutores se reinician después de la (s) falla (s).
Este comportamiento también puede ocurrir cuando la aplicación usa demasiados ejecutores. Usa coalesce()
para arreglar este caso.
Para ser exactos, en Preparar mis bigdatos con Spark a través de Python , tenía> 400k particiones. data.coalesce(1024)
, como se describe en Repartición de un RDD, y pude eludir ese error Spark UI. Usted ve, particionar, es un concepto muy importante cuando se trata de Computación distribuida y Spark.
En mi pregunta, también utilizo ejecutores 1-2k, por lo que debe estar relacionado.
Nota: Demasiadas particiones y es posible que experimente este error de Spark Java: el tamaño supera Integer.MAX_VALUE .