Aplicación en ejecución Spark Kill

101

Tengo una aplicación Spark en ejecución donde ocupa todos los núcleos donde mis otras aplicaciones no recibirán ningún recurso.

Hice una investigación rápida y la gente sugirió usar YARN kill o / bin / spark-class para eliminar el comando. Sin embargo, estoy usando la versión CDH y / bin / spark-class ni siquiera existe, la aplicación YARN kill tampoco funciona.

ingrese la descripción de la imagen aquí

¿Alguien puede conmigo con esto?

B.Mr.W.
fuente
1
si está en un entorno de prueba: ps aux | grep spark -> obtén el pid de spark y mátalo desde la línea de comando
eliasah
@eliasah "prueba env", para mí el trabajo ya está distribuido ..
B.Mr.W.
1
quieres acabar con un trabajo en producción ????
eliasah
1
@eliasah Sí ... un trabajo en producción se colgó debido a la falla en un host.
B.Mr.W.

Respuestas:

213
  • copie más allá del ID de la aplicación del programador de Spark, por ejemplo, application_1428487296152_25597
  • conectarse al servidor que ha iniciado el trabajo
  • yarn application -kill application_1428487296152_25597
Gérald Reinhart
fuente
1
¿Cómo se llega al programador de chispas?
makansij
¿Es lo mismo que el web UI?
makansij
@Hunle Puede obtener la ID de la interfaz de usuario de las aplicaciones de Spark History UIYARN o de YARN RUNNING( yarn-host: 8088 / cluster / apps / RUNNING ) o desde la Spark Job Web UIURL ( yarn-host: 8088 / proxy / application_ <timestamp> _ <id> )
CᴴᴀZ
2
¿Se puede matar a varios a la vez: aplicación de hilo -kill application_1428487296152_25597 application_1428487296152_25598 ... ??
user3505444
7

Puede llevar mucho tiempo obtener todos los ID de las aplicaciones de YARN y eliminarlos uno por uno. Puede utilizar un bucle Bash for para realizar esta tarea repetitiva de forma rápida y eficiente, como se muestra a continuación:

Elimine todas las aplicaciones en YARN que estén en estado ACEPTADO:

for x in $(yarn application -list -appStates ACCEPTED | awk 'NR > 2 { print $1 }'); do yarn application -kill $x; done

Elimine todas las aplicaciones en YARN que estén en estado EJECUTANDO:

for x in $(yarn application -list -appStates RUNNING | awk 'NR > 2 { print $1 }'); do yarn application -kill $x; done

Anil Kumar
fuente
1

Es posible que esta no sea una solución ética y preferida, pero ayuda en entornos donde no puede acceder a la consola para terminar el trabajo usando el comando de la aplicación yarn.

Los pasos son

Vaya a la página maestra de la aplicación de Spark Job. Haga clic en la sección de trabajos. Haga clic en la etapa activa del trabajo activo. Verá el botón "matar" justo al lado del escenario activo.

Esto funciona si las etapas siguientes dependen de la etapa en ejecución. Aunque marca el trabajo como "Asesinado por el usuario"

Sachin Gaikwad
fuente