¿Qué es Apache Iceberg?

Apache Iceberg es un formato de tabla de código abierto diseñado para conjuntos de datos analíticos a gran escala almacenados en data lakes. Aborda muchas de las limitaciones de los formatos de tabla de data lake tradicionales, ofreciendo una mayor fiabilidad, rendimiento y flexibilidad para las arquitecturas de data lakehouse. Puedes pensar en ella como una capa inteligente que se sitúa encima del almacenamiento de tu data lake, como Cloud Storage, y que proporciona funciones similares a las de una base de datos para tus conjuntos de datos de gran tamaño. En lugar de gestionar archivos, Iceberg gestiona tablas como colecciones de archivos de datos, lo que permite usar funciones como la evolución de esquemas, el viaje en el tiempo y una planificación de consultas más eficiente. De esta forma, los analistas, científicos e ingenieros de datos pueden trabajar con datos de lagos de datos con mayor facilidad y eficiencia, y aumentar sus cargas de trabajo analíticas.

¿Para qué se usa Apache Iceberg?

Apache Iceberg cumple multitud de funciones en las arquitecturas de datos modernas, especialmente en las que se aprovechan los lagos de datos. Sus principales casos prácticos son los siguientes:

  • Habilitación de lagos de datos fiables: Iceberg garantiza que las operaciones sean atómicas, coherentes, aisladas y duraderas (ACID). De esta forma, se evita la corrupción y las incoherencias de los datos que pueden surgir con las estrategias tradicionales basadas en archivos.
  • Compatibilidad con la evolución de los esquemas: a diferencia de los formatos de tablas más antiguos, que suelen tener problemas con los cambios de esquema, Iceberg permite que el esquema evolucione de forma fluida y segura. Puedes añadir, eliminar o cambiar el nombre de columnas sin interrumpir las consultas en curso ni tener que realizar costosas migraciones de datos.
  • Ofrece funciones de viaje en el tiempo: Iceberg mantiene un historial de instantáneas de las tablas, lo que permite a los usuarios consultar los datos tal y como eran en un momento concreto. Esto es muy útil para auditar, depurar y reproducir análisis.
  • Optimización del rendimiento de las consultas: la gestión de metadatos de Iceberg permite a los motores de consultas eliminar de forma eficiente los archivos de datos innecesarios, lo que agiliza considerablemente la ejecución de las consultas, especialmente en el caso de conjuntos de datos grandes.
  • Facilitar el gobierno de datos: funciones como la creación de versiones de tablas y la gestión de metadatos mejoran el gobierno de datos y las iniciativas de cumplimiento al proporcionar un registro de auditoría claro de los cambios en los datos.
  • Creación de data lakehouses: Iceberg es un componente fundamental para crear data lakehouses, que combinan la escalabilidad y la flexibilidad de los data lakes con las funciones de gestión de datos de los almacenes de datos. Permite ejecutar cargas de trabajo analíticas y operativas en los mismos datos.
  • Mejorar la fiabilidad de los datos para el aprendizaje automático: los conjuntos de datos coherentes y versionados que proporciona Iceberg son fundamentales para entrenar y desplegar modelos de aprendizaje automático fiables. Los científicos de datos pueden reproducir fácilmente experimentos con instantáneas de datos históricos.

¿Cómo funciona Apache Iceberg?

En esencia, Apache Iceberg funciona introduciendo una capa de metadatos que se sitúa por encima de los archivos de datos reales de tu data lake. Estos metadatos registran la estructura y el contenido de tus tablas de una forma más organizada y sólida que los sistemas tradicionales basados en archivos. A continuación, se describen sus mecanismos clave:

  1. Gestión de metadatos: Iceberg mantiene archivos de metadatos que describen el esquema, las particiones y las ubicaciones de los archivos de datos de la tabla. Estos archivos de metadatos suelen almacenarse en el data lake junto con los datos.
  2. Catálogo: Iceberg utiliza un catálogo para llevar un registro de la ubicación de los metadatos actuales de cada tabla. Este catálogo puede ser un servicio como Hive Metastore, una implementación basada en un sistema de archivos o un servicio de catálogo nativo de la nube.
  3. Instantáneas de tablas: cada vez que se hace un cambio en la tabla (por ejemplo, añadir o eliminar datos o evolucionar el esquema), Iceberg crea una nueva instantánea de los metadatos de la tabla. Estas instantáneas son inmutables y proporcionan un registro histórico del estado de la tabla.
  4. Listas de manifiestos y archivos de manifiestos: cada instantánea apunta a una lista de manifiestos, que a su vez contiene uno o varios archivos de manifiestos. Los archivos de manifiesto contienen metadatos sobre archivos de datos individuales, como su ubicación, los valores de partición y las estadísticas (como el número de filas y los intervalos de valores).
  5. Archivos de datos: son los archivos Parquet, ORC o Avro que almacenan los datos en el data lake. Los metadatos de Iceberg hacen un seguimiento de estos archivos y de su organización dentro de la tabla.

Arquitectura de Apache Iceberg

La arquitectura de Apache Iceberg consta de varios componentes clave que funcionan en conjunto:

  • Almacenamiento de data lake: es la capa de almacenamiento subyacente, como Cloud Storage, donde se almacenan los archivos de datos reales (en formatos como Parquet, ORC o Avro) y los archivos de metadatos de Iceberg.
  • Catálogo de Iceberg: este componente se encarga de gestionar los punteros de metadatos de las tablas de Iceberg. Actúa como un registro central que registra la versión actual de los metadatos de cada tabla. Estas son algunas de las implementaciones de catálogos más habituales:
  • Metastore de Hive: un repositorio de metadatos muy utilizado que se suele emplear con sistemas basados en Hadoop.
  • Catálogo del sistema de archivos: una implementación sencilla en la que la información del catálogo se almacena directamente en el sistema de archivos del data lake.
  • Servicios de catálogo nativos de la nube: servicios gestionados que ofrecen los proveedores de servicios en la nube para almacenar y gestionar metadatos.
  • Metadatos del iceberg: consta de varias capas de archivos de metadatos que registran la estructura y los datos de la tabla:
  • Archivo de metadatos de la tabla: este archivo apunta a la lista de manifiestos actual y contiene información general sobre la tabla, como su esquema y la especificación de particiones.
  • Lista de manifiestos: este archivo incluye una lista de los archivos de manifiesto que contienen metadatos sobre los archivos de datos en una captura específica de la tabla.
  • Archivos de manifiesto: estos archivos contienen información detallada sobre archivos de datos individuales, como su ubicación, valores de partición y estadísticas.
  • Motores de consultas y frameworks de procesamiento: son las herramientas que interactúan con las tablas de Iceberg para leer y escribir datos. Estos motores aprovechan los metadatos de Iceberg para optimizar la planificación y la ejecución de consultas.
  • Recursos de computación: son la infraestructura subyacente (por ejemplo, máquinas virtuales y contenedores) que ejecutan los motores de consultas y los frameworks de procesamiento.

Apache Iceberg y data lakes

Apache Iceberg mejora significativamente las funciones de los data lakes al añadir un formato de tabla fiable y eficaz. En los lagos de datos tradicionales que no tienen un formato de tabla como Iceberg, los datos suelen ser solo una colección de archivos. Esto puede dar lugar a varios problemas:

  • Falta de evolución de esquemas: cambiar la estructura de los datos puede ser complejo y dar lugar a errores
  • Lecturas inconsistentes: las operaciones de escritura simultáneas pueden hacer que las consultas lean una mezcla de datos antiguos y nuevos
  • Rendimiento lento de las consultas: sin metadatos que guíen a los motores de consultas, a menudo tienen que analizar grandes porciones de datos
  • Dificultad para gestionar los datos: las funciones, como el viaje en el tiempo y la gestión de versiones, no están disponibles fácilmente.

Iceberg aborda estas limitaciones proporcionando una capa estructurada encima del data lake. Aporta funciones similares a las de una base de datos a los data lakes, convirtiéndolos en data lakehouses más potentes y fáciles de gestionar. Al gestionar las tablas como colecciones de archivos con metadatos detallados, Iceberg permite:

  • Acceso a datos fiable y coherente: las propiedades ACID garantizan la integridad de los datos
  • Procesamiento de consultas eficiente: el filtrado y el salto de datos basado en metadatos aceleran las consultas
  • Gestión de datos flexible: la evolución de esquemas y el viaje en el tiempo simplifican el mantenimiento y el análisis de datos
  • Interoperabilidad: Iceberg está diseñado para ser compatible con varios motores de consultas y frameworks de procesamiento que se suelen usar con los data lakes.

Soluciona los retos empresariales que se te presenten con Google Cloud

Los nuevos clientes reciben 300 USD en crédito gratis para invertirlos en Google Cloud.
Habla con un especialista del equipo de ventas de Google Cloud y explícale tu reto único al detalle.

Desafíos de Apache Iceberg

Aunque Apache Iceberg ofrece ventajas significativas, también plantea algunos retos:

Mayor complejidad

La introducción de Iceberg añade otra capa de abstracción al data lake, lo que puede aumentar la complejidad general del sistema. Para entender y gestionar la capa de metadatos, se necesitan conocimientos específicos.

Dependencia de catálogo

Iceberg se basa en un servicio de catálogo (como Hive Metastore) para gestionar las ubicaciones de los metadatos de las tablas. La disponibilidad y el rendimiento del catálogo pueden afectar al sistema en general.

Curva de aprendizaje

Los equipos deben conocer los conceptos y las prácticas recomendadas asociados a Iceberg, lo que puede requerir formación y perfeccionamiento.

Posible sobrecarga

Aunque Iceberg optimiza el rendimiento de las consultas en muchos casos, la gestión de metadatos en sí misma genera cierta sobrecarga, sobre todo en el caso de conjuntos de datos muy pequeños o de consultas muy sencillas.

Madurez de las herramientas

Aunque el ecosistema de Iceberg está creciendo rápidamente, algunas herramientas e integraciones pueden ser menos maduras en comparación con las tecnologías de almacenamiento de datos más consolidadas.

Trabajo de migración

Migrar los data lakes que ya tienes para que usen Iceberg puede ser una tarea complicada, ya que puede requerir que reescribas datos y que hagas cambios en los flujos de procesamiento de datos que ya tienes.

Google Cloud y Apache Iceberg

Google Cloud proporciona un entorno sólido para aprovechar Apache Iceberg. Varios servicios de Google Cloud se integran bien con Iceberg, lo que permite a los usuarios crear soluciones de data lakehouse potentes y escalables.

Ve un paso más allá

Empieza a crear en Google Cloud con 300 USD en crédito gratis y más de 20 productos Always Free.

Google Cloud