Corriendo Apache Beam por fuera de GCP
¿Dónde se utiliza Apache Beam para cargas de trabajo de producción cuando se ejecuta fuera de Google Cloud?
Al embarcarte en tu viaje con Apache Beam, es posible que te preguntes: ¿puedo correr Apache Beam por fuera de Google Cloud? ¡La respuesta es un rotundo sí! La filosofía de diseño de Apache Beam se centra en brindar una capa de abstracción para los desarrolladores, lo que les permite concentrarse en crear la lógica empresarial en lugar de empantanarse en los detalles de implementación. Esta flexibilidad te permite integrar Apache Beam sin problemas en tu ecosistema preferido, lo que agiliza el proceso de desarrollo y genera una mayor productividad.
En este artículo, cubriremos algunos ejemplos en los que Apache Beam se usa para data pipelines de producción fuera de Google Cloud Platform. El objetivo es mostrar la viabilidad de ejecutar Apache Beam fuera de Google Cloud Platform (GCP) y destacar que las grandes empresas están utilizando esta tecnología con éxito en sus propios entornos. La información aquí está respaldada por blogs oficiales de Apache Beam, Yelp, LinkedIn, Intuit y Lyft.
En los próximos artículos, adoptaremos un enfoque paso a paso para implementar Apache Beam en varios runners, explorando las capacidades y las mejores prácticas para cada uno.
Contenido
1. Uso de Apache Beam en Yelp
2. Uso de Apache Beam en LinkedIn
3. Uso de Apache Beam en Intuit
4. Uso de Apache Beam en Lyft
1. Corriendo Apache Beam en Yelp
Un poco de contexto: las “Business Properties” de Yelp abarcan varios puntos de datos asociados con una empresa. Por ejemplo, las propiedades de un restaurante pueden incluir métodos de pago aceptados, servicios y horarios de atención. Hay dos tipos: Atributos de negocio (Business Attributes), que son parte del sistema heredado, y Características de Negocio (Business Features), que se encuentran en un microservicio dedicado, alineado con la Arquitectura Orientada a Servicios de Yelp.
Recopilación y transformación de datos de atributos empresariales
Yelp administra un volumen sustancial de datos de atributos de negocio distribuidos en numerosas tablas MySQL. Sincronizar y transformar de manera eficiente estos datos para distintos consumidores, como data warehouses offline y sistemas de análisis en tiempo real, es crucial. Yelp utiliza Apache Beam, junto con Apache Flink como backend de procesamiento distribuido, para optimizar la transformación y el formato de los datos de atributos de negocio.
- Transformación de datos: los procesos de transformación de Apache Beam procesan los flujos (streams) de entrada generados por el controlador de replicación MySQL. Estos flujos replican datos de las tablas MySQL, que luego Apache Beam estandariza y transforma en un formato consistente.
- Flujo de datos unificado: los datos transformados se publican en un único flujo unificado, lo que garantiza la coherencia en todas las propiedades de la empresa. Este flujo unificado abstrae las complejidades internas y simplifica el consumo de datos para diversos servicios y sistemas.
Al usar Apache Beam, Yelp puede manejar de manera eficiente el alto rendimiento y las transformaciones complejas requeridas para sus datos de atributos de negocio, lo que garantiza la sincronización en tiempo real y datos de alta calidad tanto para los consumidores de flujos (streaming) como offline.
Streaming de características de negocio
Yelp almacena características de negocio y metadatos asociados en Cassandra. Sincronizar estos datos en tiempo real con otros sistemas, manteniendo al mismo tiempo un formato consistente, es esencial para un consumo de datos sin inconvenientes. Apache Beam, junto con los conectores de Cassandra, se utiliza para transmitir y transformar datos de características de negocio en un formato unificado.
- Formato de datos: las transformaciones de Apache Beam procesan el flujo de salida de Cassandra, lo que garantiza que los datos de las características de negocio coincidan con el formato unificado utilizado para los atributos de negocio.
- Flujo de datos consistente: los datos resultantes se publican en el mismo flujo de salida unificado que los atributos de negocio, lo que mantiene la consistencia y facilita la integración y el consumo de datos.
Las capacidades de Apache Beam permiten a Yelp gestionar el procesamiento de datos en tiempo real de manera eficiente, garantizando que las características de negocio estén formateadas de manera consistente y fácilmente disponibles para varias aplicaciones posteriores.
Enriquecimiento de datos con metadatos de propiedades
Para proporcionar información completa, Yelp necesita enriquecer los datos de las propiedades de negocio con metadatos asociados, como fecha y hora de modificación y niveles de confianza de precisión. Yelp utiliza un job de Joinery Flink para unir los flujos de datos de negocio con sus metadatos correspondientes. Apache Beam desempeña un papel crucial en este proceso al transformar y preparar los datos para la integración.
- Enriquecimiento de datos: los jobs de transformación de Apache Beam procesan y estandarizan los datos de las propiedades de negocio. Luego, el job de Joinery Flink fusiona estos datos con metadatos de varios tópicos de Kafka, lo que crea flujos (streams) de datos enriquecidos.
- Flujos de datos completos: el flujo de datos enriquecido contiene tanto propiedades de negocio como metadatos relevantes, lo que garantiza que los consumidores tengan acceso a información completa y precisa.
La capacidad de Apache Beam para manejar transformaciones e integraciones complejas garantiza que los flujos (streams) de datos de Yelp estén enriquecidos y listos para diversos casos de uso, desde análisis hasta monitoreo en tiempo real.
Formato de datos final
Garantizar la coherencia de los datos, eliminar las entradas no válidas y agregar campos complementarios es fundamental para proporcionar datos de alta calidad a los distintos consumidores. Apache Beam se utiliza para realizar tareas de formato de datos final, solucionar incoherencias y preparar los datos para su consumo.
- Limpieza de datos: los jobs de transformación de Apache Beam limpian los datos, eliminan los duplicados y las entradas no válidas y agregan los campos necesarios para garantizar su integridad.
- Datos coherentes y confiables: los datos transformados finales se publican en un flujo consolidado, que se expone para el consumo de sistemas offline como Redshift y el Data Lake de Yelp, así como de los consumidores en tiempo real dentro de la organización.
Al aprovechar Apache Beam, Yelp garantiza que sus datos sean coherentes, confiables y estén listos para el análisis y la generación de informes, lo que proporciona información valiosa para las distintas partes interesadas.
Consumo e integración en tiempo real
Los sistemas de marketing y otros servicios de Yelp requieren una sincronización oportuna de los datos de las propiedades de negocio para campañas y otras aplicaciones en tiempo real. El flujo de datos consolidado, formateado y enriquecido con Apache Beam, se utiliza para sincronizar los datos de las propiedades de negocio con los sistemas en tiempo real.
- Sincronización oportuna: Apache Beam garantiza que el flujo de datos esté actualizado y sea preciso, proporcionando datos en tiempo real a los sistemas de marketing y otros servicios.
- Integración sin dificultad: el mismo flujo de datos puede ser consumido por varias aplicaciones en tiempo real, lo que facilita el uso compartido y la integración eficiente de los datos en toda la organización.
Las sólidas capacidades de streaming de Apache Beam permiten a Yelp satisfacer las demandas de los consumidores de datos en tiempo real, garantizando una sincronización de datos oportuna y precisa para aplicaciones críticas.
2. Uso de Apache Beam en LinkedIn
LinkedIn utiliza Apache Beam ampliamente para el procesamiento de transmisiones en tiempo real, y administra más de 4 billones de eventos por día a través de más de 3000 pipelines. Este framework admite servicios críticos como machine learning, notificaciones y modelado de IA antiabuso. Con una base de usuarios masiva de más de 950 millones de miembros, la capacidad de LinkedIn para mantener operaciones fluidas es vital para conectar a profesionales de todo el mundo.
El viaje de código abierto de LinkedIn
LinkedIn tiene una sólida trayectoria de contribución a la comunidad de código abierto y administra más de 75 proyectos. Las herramientas clave desarrolladas por LinkedIn incluyen Apache Kafka para la ingesta de datos y Apache Samza para la transmisión de eventos, que forman la base de su ecosistema de procesamiento de datos.
A pesar de estas innovaciones, la necesidad de un sistema de procesamiento unificado y más eficiente los llevó a Apache Beam.
Transición a Apache Beam
El lanzamiento de Apache Beam en 2016 abordó la necesidad de LinkedIn de un modelo de procesamiento de datos unificado que admita tanto el procesamiento por lotes como el de transmisión (streaming). La API avanzada de Apache Beam y la compatibilidad con varios lenguajes (Python, Go y Java) permitieron a LinkedIn crear sofisticados pipelines de procesamiento en varios lenguajes y ejecutarlos en cualquier motor, lo que mejoró significativamente sus capacidades de procesamiento y eficiencia.
Profundicemos en las aplicaciones de Apache Beam en LinkedIn y descubramos la amplia gama de casos de uso que demuestran sus capacidades en el procesamiento y la gestión de datos.
Pipelines por lotes y de transmisión unificadas
La transición de LinkedIn a Apache Beam implicó la migración de varios casos de uso, incluido su proceso de estandarización. Este proceso implica el procesamiento en tiempo real de los datos de los usuarios, como los puestos de trabajo y las habilidades, para mejorar las recomendaciones laborales. El modelo unificado de Apache Beam permitió a LinkedIn gestionar tanto la estandarización en tiempo real como el relleno periódico de manera eficiente, lo que redujo el uso de memoria y CPU en un 50 % (de ~5000 GB-horas y ~4000 horas de CPU a ~2000 GB-horas y ~1700 horas de CPU) y aceleró el tiempo de procesamiento en un 94 % (de 7,5 horas a 25 minutos).
Cientos de jobs de Apache Beam en streaming ahora potencian la estandarización en tiempo real, escuchando eventos las 24 horas del día, los 7 días de la semana, enriqueciendo los flujos (streams) con datos adicionales de tablas remotas, realizando el procesamiento necesario y escribiendo los resultados en las bases de datos de salida.
Según el tipo de procesamiento de destino, streaming o por lotes, el pipeline de estandarización unificada de Apache Beam se puede implementar a través del clúster Samza como un job de streaming o a través del clúster Spark como un job de reposición de lotes.
Modelado de IA en casi real-time y contra el abuso
Apache Beam fortalece la plataforma contra el abuso de LinkedIn, Chronos, que detecta y previene el abuso casi en tiempo real. La flexibilidad de la arquitectura de Apache Beam permitió la integración de pipelines contra el abuso con Kafka, lo que redujo significativamente el tiempo para etiquetar acciones abusivas de un día a solo cinco minutos. Esta mejora fortalece la capacidad de LinkedIn para detectar y prevenir varias formas de abuso rápidamente.
Chronos se basa en dos pipelines de Apache Beam en tiempo real: el de filtro y el de modelo.
Plataforma de Notificaciones
La plataforma de notificaciones de LinkedIn se basa en Apache Beam y Apache Samza para generar y distribuir notificaciones a los miembros. Apache Beam maneja grandes volúmenes de datos en tiempo real, lo que permite enviar notificaciones oportunas y relevantes. La API avanzada y los componentes reutilizables de Apache Beam aceleran el desarrollo y la ampliación de la plataforma, lo que mejora la participación de los usuarios a través de actualizaciones oportunas.
Generación de características de ML en tiempo real
Los modelos de machine learning de LinkedIn para recomendaciones de empleo y feeds de búsqueda dependen de la generación de características en tiempo real. Apache Beam reemplazó el antiguo pipeline offline, reduciendo la latencia de 24 a 48 horas a solo unos segundos. Esta capacidad de procesamiento en tiempo real permite que los modelos de machine learning de LinkedIn brinden recomendaciones más personalizadas y oportunas.
Plataforma de procesamiento de flujos (streams) gestionados
Con más de 3000 pipelines de Apache Beam, LinkedIn desarrolló Managed Beam para optimizar y automatizar la creación y gestión de aplicaciones de streaming. Managed Beam simplifica los procesos operativos y de desarrollo para los ingenieros de IA, lo que reduce significativamente el tiempo de incorporación de nuevas aplicaciones de meses a días. La abstracción y portabilidad de Apache Beam facilitan la integración y la escalabilidad.
3. Uso de Apache Beam en Intuit
Intuit es una plataforma tecnológica global conocida por sus soluciones de automatización financiera y de marketing, entre las que se incluyen TurboTax, QuickBooks, Mint, Credit Karma y Mailchimp. Para respaldar su misión de impulsar la prosperidad, Intuit desarrolló una plataforma de procesamiento de flujos (streams) de autoservicio que utiliza Apache Beam para acelerar las aplicaciones en tiempo real y optimizar el procesamiento de datos.
Procesamiento de Flujos Autoservicio
En 2019, el equipo de Infraestructura de datos de Intuit comenzó a diseñar una plataforma de procesamiento de flujos (streams) para brindar una experiencia fluida a los desarrolladores, centrándose en la lógica empresarial en lugar de la gestión operativa y de la infraestructura. Se eligió Apache Beam como la tecnología de procesamiento de datos principal debido a su flexibilidad y portabilidad, lo que permite al equipo utilizar varios lenguajes de programación y motores de ejecución. Inicialmente, se utilizaron pipelines de Apache Beam con Apache Samza para gestionar los Kafka streams.
El agnosticismo de los runners de Apache Beam resultó crucial cuando Intuit cambió de Apache Samza a Apache Flink sin causar interrupciones a los usuarios. Esta flexibilidad destacó los beneficios de Apache Beam, lo que garantiza transiciones fluidas y la preparación de la plataforma para el futuro.
La extensibilidad de la plataforma le permitió a Intuit crear una capa de SDK personalizada para lograr una mejor compatibilidad con su instalación de Kafka. La plataforma de procesamiento de datos en streaming proporcionó una interfaz gráfica de usuario (GUI) para diseñar, implementar, monitorear y depurar pipelines de procesamiento de datos, utilizando Argo Workflows para la implementación en Kubernetes.
Impulsando datos en tiempo real
Una de las aplicaciones más impactantes de Apache Beam en Intuit es el pipeline unificado de procesamiento de flujos de clickstream. Este pipeline consume, agrega y procesa eventos de clickstream en crudo de Kafka, enriqueciendo los datos con geolocalización y otras características. Las transformaciones compuestas de Apache Beam, como ventanas, temporizadores y procesamiento con estados, permiten un control detallado sobre la actualización de los datos, lo que permite el enriquecimiento de datos en tiempo real cada minuto, una mejora significativa con respecto al intervalo anterior de cuatro horas.
Otro caso de uso crítico es la plataforma de ingesta de características características, que admite nuevas experiencias de cliente impulsadas por IA y ML. Los pipelines de Apache Beam ingieren características en tiempo real generadas por otros pipelines y las escriben en el almacén de características de Intuit para el entrenamiento y la inferencia de modelos de ML. La plataforma también ofrece una capacidad de corrección de datos históricos (backfill), lo que permite que los pipelines procesen datos históricos y arranquen el estado antes de cambiar al contexto de streaming.
Resultados
Desde el lanzamiento de la plataforma de procesamiento de streaming de Intuit, la cantidad de pipelines de streaming impulsados por Apache Beam se ha duplicado anualmente, con más de 160 pipelines de producción activos corriendo en 710 nodos en seis clusters de Kubernetes a julio de 2022. Estos pipelines manejan aproximadamente 17.3 mil millones de eventos y 82 TB de datos, procesando 800,000 transacciones por segundo durante las temporadas pico.
Más fuerte para la gente de atrás:
Más de 160 pipelines de producción activos manejan aproximadamente 17.3 mil millones de eventos y 82 TB de datos, procesando 800,000 transacciones por segundo durante las temporadas pico.
La abstracción de los motores de ejecución de Apache Beam permitió a Intuit cambiar los runners principales sin tener que reescribir el código, lo que preparó la plataforma para el futuro, para runners en evolución. Esta flexibilidad democratizó el procesamiento de flujos (streams) en los equipos de desarrollo de Intuit, lo que permitió a los ingenieros incorporarse rápidamente y migrar procesos por lotes a aplicaciones de streaming.
Con Apache Beam, Intuit aceleró el desarrollo y el lanzamiento de pipelines de datos de transmisión (streaming) de nivel de producción, reduciendo el tiempo de desarrollo de tres meses a un mes. El tiempo para diseñar pipelines de preproducción se redujo a solo 10 días. La migración a los pipelines de transmisión (streaming) de Apache Beam también resultó en una optimización de 5 veces en los costos de memoria y computación. Intuit continúa desarrollando pipelines de transmisión (streaming) de Apache Beam para nuevos casos de uso, con 150 pipelines más en preproducción.
4. Uso de Apache Beam en Lyft
Lyft, Inc. es un proveedor de servicios de movilidad estadounidense que ofrece servicios de transporte, alquiler, bicicletas compartidas, entrega de alimentos y soluciones de transporte para empresas. Lyft, que opera en Estados Unidos y Canadá, necesita una infraestructura de transmisión (streaming) en tiempo real potente para conectar a conductores y pasajeros de manera eficiente. Apache Beam se ha convertido en una tecnología fundamental para Lyft, ya que permite el procesamiento de datos en tiempo real a gran escala y la creación de pipelines de machine learning (ML).
Democratizando el Procesamiento en Streaming
Inicialmente, Lyft creó procesos de ETL de transmisión (streaming) utilizando Amazon Kinesis y Apache Flink para procesar eventos para su lago de datos. Sin embargo, las crecientes demandas de modelos de ML en tiempo real y las diversas preferencias de lenguajes de programación impulsaron a Lyft a explorar Apache Beam en 2019. La portabilidad y las capacidades multilingües de Apache Beam fueron atractivos clave. Ofrece varios runners, incluido el runner Beam Flink, y admite múltiples lenguajes de programación.
Al aprovechar Apache Beam, Lyft permitió que los equipos de infraestructura de datos utilizaran Java y que los equipos de productos utilizaran Python, lo que agilizó la creación y ejecución de pipelines de transmisión (streaming). Esta flexibilidad permitió a los equipos escribir pipelines cómodamente y ejecutarlos en el runner Flink de Beam. El equipo de la plataforma de datos de Lyft creó un plano de control de servicios internos para administrar las aplicaciones Flink en Kubernetes, utilizando una estrategia de implementación azul/verde para pipelines críticos y macros personalizadas para una mejor observabilidad e integración CI/CD. El equipo también desarrolló un DSL (Domain-Specific Language) liviano basado en YAML y PTransforms de Apache Beam reutilizables para filtrar y enriquecer eventos.
Impulsando procesos de machine learning en tiempo real
El equipo de Marketplace de Lyft utiliza Apache Beam para respaldar machine learning en tiempo real, generando características en transmisión (streaming) y ejecutando modelos de machine learning. Separaron la generación de características y la ejecución de modelos de machine learning en múltiples pipelines. Los pipelines de Apache Beam generan características en tiempo real y las escriben en Kafka para la ejecución del modelo. Las características se procesan mediante transformaciones ParDo con estado y los modelos de machine learning se invocan en función de la disponibilidad de características. Los resultados del modelo pueden retroalimentarse en otros modelos, lo que crea un flujo de trabajo DAG.
Al procesar aproximadamente 4 millones de eventos por minuto con una latencia por debajo de un segundo, Apache Beam permitió a Lyft reducir la latencia en un 60%, simplificar el código e incorporar nuevos equipos y casos de uso al streaming.
Amplificando Casos de Uso
Lyft ha utilizado Apache Beam en más de 60 casos de uso, mejorando las experiencias de los usuarios en tiempo real y cumpliendo con los compromisos comerciales. Por ejemplo:
- Entrega de datos de mapas: Se realizó la transición del procesamiento por lotes al procesamiento en tiempo real para identificar cierres de carreteras y procesar aproximadamente 400 000 eventos por segundo para mejorar el enrutamiento y el tiempo estimado de llegada (ETA).
- Reportería de aeropuertos: Se migró a un pipeline en streaming para informar las recogidas y devoluciones en los aeropuertos, lo que mejoró los puntajes de cumplimiento y redujo la latencia de 5 a 2 segundos.
El uso de software de código abierto por parte de Lyft incluye contribuciones significativas a Apache Beam y el intercambio de sus integraciones y experiencias en varios eventos de la industrias.
Resultados
La portabilidad de Apache Beam permitió a Lyft ejecutar pipelines de datos de misión crítica escritos en lenguajes que no son de JVM en un runner basado en JVM, lo que evitó la reescritura de código y redujo el tiempo de desarrollo de días a horas. El aislamiento total del código de usuario y la ejecución nativa de CPython facilitaron la incorporación y la adopción.
El modelo de programación unificado de Apache Beam resolvió el dilema del lenguaje de programación de Lyft, permitiendo el uso tanto de Python como de Java.
Lyft construyó y escaló con éxito más de 60 pipelines de transmisión (streaming), procesando eventos casi en tiempo real con latencias muy bajas. Planean aprovechar Beam SQL y el SDK de Go para obtener capacidades multilingües completas de Apache Beam.
Palabras Finales
La versatilidad y la potencia de Apache Beam se extienden mucho más allá de los confines de Google Cloud, ofreciendo soluciones sólidas para el procesamiento de datos en tiempo real y por lotes en diversas industrias. Como lo demuestran sus implementaciones exitosas en Yelp, LinkedIn, Intuit y Lyft, Apache Beam es capaz de manejar transformaciones de datos complejas, garantizar la coherencia de los datos y permitir integraciones perfectas.
Si estás considerando adoptar Apache Beam para tus necesidades de procesamiento de datos o si buscas mejorar tu infraestructura de datos actual con esta poderosa tecnología, estoy aquí para ayudarte. Con mi amplia experiencia en ingeniería de datos y un profundo conocimiento de Apache Beam, puedo brindar la experiencia y el soporte necesarios para implementar y optimizar Apache Beam para tus casos de uso específicos.
Contáctame para conversar sobre cómo podemos aprovechar Apache Beam para elevar tus capacidades de procesamiento de datos e impulsar tu negocio hacia adelante.
Gracias por leer. ¿Qué tal otro artículo?
¿Qué te convierte en un gran ingeniero de datos?
Áreas clave para destacar
davidregalado255.medium.com
¿Querías más?
Si presionas 50 veces el botón de 👏 algo maravilloso sucederá.
- Versión del post en inglés aquí.
- Sígueme (David Regalado) para más contenido.
- Sigue a Data Engineering Latam (Dataengineering Latam) para más contenido sobre ingeniería de datos, ciencia de datos y gestión de los datos.