Utilice estas herramientas de código abierto para el almacenamiento de datos

En estos días, todo el mundo habla de software de código abierto. Sin embargo, esto todavía no es común en el campo Almacenamiento de datos (DWH). ¿Por qué es esto?

Para esta publicación, elegí algunas tecnologías de código abierto y las usé juntas para construir una arquitectura de datos completa para un sistema de almacenamiento de datos.

Fui con Apache Druid para el almacenamiento de datos, Apache Superset para realizar consultas y Apache Airflow como orquestador de tareas.

Druid - el almacén de datos

Druid es un almacén de datos distribuido de código abierto, orientado a columnas, escrito en Java. Está diseñado para ingerir rápidamente cantidades masivas de datos de eventos y proporcionar consultas de baja latencia además de los datos.

¿Por qué usar Druid?

Druid tiene muchas características clave, que incluyen consultas OLAP de menos de un segundo, ingesta de transmisión en tiempo real, escalabilidad y rentabilidad.

Con la comparación de las tecnologías OLAP modernas en mente, elegí Druid sobre ClickHouse, Pinot y Apache Kylin. Recientemente, Microsoft anunció que agregará Druid a su Azure HDInsight 4.0.

¿Por qué no Druid?

Carter Shanklin escribió una publicación detallada sobre las limitaciones de Druid en Horthonwork.com. El problema principal es su soporte para combinaciones SQL y capacidades SQL avanzadas.

La arquitectura de Druid

Druid es escalable debido a su arquitectura de clúster. Tiene tres tipos de nodos diferentes: el nodo intermedio del administrador, el nodo histórico y el intermediario.

Lo bueno es que puede agregar tantos nodos como desee en el área específica que mejor se adapte a sus necesidades. Si tiene que ejecutar muchas consultas, puede agregar más agentes. O, si es necesario ingerir una gran cantidad de datos por lotes, agregaría gerentes intermedios, etc.

A continuación se muestra una arquitectura simple. Puedes leer más sobre el diseño de Druid aquí.

Apache Superset: la interfaz de usuario

La forma más fácil de consultar contra Druid es a través de una herramienta ligera de código abierto llamada Apache Superset.

Es fácil de usar y tiene todos los tipos de gráficos comunes como Bubble Chart, Word Count, Heatmaps, Boxplot y muchos más.

Druid proporciona una API de descanso y, en la versión más reciente, también una API de consulta SQL. Esto hace que sea fácil de usar con cualquier herramienta, ya sea SQL estándar, cualquier herramienta de BI existente o una aplicación personalizada.

Apache Airflow: el orquestador

Como se menciona en Orquestadores: programar y monitorear flujos de trabajo, esta es una de las decisiones más críticas.

En el pasado, las herramientas ETL como Microsoft SQL Server Integration Services (SSIS) y otras se usaban ampliamente. Fueron donde tuvo lugar su transformación, limpieza y normalización de datos.

En arquitecturas más modernas, estas herramientas ya no son suficientes.

Además, el código y la lógica de transformación de datos son mucho más valiosos para otras personas de la empresa que conocen los datos.

Le recomiendo encarecidamente que lea una publicación de blog de Maxime Beauchemin sobre Ingeniería funcional de datos, un paradigma moderno para el procesamiento de datos por lotes. Esto profundiza mucho más en cómo deberían ser las canalizaciones de datos modernas.

Además, considere la lectura de The Downfall of the Data Engineer donde Max explica sobre el rompimiento del “silo de datos” y mucho más.

¿Por qué utilizar Airflow?

Apache Airflow es una herramienta muy popular para esta orquestación de tareas. El flujo de aire está escrito en Python. Las tareas se escriben como gráficos acíclicos dirigidos (DAG). Estos también están escritos en Python.

En lugar de encapsular su lógica de transformación crítica en algún lugar de una herramienta, la coloca donde pertenece dentro del orquestador.

Otra ventaja es usar Python simple. No es necesario encapsular otras dependencias o requisitos, como buscar desde un FTP, copiar datos de A a B, escribir un archivo por lotes. Haces eso y todo lo demás en el mismo lugar.

Características de Airflow

Además, obtiene una descripción general completamente funcional de todas las tareas actuales en un solo lugar.

Las características más relevantes de Airflow son que escribe flujos de trabajo como si estuviera escribiendo programas. Los trabajos externos como Databricks, Spark, etc. no suponen ningún problema.

Las pruebas de trabajo pasan por Airflow. Eso incluye pasar parámetros a otros trabajos posteriores o verificar qué se está ejecutando en Airflow y ver el código real. Los archivos de registro y otros metadatos son accesibles a través de la GUI web.

(Re) ejecutar solo en partes del flujo de trabajo y las tareas dependientes es una característica crucial que sale de la caja cuando crea sus flujos de trabajo con Airflow. Los trabajos / tareas se ejecutan en un contexto, el programador pasa los detalles necesarios y el trabajo se distribuye en su clúster a nivel de tarea, no a nivel de DAG.

Para ver muchas más funciones, visite la lista completa.

ETL con Apache Airflow

Si desea comenzar con Apache Airflow como su nueva herramienta ETL, comience con estas mejores prácticas ETL compartidas con Airflow. Tiene ejemplos de ETL simples, con SQL simple, con HIVE, con Data Vault, Data Vault 2 y Data Vault con procesos de Big Data. Le brinda una excelente descripción general de lo que es posible y también de cómo lo abordaría.

Al mismo tiempo, hay un contenedor Docker que puede usar, lo que significa que ni siquiera tiene que configurar ninguna infraestructura. Puedes sacar el contenedor desde aquí.

Para el repositorio de GitHub, siga el enlace en etl-with-airflow.

Conclusión

Si está buscando una arquitectura de datos de código abierto, no puede ignorar a Druid para obtener respuestas OLAP rápidas, Apache Airflow como un orquestador que mantiene su linaje de datos y horarios en línea, además de una herramienta de panel fácil de usar como Apache Superset.

Mi experiencia hasta ahora es que Druid es increíblemente rápido y se adapta perfectamente a los reemplazos de cubos OLAP de forma tradicional, pero aún necesita un inicio más relajado para instalar clústeres, ingerir datos, ver registros, etc. Si lo necesita, eche un vistazo a Impy que fue creado por los fundadores de Druid. Crea todos los servicios relacionados con Druid que necesitas. Sin embargo, desafortunadamente, no es de código abierto.

Apache Airflow y sus funciones como orquestador son algo que aún no ha sucedido mucho en los entornos tradicionales de Business Intelligence. Creo que este cambio se produce de forma muy natural cuando empiezas a utilizar el código abierto y más tecnologías nuevas.

Y Apache Superset es una forma fácil y rápida de estar en funcionamiento y mostrar datos de Druid. Hay mejores herramientas como Tableau, etc., pero no gratis. Es por eso que Superset encaja bien en el ecosistema si ya está utilizando las tecnologías de código abierto mencionadas anteriormente. Pero como empresa empresarial, es posible que desee gastar algo de dinero en esa categoría porque eso es lo que los usuarios pueden ver al final del día.

Enlaces relacionados:

  • Comprensión de los conceptos clave de Apache Airflow
  • Cómo Druid habilita el análisis en Airbnb
  • Google lanza Cloud Composer, una nueva herramienta de automatización del flujo de trabajo para desarrolladores
  • Un servicio de orquestación de flujo de trabajo completamente administrado construido en Apache Airflow
  • Integración de Apache Airflow y Databricks: creación de canalizaciones ETL con Apache Spark
  • ETL con Apache Airflow
  • ¿Qué es la ingeniería de datos y el futuro del almacenamiento de datos?
  • Imply: plataforma Managed Druid (código cerrado)
  • Análisis OLAP ultrarrápido con Apache Hive y Druid

Publicado originalmente en www.sspaeti.com el 29 de noviembre de 2018.