Construcción de un data lake con Amazon S3 y Lake Formation - Patrones de diseño y gobernanza
Se presentan patrones de diseño de data lake que usan S3 como base de almacenamiento y logran un control de acceso detallado con Lake Formation. También se explican los pipelines ETL y la optimización de costes.
Patrones de diseño de data lake
Un data lake utiliza como base de almacenamiento S3, que tiene una durabilidad del 99.999999999% (once nueves), y gestiona por etapas todo el proceso, desde la ingesta de los datos sin procesar hasta su transformación a un estado analizable. La zona de aterrizaje (Raw) almacena tal cual los datos sin procesar ingeridos, y en la zona de staging (Processed) se realizan la conversión de tipos y la limpieza con trabajos de Glue. En la zona de curación (Curated) se colocan, en formato Parquet, los datos para análisis a los que se ha aplicado la lógica de negocio. En el diseño de prefijos de S3, si se adopta una estructura de particiones year/month/day, la poda de particiones reduce el volumen de escaneo de las consultas de Athena.
Gobernanza con Lake Formation
Lake Formation es un servicio que gestiona de forma centralizada el control de acceso de un data lake. Antes era necesario configurar por separado las políticas de bucket de S3, las políticas de IAM y las políticas del catálogo de Glue. Con Lake Formation, en cambio, se puede realizar una gestión de permisos basada en GRANT/REVOKE en cada uno de los niveles de base de datos / tabla / columna / fila. Con el control de acceso basado en etiquetas (LF-TBAC), se pueden asignar etiquetas de clasificación a los datos y aplicar automáticamente los derechos de acceso en función de las etiquetas. Con el uso compartido entre cuentas, se puede conceder acceso por tabla a otras cuentas dentro de Organizations, lo que también resulta útil para configuraciones de data mesh.
Diseño de pipeline ETL
El pipeline ETL de un data lake se construye con trabajos de Glue. Los rastreadores de Glue detectan el esquema de los datos sin procesar de la zona de aterrizaje y lo registran en el catálogo de datos. Los trabajos de Glue ejecutan la conversión de tipos, el tratamiento de valores faltantes y la eliminación de duplicados, y escriben el resultado en formato Parquet en la zona de curación. Se configuran claves de partición (fecha, región) para optimizar el rendimiento de las consultas de Athena. Con los flujos de trabajo de Glue se definen las dependencias entre varios trabajos y se controla el orden rastreador → trabajo ETL → comprobación de calidad de datos. Con EventBridge, el pipeline ETL se inicia automáticamente a partir de la llegada de datos a S3, y la actualización avanza sin demora tras la llegada de los datos.
Optimización de costes del data lake
Se optimizan los costes del data lake aprovechando las clases de almacenamiento de S3. Los datos sin procesar de la zona de aterrizaje se almacenan en S3 Standard y se configura una regla de ciclo de vida que los transfiere a S3 Intelligent-Tiering a los 30 días. Los datos curados se mantienen en Standard porque se consultan con frecuencia, y los datos de la zona de archivo se transfieren a Glacier Instant Retrieval. El coste de las consultas de Athena se puede reducir con el formato Parquet y un diseño de particiones adecuado, y hay casos en los que el volumen de escaneo se reduce en comparación con CSV. Se configura adecuadamente el número de DPU de los trabajos de Glue y se evita la asignación excesiva de recursos. Con S3 Storage Lens se visualiza el desglose de costes por bucket y se eliminan periódicamente los datos innecesarios y se revisan las clases de almacenamiento.
Diseño de capas
Un método que se utiliza con frecuencia es diseñar el data lake dividiéndolo en capas según la etapa de procesamiento de los datos. Se divide en etapas, por ejemplo, una capa en la que se colocan los datos sin procesar tal como se ingirieron, una capa a la que se ha aplicado limpieza y formateo, y una capa agregada / procesada en una forma fácil de analizar. Al conservar los datos sin procesar, se pueden reprocesar más adelante con otros fines y también se puede rehacer el procesamiento. Al separar claramente cada capa, resulta más fácil seguir el linaje de los datos y también gestionar su calidad. Los usuarios consultan los datos de la capa adecuada según su propósito. Una estructura de capas por etapas se convierte en la base de un data lake flexible y muy reutilizable.
Formatos de archivo y particionamiento
El rendimiento y el coste de un data lake dependen en gran medida del formato de almacenamiento de los archivos y de la forma de dividir los datos. Si se almacenan en un formato columnar, las consultas analíticas pueden leer solo las columnas necesarias, por lo que el volumen de escaneo disminuye, las consultas son más rápidas y resulta más fácil contener el coste. Si se particionan los datos por fecha o por atributo, las consultas pueden leer solo el rango necesario. Por otro lado, una gran cantidad de archivos pequeños reduce el rendimiento de las consultas, por lo que es necesario agruparlos en archivos de tamaño moderado. Diseñar adecuadamente el formato de almacenamiento / la partición / el tamaño de los archivos es un factor importante para analizar datos a gran escala de forma eficiente.
Gestión de metadatos y del catálogo
Como en un data lake se acumulan datos muy diversos, se necesita un mecanismo para gestionar qué hay y dónde. Se registran las definiciones de tablas en un catálogo de datos y se gestionan de forma centralizada la estructura y la ubicación de los datos. Los rastreadores leen automáticamente la estructura de los datos, lo que permite mantener el catálogo actualizado. Como la estructura de los datos ingeridos cambia con el tiempo, se prepara un diseño capaz de adaptarse a la evolución del esquema. Con un catálogo bien mantenido, a los usuarios les resulta más fácil encontrar los datos que necesitan y pueden acceder a ellos de forma coherente desde varias herramientas de análisis. La gestión de los metadatos determina la facilidad de uso del data lake.
Del data lake al lakehouse
Los data lakes tradicionales podían almacenar grandes volúmenes de datos a bajo coste, pero se les daba mal gestionar las actualizaciones y la coherencia. Lo que compensa esto es el uso de nuevos formatos de tabla que permiten actualizaciones / eliminaciones y operaciones coherentes sobre el data lake. Con los formatos de tabla abiertos, se pueden obtener operaciones de datos fiables como las de un almacén de datos y la función de consultar los datos de un momento pasado, manteniendo la eficiencia de costes del data lake. Se puede tratar la misma tabla de forma coherente desde varios motores de análisis. Este enfoque, que integra las ventajas del almacenamiento y del almacén de datos, está ampliando las opciones de plataforma de datos.
Resumen
Un data lake que combina S3 y Lake Formation es una configuración que prepara los datos por etapas con un diseño de zonas de tres capas y aplica la gobernanza con el control de acceso detallado de Lake Formation. Con la detección automática de esquemas mediante los rastreadores de Glue y la adopción de formatos columnares, se puede reducir el esfuerzo de operación y, al mismo tiempo, mejorar el rendimiento de las consultas.
Referencias (recursos oficiales de AWS)
Las fuentes primarias de esta página son el sitio web y la documentación oficiales de AWS. Consulta las páginas oficiales siguientes para conocer las especificaciones y los precios más recientes.
- Amazon S3 (página oficial)
- AWS Lake Formation (página oficial)
- AWS Glue (página oficial)
- Documentación de AWS (oficial)
Si esta página y la documentación oficial difieren, prevalece la documentación oficial.