Plugin Apache Spark

Plugin para coger metricas de todos los ejecutores de todas las apps en ejecución o finalizadas de tu server Spark.

Introducción

Ver. 03-09-2021

Plugin para coger metricas de todos los ejecutores de todas las apps en ejecución o finalizadas de tu server Spark.

Tipo: Plug-in de servidor 

Matriz de compatibilidad

Sistemas donde se ha probado

CentOS 7, Fedora

Sistemas donde debería funcionar

Cualquier sistema linux 

 

Pre requisitos

Se requiere:

Configuración

El plugin hace uso de unos endpoints de la rest api de Spark, para poder acceder a ellos desde el plugin tendremos que tener una serie de puertos activos y que no los bloquee el firewall, estos son los siguientes :

firewall-cmd --permanent --zone=public --add-port=6066/tcp
firewall-cmd --permanent --zone=public --add-port=7077/tcp
firewall-cmd --permanent --zone=public --add-port=8080-8081/tcp
firewall-cmd --permanent --zone=public --add-port=4040/tcp
firewall-cmd --permanent --zone=public --add-port=18080/tcp
firewall-cmd --reload

6066: Rest url (cluster mode).

7077: Server master.

8080 : Web UI.

4040: Para aplicaciones en ejecución.

18080: Para el history server.

Para poder hacer uso del history server tendremos que activar spark.eventLog.enabled, spark.eventLog.dirspark.history.fs.logDirectory en spark-defaults.conf.

Podemos encontrar una plantilla del conf en /conf

1.png

Crearemos en esa ruta el archivo con:

vi spark-defaults.conf

Y lo dejaremos así, puedes elegir la ruta en la que quieres guardar los eventos.

2.png

Ahora podremos activar el history server, en /sbin la misma ruta donde se activa el master, los workers, etc.

3.png

Lo iniciaremos con :

./start-history-server.sh

4.png

Si vamos al log que nos devuelve la salida veremos como correctamente se ha iniciado y su url.

5.png

Si accedemos a la url veremos como nos sale el history server.

6.png

Nota:

Esto se presupone, pero para que funcione el plugin se tendrá que tener activo el server maestro, así como tener aplicaciones en ejecución o que han sido ejecutadas y han finalizado, ya que es de las aplicaciones de lo que cogeremos las métricas, concretamente de sus ejecutores.

 

 

Parámetros generales del plugin

./pandora_spark -i <ip-with-port> -[ -g <group> ] [ --data_dir <data dir> ] 

Si la ejecución es correcta veremos un 1.

7.png

Si quieres coger los datos de aplicaciones en ejecución, introduce la ip con el puerto 4040, si quieres coger los datos de aplicaciones finalizadas introduce el puerto 18080.

Parámetros específicos del plugin

El plugin cuenta con los siguientes parámetros:

Parameter Description
-i <ip-with-port> --ip <ip-with-port> ip con el puerto, obligatorio.
-g GROUP, --group GROUP Grupo de destino de Pandora FMS (opcional)
--data_dir DATA_DIR Directorio de datos de Pandora FMS. Por defecto es /var/spool/pandora/data_in/ (opcional)

Ejemplo de ayuda:

./pandora_spark

8.png

Configuración en pandora

Instalación desde consola

Para el registro del plugin, desde la consola, se debe ir al apartado "registrar plugin".

register_plugin.png

Daremos a seleccionar archivo.

register_plugin2.png

Seleccionaremos el fichero.pspz2 que contiene el plugin.

register1_spark.png

Una vez subido se nos mostrará un mensaje indicando que ha salido correctamente.

register2_spark.png

Una vez registrado el plugin, lo veremos en el apartado plugins.

serversingles.png

En el apartado de parámetros, saldrán todos los que contiene el plugin, aunque solo será obligatorio usar el de ip.

register3_spark.png

Abajo podremos asignarle el valor requerido a cada macro.

register4_plugin.png

 

Instalación manual

La mejor forma de manejar plugins de servidor en Pandora es desde "/usr/share/pandora_server/util/plugin" asi que lo enviaremos esa ruta.

Después nos moveremos a la carpeta en la que lo hemos metido ( "/usr/share/pandora_server/util/plugin" es la recomendada").

Recuerda: Tienes que instalar las dependencias que necesita el módulo Requests en tu sistema, esta explicado en el apartado configuración.

Nos movemos desde home con :
cd /usr/share/pandora_server/util/plugin/

Ejecutamos el plugin para ver que funciona :

./pandora_spark -i <ip-with-port> -[ -g <group> ] [ --data_dir <data dir> ]

7.png

 

Como plugin de servidor

Iremos a servidores > plugins:

image-1629974405286.png

Pinchamos en añadir:

image-1629974430627.png

Le ponemos en nombre y la descripción que se prefiera:

9.png

Metemos como comando la ruta al plugin, y como parámetros los que hemos metido ejecutando el plugin, los campos "_field_" son macros definidas más abajo.

10.png

Ponemos por cada macro la descripción que se prefiera y como valor los datos de tu ip.

11.png

Hecho esto si ejecutamos el plugin desde el terminal se nos habrá creado el agente con los módulos.

 

Módulos generados

Se nos creará un agente por cada aplicación de nuestro server con datos de todos sus ejecutores, el nombre de cada módulo estará compuesto de la id del ejecutor más su función.

Módulos de los ejecutores

Nombre del módulo
id
hostPort
rddBlocks
memoryUsed
diskUsed
activeTasks
failedTasks
completedTasks
totalTasks
totalDuration
totalInputBytes
totalShuffleRead
totalShuffleWrite
maxMemory

sparkmodulos.png