Saltar al contenido

Procesamiento por lotes con Google Cloud DataFlow y Apache Beam – Hadoop en el mundo real

15 de julio de 2020

En este post veremos cómo implementar un pipeline de procesamiento por lotes moviendo datos desde el almacenamiento en la nube de Google a Google Big Query usando el flujo de datos en la nube.

Cloud Dataflow es un servicio de procesamiento de datos totalmente gestionado en la plataforma de Google Cloud. Apache Beam SDK nos permite desarrollar tanto BATCH como STREAM de procesamiento de tuberías. Programamos nuestro flujo ETL/ELT y Beam nos permite ejecutarlos en Cloud Dataflow usando Dataflow Runner.

En este post, codificaremos la tubería en Apache Bean y la ejecutaremos en Google Data Flow.

El código de este puesto se puede encontrar aquí.

Dataflow vs Apache Beam

La mayoría de las veces, la gente se confunde en la comprensión de lo que es el Rayo Apache y lo que es el Flujo de Datos en la Nube. Para entender cómo se escribe una tubería, es muy importante entender cuál es la diferencia entre los dos.

Apache Beam es un marco de trabajo de código abierto para crear tuberías de procesamiento de datos (tanto de BATCH como de STREAM). La tubería es luego ejecutada por uno de los back-ends de procesamiento distribuido soportados por Beam, que incluyen Apache Apex, Apache Flink, Apache Spark, y Google Cloud Dataflow.

¿Interesado en entrar en Big Data? Echa un vistazo a nuestro curso de Desarrollador Hadoop en el Mundo Real para conocer interesantes casos de uso y proyectos del mundo real como el que estás leyendo.

Beneficios del flujo de datos en la nube

  1. Autoescalado horizontal de los nodos trabajadores
  2. Servicio totalmente gestionado
  3. Vigilar el oleoducto en cualquier momento de su ejecución
  4. Procesamiento fiable y coherente

¿Qué es el almacenamiento en la nube de Google?

Google Cloud Storage es un servicio para almacenar tus objetos. Un objeto es una pieza inmutable de datos que consiste en un archivo de cualquier formato. Los objetos se almacenan en contenedores llamados cubos. Todos los cubos están asociados a un proyecto. Puedes comparar Cubos de GCS con Cubos de S3 del Amazonas.

¿Qué es una gran pregunta?

Big Query es una solución de almacenamiento de datos altamente escalable y rentable en la plataforma de la nube de Google.

Beneficios de la gran consulta

  1. Analizar los petabytes de datos utilizando consultas ANSI SQL.
  2. Acceder a los datos y compartir conocimientos con facilidad
  3. Una plataforma más segura que se adapta a sus necesidades

Procesamiento por lotes desde el almacenamiento en la nube de Google a Big Query

Diseño de arquitectura

arquitectura de flujo de datos de google

Así es como se verá el flujo de la tubería. Aquí, la fuente es el cubo de almacenamiento de Google Cloud y el fregadero es Big Query. Big Query es un almacén de datos que se ofrece en la plataforma de Google Cloud.

google-cloud-storage-bucket

Como pueden ver en la captura de pantalla anterior, así es como se verán los datos en el cubo de almacenamiento de Google Cloud. Tenemos datos en forma de archivos JSON que empujaremos en la Gran Consulta.

Iniciar y configurar la tubería

El primer paso es configurar la configuración del oleoducto. Tenemos que establecer qué tipo de máquina usará el oleoducto, en qué región disponible, el oleoducto se ejecutará y así sucesivamente.

Recomendado:  Registro del esquema y evolución del esquema en Kafka

Podemos programar nuestro oleoducto en JAVA o Python. Primero, tenemos que configurar el objeto Dataflow Pipeline Options donde definiremos la configuración de nuestro pipeline.

Hemos usado Direct Runner para ejecutar y probar el oleoducto localmente.

Una vez que lo probemos localmente, podremos reemplazar a Direct Runner con Dataflow Runner. Eso es todo lo que necesitamos para desplegar nuestro oleoducto en la nube de flujo de datos.

Aparte de esto, también necesitamos pasar otras configuraciones al oleoducto como ID del proyecto, número máximo de nodos de trabajadores, ubicación temporal, ubicación de la puesta en escena, tipo de máquina de trabajadores, región donde nuestro oleoducto será desplegado, etc.

Crear una tubería

Después de pasar todas las configuraciones al objeto de las Opciones de Tubería de Flujo de Datos, entonces crearemos nuestro objeto de Tubería.

Consulte el siguiente fragmento para verlo más de cerca.

Procesamiento de datos de la fuente (Google Cloud Storage)

Aquí, la fuente de lectura de los datos es Google Cloud Storage Buckets, Una vez que creamos el objeto pipeline.


FileIO es el conector que está incorporado en el Apache Beam SDK que te permite leer archivos de GCS.

Hemos utilizado las funciones ParDo para convertir primero los objetos File IO en Key Value pair Objects como se puede ver a continuación.

Usando etiquetas tuples, nos aseguraremos de procesar sólo los resultados correctos al siguiente paso. Los registros fallidos se procesarán por separado usando etiquetas tuple fallidas si nos enfrentamos a algún tipo de excepción durante el procesamiento de los registros.

Empujando los datos al destino (Gran consulta de Google)

En este paso, limpiaremos cada par de Valor Clave y podremos hacer cualquier tipo de transformación según el caso de uso o requerimiento. En este caso, estamos empujando directamente los registros a la Gran Consulta.

Recomendado:  ¿Qué es Spark? La gran plataforma de datos que aplastó a Hadoop

¿Interesado en entrar en Big Data? Revisa nuestro curso de Spark Developer In Real World para conocer interesantes casos de uso y proyectos del mundo real como el que estás leyendo.

Antes de empujar los registros en BQ, tendremos que convertir primero los pares de valores clave en objetos de la fila de la tabla de la gran consulta.

Vea el fragmento de abajo para eso.

Una vez que convertimos los objetos en objetos de la fila de la tabla, usando el conector incorporado Big Query en Apache Beam SDK, puedes introducir los registros en la tabla.

Como podemos ver, tenemos un montón de opciones en el conector BQ. Tenemos que pasar el nombre de la tabla, donde se guardarán los registros.

Una vez que el oleoducto se despliega, podemos ver los detalles del monitoreo en el lado derecho. Como pueden ver en las imágenes siguientes, la configuración que hemos pasado en el oleoducto es visible allí.

google-data-flow-job-pipeline

Como Dataflow es una oferta gestionada por la plataforma de Google Cloud, podemos definir el algoritmo de auto-escalado así como la tubería.

La sección de monitoreo nos permitirá saber cuántas máquinas de trabajo están actualmente en uso, cuál será la utilización de la CPU del oleoducto y así sucesivamente.

google-cloud-platform-counters-options