# Plugin Apache 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:
- Un servidor Spark
- Tener activado el history server de Spark
- Tener el **Data Server** de Pandora FMS habilitado
- Tener el **Plugin Server** de Pandora FMS habilitado
# 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.dir** y **spark.history.fs.logDirectory** en **spark-defaults.conf.**
Podemos encontrar una plantilla del conf en /conf
[](https://pandorafms.com/guides/public/uploads/images/gallery/2021-09/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.
[](https://pandorafms.com/guides/public/uploads/images/gallery/2021-09/2.png)
Ahora podremos activar el history server, en /sbin la misma ruta donde se activa el master, los workers, etc.
[](https://pandorafms.com/guides/public/uploads/images/gallery/2021-09/3.png)
Lo iniciaremos con :
```
./start-history-server.sh
```
[](https://pandorafms.com/guides/public/uploads/images/gallery/2021-09/4.png)
Si vamos al log que nos devuelve la salida veremos como correctamente se ha iniciado y su url.
[](https://pandorafms.com/guides/public/uploads/images/gallery/2021-09/5.png)
Si accedemos a la url veremos como nos sale el history server.
[](https://pandorafms.com/guides/public/uploads/images/gallery/2021-09/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 -[ -g ] [ --data_dir ]
```
Si la ejecución es correcta veremos un 1.
[](https://pandorafms.com/guides/public/uploads/images/gallery/2021-09/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
```
[](https://pandorafms.com/guides/public/uploads/images/gallery/2021-09/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".
**[](https://pandorafms.com/guides/public/uploads/images/gallery/2022-04/register-plugin.png)**
Daremos a seleccionar archivo.
**[](https://pandorafms.com/guides/public/uploads/images/gallery/2022-04/register-plugin2.png)**
Seleccionaremos el fichero.pspz2 que contiene el plugin.
[](https://pandorafms.com/guides/public/uploads/images/gallery/2022-04/register1-spark.png)
Una vez subido se nos mostrará un mensaje indicando que ha salido correctamente.
[](https://pandorafms.com/guides/public/uploads/images/gallery/2022-04/register2-spark.png)
Una vez registrado el plugin, lo veremos en el apartado plugins.
[](https://pandorafms.com/guides/public/uploads/images/gallery/2022-04/serversingles.png)
En el apartado de parámetros, saldrán todos los que contiene el plugin, aunque solo será obligatorio usar el de ip.
[](https://pandorafms.com/guides/public/uploads/images/gallery/2022-04/register3-spark.png)
Abajo podremos asignarle el valor requerido a cada macro.
[](https://pandorafms.com/guides/public/uploads/images/gallery/2022-04/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 -[ -g ] [ --data_dir ]
```
[](https://pandorafms.com/guides/public/uploads/images/gallery/2021-09/7.png)
**Como plugin de servidor**
Iremos a servidores > plugins:
[](https://pandorafms.com/guides/public/uploads/images/gallery/2021-08/image-1629974405286.png)
Pinchamos en añadir:
[](https://pandorafms.com/guides/public/uploads/images/gallery/2021-08/image-1629974430627.png)
Le ponemos en nombre y la descripción que se prefiera:
[](https://pandorafms.com/guides/public/uploads/images/gallery/2021-09/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.
[](https://pandorafms.com/guides/public/uploads/images/gallery/2021-09/10.png)
Ponemos por cada macro la descripción que se prefiera y como valor los datos de tu ip.
[](https://pandorafms.com/guides/public/uploads/images/gallery/2021-09/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 |
[](https://pandorafms.com/guides/public/uploads/images/gallery/2021-09/sparkmodulos.png)