Pasar al contenido principal
Cargando...

Apache Hop

Inspiring technology by Hunters

Hoy nuestros Hunters nos hablan de Apache Hop (Hop Orchestration Platform): un proyecto libre desarrollado por Matt Casters, Bart Maertens y parte de la comunidad de Pentaho Data Integration. Hop es una plataforma de orquestación de datos de código abierto que facilita el procesamiento de estos mediante creación de tuberías o flujos de trabajo para realizar ETL.

Mediante esta herramienta los desarrolladores pueden diseñar flujos para trabajar con datos visualmente, lo que permite enfocar qué tarea realizar, en lugar de cómo realizarla, evitando escribir líneas de código.

¿Qué funcionalidades tiene Apache Hop?

En Apache Hop el usuario diseña su flujo en la interfaz. A continuación, el motor Hop recibe las instrucciones y las ejecuta mediante plugin.

Toda la funcionalidad de Hop está integrada mediante plugins. De forma nativa incluye más de 400 plugins que permiten diseñar tuberías y/o flujos de trabajos, tratar con pequeños y grandes datos en local y ejecuciones en diferentes entornos (servidores externos, nube, clúster...). Además, Hop integra Apache Beam de forma nativa, que permite ejecutar trabajos en Apache Spark, Apacha Flink Google Dataflow.

Hop está formada por herramientas de líneas de comando que ofrecen diferentes acciones:

  • Hop-gui: Abre la interfaz de usuario para permitir crear flujos, tuberías, gestionar proyectos, configuraciones y explorar funcionalidades.
  • Hop-server: Arranca un servidor para ejecutar flujos de trabajos o tuberías.
  • Hop-run: Ejecuta los trabajos indicando como parámetro configuración de proyecto, entorno y/o propiedades.
  • Hop-conf: Se encarga de gestionar configuración relativa a variables de entorno, proyectos, ejecuciones y plugins de terceros.
  • Hop-search: Sirve para buscar metadatos dentro de un directorio de proyecto.
  • Hop-import: Permite importar y convertir plugins de terceros a formato Apache Hop.
  • Hop-encrypt: Cifra contraseñas de texto plano para su uso en ficheros XML o dentro de diferentes componentes de la interfaz.

Conceptos

Los desarrolladores de Hop pueden crear workflows (flujos de trabajo) y pipelines (tuberías) en Hop Gui. Estos procesos se pueden ejecutar de forma nativa en Hop (local o remoto) o en plataformas externas (Apache Spark o Google Dataflow ) gracias a Apache Beam.

Los conceptos claves de Apache Hop son:

Las tuberías son colecciones de transformaciones, mientras que los flujos de trabajo son una secuencia de acciones.

En las tuberías se ejecutan operaciones de lectura de diferentes fuentes (BBDD, ficheros de texto, servicios REST, etc.), procesado (añadir, transformar, eliminar filas o columnas) y exportación de datos en múltiples formatos. Sin embargo, los flujos de trabajo son para realizar operaciones encadenadas que tienen un orden determinado.

Una transformación es una unidad de trabajo realizada en una tubería que opera sobre los datos: enriquecimiento, limpieza, filtrado, etc. Las transformaciones procesan datos y generan una salida que es la entrada de la siguiente transformación dentro de una tubería. Normalmente las transformaciones dentro de una tubería se ejecutan en paralelo.

Operación de lectura y operaciones de un fichero Excel

Figura 1: Operación de lectura y operaciones de un fichero Excel.

En el ejemplo de la Figura 1 se realiza la operación de lectura del fichero Excel. Luego, se aplica una transformación (filtro o switch) para obtener diferentes secciones de datos. A continuación, se realizan diferentes operaciones a cada salida: Operación de exportación a un fichero Excel, operación de POST a un servidor HTTP y guardado en MongoDB.

Una acción es una operación realizada en un flujo de trabajo. Devuelve un código de resultado Verdadero o Falso que se puede utilizar para controlar el flujo. Normalmente, las acciones dentro de un flujo se ejecutan de manera secuencial, con la opción de realizar de manera paralela.

Secuencia de tuberías, envío de correo y encapsulación de datos en un ZIP

Figura 2: Secuencia de tuberías, envío de correo y encapsulación de datos en un ZIP.

En el ejemplo de la Figura 2 se observa una secuencia de acciones: ejecución de tuberías, envío de correo electrónico o encapsulación de datos en un zip.

Los proyectos son una agrupación de tuberías, flujos de trabajo, metadatos, variables y configuraciones. Dentro del mismo proyecto, se separan las configuraciones por entornos. Por defecto, encontramos los diferentes entornos: desarrollo, pruebas, producción.

¿Qué permite Apache Hop?

Apache Hop, además de ejecutar trabajos simples mediante tuberías o workflows, permite:

  • Cargado y procesamiento de grandes datos aprovechando entornos de nube y el procesamiento en paralelo.
  • Población de bases de datos para realizar estudios con otras herramientas.
  • Migración de datos entre aplicaciones o entre bases de datos relacionales y no relacionales.
  • Perfilado y limpieza de datos.

Comparativa con Pentaho Data Integration y Spring Cloud Data Flow

Pentaho Data Integration

Apache Hop guarda similitudes en cuanto a conceptos con Pentaho Data Integration. Sin embargo, en Pentaho no existe concepto proyecto, con lo que no se puede crear variables por entornos ni scripts para configurar proyectos. Los objetos compartidos (metadatos y configuraciones) en Pentaho se definen en un fichero shared.xml, en cambio en Hop se dividen en subcarpetas dentro del proyecto, lo que mejora la estructuración y facilita la depuración de configuraciones.

El motor de Apache Hop permite ejecutar trabajos externamente mediante Apache Beam, lo que no es posible en Pentaho. 

Hop nace en 2019 como una bifurcación de Pentaho Data Integration, pero evolucionaron hacia proyectos con diferentes metas y prioridades. Hop, al compartir rama con Pentaho, permite importar trabajos, transformaciones, propiedades o configuraciones de base de datos procedentes de Pentaho Data Integration.

La principal diferencia entre ambos es que solo Hop permite gestionar proyectos y configuración de entorno en la propia interfaz, así como buscar información dentro de un proyecto o configuración. Además, Hop permite configurar y ejecutar funcionalidad tanto por la línea de comando como interfaz, lo que en Pentaho únicamente se puede realizar mediante interfaz.

En cuanto al código, Apache Hop está más optimizado que Pentaho Data Integration, lo que presenta ventajas como:

  1. Consumo de menos recursos.
  2. Reducción en los tiempos de carga y ejecución.
  3. Facilidad de despliegue dentro de un contendor Docker.

Spring Cloud Data Flow

Spring Cloud Data Flow es una herramienta para construir tuberías de procesamiento de datos en Streaming o Batch basados en microservicios.

Al igual que Apache Hop, permite realizar despliegues en local, dentro de un contenedor Docker o clúster de Kubernetes. SCDF dispone de una consola web para visualizar y gestionar pipelines.

SCDF presenta dos tipos de procesados:

  • En Stream: Ejecución de tareas dentro de un pipeline que se comunican a través de eventos. Este concepto es similar a las tuberías de Apache Hop, donde se realizan operaciones sobre datos mediante transformaciones.
  • En lotes: Los microservicios que realizan ETL imprimen la salida de los logs en un fichero para su monitorización.

¡Te dejamos una demo de Apache Hop en este vídeo!

¿Quieres saber más sobre Hunters?

Ser un hunter es aceptar el reto de probar nuevas soluciones que aporten resultados diferenciales. Únete al programa Hunters y forma parte de un grupo transversal con capacidad de generar y transferir conocimiento. Anticípate a las soluciones digitales que nos harán crecer. Consulta más información sobre Hunters en la web.

LinkedIn Tahir Farooq

Tahir Farooq

Técnico de Software en Altia