¿Qué es Apache Beam y cómo encaja en el ecosistema de procesamiento de datos?

Si bien Apache Beam existe desde hace más de 5 años, descubrimos que los recién llegados a veces tienen dificultades para comprender claramente qué es y cómo se relaciona con otras herramientas y tecnologías de procesamiento de datos. En este breve artículo explicaremos qué es Apache Beam y su lugar en el ecosistema de procesamiento de datos.

¿Qué es Apache Beam?

La definición más simple de Apache Beam es que es "un modelo unificado para definir pipelines de procesamiento de datos". Esta definición tiene dos palabras muy importantes que necesitamos revisar más a fondo: modelo y unificado.

Ser un "modelo" significa que Apache Beam se centra en la definición, no en la implementación. Beam es una abstracción que deja los detalles de implementación a los motores de ejecución (o runners, como se les llama) como Apache Flink o Google Dataflow, por ejemplo.

Por otro lado, estar "unificado" significa que puedes aplicar el mismo modelo para distintos escenarios. Probablemente, la "unificación" más importante que proporciona Beam es que permite usar el mismo modelo para procesar datos por lotes (batch) o transmisión (streaming). Esta unificación también se aplica a los diferentes runners: en lugar de que definas tu pipeline mediante la sintaxis o herramientas específicas del runner, lo defines a través del modelo Beam y luego puede ejecutarlo en el runner más adecuado a tus necesidades.

¿Debería usar Beam?

Eso depende de tu caso. Si tienes un espectro angosto de necesidades de procesamiento de datos que están todas cubiertas por un runner específico (digamos Apache Spark) con el que ya estás familiarizado, entonces tal vez no tenga sentido agregar más abstracción a través de Beam. Por otro lado, Beam es bastante útil para organizaciones que tienen una amplia gama de necesidades de procesamiento de datos, con diferentes tipos de datos (batch, streaming) e interesadas en usar diferentes runners que pueden adaptarse mejor a escenarios o cargas de trabajo específicas.

¿En qué runners se puede ejecutar?

Por el momento, los runners en los que puede ejecutar pipelines definidas con Beam incluyen Google Dataflow, Flink, Spark, Samza, Nemo, Jet y Twister2, así como DirectRunner, que se usa principalmente para desarrollo/depuración. Entonces, ¿qué runner deberías usar? Bueno, lo que mejor se adapte a tus necesidades para la carga de trabajo dada. Para conocer los detalles de las capacidades específicas soportadas por cada corredor, consulta la Matriz de capacidades de Apache Beam.

¿Con qué lenguajes de programación es compatible?

Otra cosa importante a mencionar es que Beam también es compatible con una variedad de lenguajes de programación. Cuando Beam se creó originalmente, solo tenía un SDK de Java y, hasta el día de hoy algunos todavía piensan que Beam es "solo para Java". Sin embargo, hoy en día Beam también tiene SDK para Python y Go, y se agregarán más (por ejemplo, hay un SDK para Scala que se desarrolló en Spotify y posiblemente se incorpore como parte de Beam en el futuro). Esto significa que su equipo puede definir sus canalizaciones utilizando el modelo Beam en cualquiera de estos lenguajes de programación.
 
Eso es todo. Esperamos que esto te ayude a comprender qué es Beam y cómo se relaciona con otras herramientas en el ecosistema de procesamiento de datos.

¿Dónde puedo aprender más de Apache Beam?

El 10 de mayo se llevará a cabo Beam College, un programa educacional gratuito que brindará capacitación práctica para resolver casos de uso de procesamiento de datos utilizando Apache Beam.

El programa ofrece sesiones de capacitación en línea en vivo (en inglés) que luego están disponibles bajo demanda para referencia futura. Está diseñado para ser flexible, de modo que los participantes puedan inscribirse y asistir según los temas de sus intereses y necesidades.

Para la edición de este año, se enfocará en:

  • Implementar pipelines de Beam con diferentes lenguajes.
  • Escalar y prepararlo para entornos de producción.
  • Implementar escenarios de aprendizaje automático.

Beam College es organizado por Software Guru y apoyado por Google Cloud y otras comunidades open source.

Comments