¿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, lo que ofrece confiabilidad, rendimiento y flexibilidad mejorados para las arquitecturas de data lakehouse. Piensa en ella como una capa inteligente que se encuentra sobre el almacenamiento de tu data lake, como Cloud Storage, y que proporciona capacidades similares a las de una base de datos para tus conjuntos de datos masivos. En lugar de administrar archivos, Iceberg administra tablas como colecciones de archivos de datos, lo que permite funciones como la evolución de esquemas, el viaje en el tiempo y una planificación de consultas más eficiente. Esto permite a los analistas, ingenieros y científicos de datos trabajar con datos en data lakes con mayor facilidad y eficiencia, y aumentar sus cargas de trabajo analíticas.

¿Para qué se usa Apache Iceberg?

Apache Iceberg cumple una multitud de propósitos en las arquitecturas de datos modernas, en particular, en aquellas que aprovechan los data lakes. Sus casos de uso principales incluyen los siguientes:

  • Habilitación de data lakes confiables: Iceberg garantiza que las operaciones sean atómicas, coherentes, aisladas y duraderas (ACID). Esto evita la corrupción de datos y las incoherencias que pueden surgir con los enfoques tradicionales basados en archivos.
  • Asistencia a la evolución del esquema: A diferencia de los formatos de tabla más antiguos que a menudo tienen problemas con los cambios de esquema, Iceberg permite una evolución del esquema segura y sin inconvenientes. Puedes agregar, quitar o cambiar el nombre de las columnas sin interrumpir las consultas en curso ni requerir migraciones de datos costosas.
  • Proporciona capacidades de viaje en el tiempo: Iceberg mantiene un historial de instantáneas de tablas, lo que permite a los usuarios consultar datos tal como existían en un momento específico. Esto es invaluable para auditar, depurar y reproducir análisis.
  • Optimización del rendimiento de las consultas: La administración de metadatos de Iceberg permite que los motores de consultas eliminen de forma eficiente los archivos de datos innecesarios, lo que acelera significativamente la ejecución de las consultas, en especial en conjuntos de datos grandes.
  • Facilita la administración de datos: Las funciones como el control de versiones de tablas y la administración de metadatos mejoran la administración de datos y los esfuerzos de cumplimiento, ya que proporcionan una ruta de auditoría clara de los cambios en los datos.
  • Creación de data lakehouses: Iceberg es un componente fundamental para crear data lakehouses, que combinan la escala y la flexibilidad de los data lakes con las capacidades de administración de datos de los almacenes de datos. Permite ejecutar cargas de trabajo analíticas y más operativas en los mismos datos.
  • Mejora la confiabilidad de los datos para el aprendizaje automático: Los conjuntos de datos coherentes y con versiones que proporciona Iceberg son fundamentales para entrenar y también implementar modelos de aprendizaje automático confiables. Los científicos de datos pueden reproducir fácilmente experimentos con instantáneas de datos históricos.

¿Cómo funciona Apache Iceberg?

En su núcleo, Apache Iceberg funciona mediante la introducción de una capa de metadatos que se ubica sobre los archivos de datos en tu data lake. Estos metadatos hacen un seguimiento de la estructura y el contenido de tus tablas de una forma más organizada y sólida que los sistemas tradicionales basados en archivos. Estos son los mecanismos clave:

  1. Administració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 depende de un catálogo para hacer un seguimiento 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 la tabla: Cada vez que se realiza un cambio en la tabla (por ejemplo, agregar datos, borrar datos o evolución del 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 manifiesto: Cada instantánea apunta a una lista de manifiestos, que a su vez enumera uno o más archivos de manifiestos. Los archivos de manifiesto contienen metadatos sobre archivos de datos individuales, incluida su ubicación, valores de partición y estadísticas (como recuentos de filas y rangos de valores).
  5. Archivos de datos: Estos son los archivos Parquet, ORC o Avro que almacenan tus datos en el data lake. Los metadatos de Iceberg hacen un seguimiento de estos archivos y su organización dentro de la tabla.

Arquitectura de Apache Iceberg

La arquitectura de Apache Iceberg incluye varios componentes clave que trabajan en conjunto:

  • Almacenamiento de data lakes: Esta es la capa de almacenamiento subyacente, como Cloud Storage, donde se almacenan los archivos de datos (en formatos como Parquet, ORC o Avro) y los archivos de metadatos de Iceberg.
  • Catálogo de Iceberg: Este componente es responsable de administrar los indicadores de metadatos para las tablas de Iceberg. Actúa como un registro central que hace un seguimiento de la versión actual de los metadatos de cada tabla. Las implementaciones de catálogos comunes incluyen los siguientes componentes:
  • Almacén de metadatos de Hive: Un repositorio de metadatos muy utilizado, que a menudo se emplea con sistemas basados en Hadoop.
  • Catálogo del sistema de archivos: Una implementación simple 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 administrados que ofrecen los proveedores de servicios en la nube para almacenar y administrar metadatos.
  • Metadatos de iceberg: Consiste en varias capas de archivos de metadatos que hacen un seguimiento de la estructura y los datos de la tabla:
  • Archivo de metadatos de la tabla: Este archivo apunta a la lista de manifiesto actual y contiene información general sobre la tabla, como su esquema y la especificación de partición.
  • Lista de manifiestos: Este archivo enumera los archivos de manifiesto que contienen metadatos sobre los archivos de datos en una instantánea específica de la tabla.
  • Archivos de manifiesto: Estos archivos contienen información detallada sobre archivos de datos individuales, incluidos 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 ejecución de consultas.
  • Recursos de procesamiento: 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 los data lakes

Apache Iceberg mejora significativamente las capacidades de los data lakes con la adición de un formato de tabla confiable y de alto rendimiento. En los data lakes tradicionales sin un formato de tabla como Iceberg, los datos suelen ser solo una colección de archivos. Esto puede generar varios desafíos:

  • Falta de evolución del esquema: Cambiar la estructura de los datos puede ser complejo y propenso a errores
  • Lecturas inconsistentes: Las operaciones de escritura simultáneas pueden provocar que las consultas lean una combinación de datos nuevos y antiguos
  • Rendimiento de la consulta lento: Como no hay metadatos para guiar a los motores de consultas, a menudo tienen que analizar grandes porciones de los datos
  • Dificultad con la administración de datos: Funciones como el viaje en el tiempo y el control de versiones no están disponibles

Iceberg aborda estas limitaciones proporcionando una capa estructurada sobre el data lake. Aporta funciones similares a las de una base de datos a los data lakes, con lo que los transforma en data lakehouses más potentes y fáciles de administrar. Al administrar las tablas como colecciones de archivos con metadatos enriquecidos, Iceberg permite lo siguiente:

  • Acceso a datos confiable y coherente: Las propiedades ACID garantizan la integridad de los datos
  • Procesamiento de consultas eficiente: El filtrado y omisión de datos basados en metadatos aceleran las consultas
  • Administración de datos flexible: La evolución del esquema 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 usan comúnmente con data lakes.

Resuelve tus desafíos más difíciles con Google Cloud

Los clientes nuevos obtienen $300 en créditos gratuitos que pueden usar en Google Cloud.
Habla con un especialista en ventas de Google Cloud para analizar tu desafío único en más detalle.

Desafíos de Apache Iceberg

Si bien Apache Iceberg ofrece ventajas significativas, también hay algunos desafíos que considerar:

Mayor complejidad

La incorporación de Iceberg agrega otra capa de abstracción al data lake, lo que puede aumentar la complejidad general del sistema. Comprender y administrar la capa de metadatos requiere conocimientos específicos.

Dependencia del catálogo

Iceberg depende de un servicio de catálogo (como Hive Metastore) para administrar las ubicaciones de los metadatos de las tablas. La disponibilidad y el rendimiento del catálogo pueden influir en el sistema en general.

Curva de aprendizaje

Los equipos deben aprender los conceptos y las prácticas recomendadas asociados con Iceberg, lo que puede requerir capacitación y actualización de habilidades.

Posible sobrecarga

Si bien Iceberg optimiza el rendimiento de las consultas en muchos casos, la administración de metadatos en sí introduce una sobrecarga, en particular para conjuntos de datos muy pequeños o consultas extremadamente simples.

Madurez de las herramientas

Si bien el ecosistema de Iceberg está creciendo rápidamente, es posible que algunas de sus herramientas e integraciones aún no estén tan desarrolladas en comparación con las tecnologías de almacenamiento de datos más establecidas.

Esfuerzo de migración

Migrar los data lakes existentes para usar Iceberg puede ser una tarea importante, que podría requerir reescribir datos y realizar cambios en las canalizaciones de datos existentes.

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.

Da el siguiente paso

Comienza a desarrollar en Google Cloud con el crédito gratis de $300 y los más de 20 productos del nivel Siempre gratuito.

Google Cloud