HTCondor ofrece un comando llamado condor_history
que permite extraer el histórico de todas las tareas que se ejecutan en un cluster de HTCondor.
La forma regular como se exportan estos archivos es via XML. Sin embargo, el XML si bien permite dar una estructura a la información, la realidad es que la estructura no es estandarizada sino que es libre y en este caso se ha hecho de acuerdo al albeldrío de los desarrolladores de HTCondor.
El objetivo pues de estas herramientas es crear una especie de pipeline en el cual se extrae la información del histórico en formato XML, se preprocesa (o se limpia) el archivo XML, se pasan a un formato estándar (e.g. CSV) y se pasan por herramientas que analicen grandes volúmenes de datos (e.g. pandas python).
A continuación se describirán las herramientas alrededor de las etapas definidas anteriormente.
Para obtener la información histórica de procesos ejecutados en un cluster basado en HTCondor, se debe ejecutar lo siguiente:
$ condor_history -xml > salida.xml
Este comando almacena en salida.xml
el histórico de todas las tareas que se ejecutaron en un cluster de HTCondor.
Un problema que se puede presentar con el XML generado en la etapa anterior es que el archivo de salida (salida.xml
) realmente sea un archivo que contiene muchos archivos XML en su interior.
Para convertir todos esos archivos en un solo archivo XML se crea el script sFlatCondorXML.sh
.
Para ejecutar este script se invoca de la siguiente manera:
$ ./sFlaCondorXML.sh salida.xml history.xml
Lo que hace este script es tomar el archivo salida.xml
, que es un archivo con múltiples XML en su interior, y generar un nuevo archivo history.xml
quien es realmente un solo archivo XML.
Para ejecutar este script en un cluster de HTCondor se utiliza el archivo sFlatCondorXML.condor
.
Los items IMPORTANTES de este archivo de HTCondor son:
arguments
: en este Ad se debe colocar, de acuerdo a nuestro ejemplo anterior,salida.xml
yhistory.xml
.transfer_input_files
: en este Ad se coloca cual es el archivo que se va a preprocesar, en este caso particularsalida.xml
.transfer_output_files
: en este Ad se coloca cual es el archivo que se desea se regrese al punto desde donde se ejecutó la tarea y este archivo será el insumo para la siguiente etapa, en este casohistory.xml
.
Teniendo ya el único archivo XML con todo lo histórico, lo que se hace es convertirlo a un formato mas estandarizado como CSV. Este formato es más relevante porque puede ser leido por diversas herramientas que analizan datos como: R y pandas Python.
Usted puede ejecutar la transformación sin necesidad de HTCondor y puede hacerlo ejecutando el comando
$ python _extract.py history.xml history.csv
De acuerdo a lo que hemos visto en este README, history.xml
corresponde al archivo XML con el histórico de las tareas en HTCondor y history.csv
será el archivo quedará el contenido en formato CSV.
Usted debe hacer los ajustes correspondientes en el archivo _extract.condor
, como sigue:
arguments = history.xml history.csv
transfer_input_files = _extract.py,history.xml
transfer_output_files = history.csv
Ya que se deben hacer los ajustes correspondientes en caso que usted modifique el código de _extract.py
y cambie history.xml
y history.csv
.
Para simplificar la ejecución de estos scripts se desarrolló un script llamado historyXML2CSV.dag
.
La ejecución de este DAG se hace a través del comando
condor_submit_dag historyXML2CSV.dag
Para ejecutarlo de forma exitosa se hace necesario que los archivo .condor (sFlatCondorXML.condor
y _extract.condor
) funcionen de forma correcta de manera independiente.
Las siguientes son las listas de tareas que hay pendientes por hacer
- Crear un script que permita generar los .condor y el .dag de forma interactiva.
- Estudiar la librería pandas y validar que tipo de información se puede generar a partir de los datos