Datavin3

Ejecución de Pipelines en Apache Hop: Distribución y Copia

Escrito por Adalennis Buchillón Soris | 28 de noviembre de 2024 8:26:59 Z

En el núcleo de Apache Hop se encuentra el concepto de ejecución de pipelines y movimientos de datos, que desempeñan un papel crucial en la orquestación de flujos de trabajo de datos complejos. En esta publicación del blog, profundizamos en los fundamentos de la ejecución de pipelines y exploramos cómo comprender los movimientos de datos puede desbloquear nuevos niveles de eficiencia en tus tareas de procesamiento de datos.

Uno de los conceptos clave que los recién llegados a Apache Hop a menudo encuentran es la ejecución paralela de pipelines y la ejecución secuencial de workflows.

En Apache Hop, los pipelines están diseñados para ejecutar transformaciones de datos en paralelo, permitiendo que múltiples operaciones se realicen simultáneamente. Este procesamiento paralelo no solo acelera el procesamiento de datos, sino que también mejora la eficiencia general, convirtiéndolo en un aspecto fundamental de la filosofía de diseño de Apache Hop. Por otro lado, los workflows progresan secuencialmente, asegurando que las acciones ocurran en un orden predeterminado para mantener las dependencias y la integridad de los datos.

Sin embargo, este comportamiento representa el enfoque predeterminado o estándar. En este artículo, exploraremos diferentes escenarios que pueden ocurrir durante la ejecución de pipelines.

Por ejemplo, al enlazar transformaciones en un pipeline, los usuarios pueden encontrar opciones de movimiento de datos como "Distribuir" y "Copiar". Estos métodos dictan cómo fluye los datos a través del pipeline y pueden influir enormemente en la implementación. Al comprender las consecuencias de cada método y elegir el correcto, puedes optimizar tus pipelines para un rendimiento máximo y depurar eficazmente tus flujos de datos.

Para ilustrar este concepto, considera el siguiente escenario, donde un pipeline simplificado genera 10 filas y, posteriormente, agrega un número de secuencia a cada una.

La transformación "Agregar secuencia" está vinculada a una transformación "Dummy", que solo recibe los datos sin realizar ninguna acción adicional.

Considera un escenario en el que deseas vincular la transformación "Agregar secuencia" a dos transformaciones en lugar de solo una. Si intentas conectar una segunda transformación "Dummy", aparecerá un mensaje de advertencia.

Tomemos un momento para revisar este mensaje. Exploraremos las particiones explícitas y el equilibrio de carga en una futura publicación.

Destaca que, al usar el método "Distribuir filas", las transformaciones de destino reciben filas por turnos, mientras que con el método "Copiar filas", todas las filas se envían a cada transformación de destino.

Entonces, ¿qué significa esto? Primero seleccionemos el método de distribución.

En este pipeline, por ejemplo, de 10 filas, 5 se dirigirán a "dummy-1" y las otras 5 a "dummy-2".

Aunque este pipeline se acelera debido al volumen de datos, probarlo con 10,000,000 filas revela movimientos de datos significativos en las métricas de ejecución.

Enfocándonos en las métricas de ejecución para la transformación "Agregar secuencia", observamos que no recibe todas las 10,000,000 filas a la vez.

En su lugar, procesa una parte de las filas, agrega el identificador y las distribuye a "dummy-1" y "dummy-2" hasta que todas las filas son procesadas.

Esto ilustra cómo los pipelines se ejecutan inherentemente en paralelo por defecto.

Ahora, volviendo al escenario original pero optando por la opción "Copiar filas", cada conexión desde la transformación "Agregar secuencia" muestra un icono de copia.

Como resultado, todas las 10 filas se envían tanto a "dummy-1" como a "dummy-2" durante la ejecución.

Aunque este pipeline también se ejecuta rápidamente debido al volumen de datos, probarlo con 10,000,000 filas muestra los movimientos de datos en las métricas de ejecución.

Ahora, enfócate en la cantidad de filas recibidas por las transformaciones "Dummy".

Nota que las transformaciones "Dummy" reciben progresivamente las filas después de ser procesadas por la transformación "Agregar secuencia".

Además, nota que ambas transformaciones Dummy reciben las 10,000,000 filas. La métrica de Lectura para ambas es 10,000,000 al final, mientras que la métrica de Escritura para la transformación "Agregar secuencia" es 20,000,000 (la suma de ambas). 

Observaciones

#1 Uno de los conceptos más críticos en Apache Hop es que los pipelines se ejecutan en paralelo por defecto.

#2 Por defecto, la distribución rige el movimiento de datos.

#3 Seleccionar explícitamente la opción de copia asegura que todas las transformaciones conectadas reciban todas las filas.

Al observar las métricas de ejecución y analizar los movimientos de datos, los usuarios pueden obtener información valiosa sobre el rendimiento de sus pipelines e identificar posibles cuellos de botella. Por ejemplo, escalar el conjunto de datos a un volumen mayor puede resaltar cómo Apache Hop maneja el procesamiento de datos a gran escala y proporcionar retroalimentación valiosa para la optimización.

Además, comprender los movimientos de datos dentro de un pipeline permite a los usuarios diseñar workflows más eficientes y mejorar la productividad general. Al aprovechar las capacidades de ejecución en paralelo de Apache Hop y seleccionar el método de movimiento de datos adecuado, los usuarios pueden agilizar sus tareas de procesamiento de datos.