¿Qué es Apache Iceberg?

Empresarios hispanos usando una tableta digital en la oficina

Autores

Dave Bergmann

Senior Staff Writer, AI Models

IBM Think

¿Qué es Apache Iceberg?

Apache Iceberg es un formato de código abierto de alto rendimiento para tablas analíticas masivas, que facilita el uso de tablas SQL para big data y la integración segura de esas tablas con motores como Apache Spark, Trino, Flink, Presto, Hive e Impala.

Además de su especificación de formato de tabla abierta, Iceberg también comprende un conjunto de API y bibliotecas que permiten que los motores de almacenamiento, los motores de consulta y los motores de ejecución interactúen sin problemas con las tablas que siguen ese formato.

El formato de tabla Iceberg se convirtió en una parte integral del ecosistema de big data , en gran parte debido a su capacidad para proporcionar funciones que normalmente no están disponibles con otros formatos de tabla. Empleando una gran cantidad de metadatos almacenados en cada tabla, Iceberg permite la evolución del esquema , la evolución de la división y la reversión de una versión de la tabla sin la necesidad de costosas reescrituras de tablas o migraciones de tablas. Es totalmente independiente del sistema de almacenamiento, con soporte para múltiples fuentes de datos y sin dependencias del sistema de archivos.

Originalmente creado por ingenieros de datos en Netflix y Apple en 2017 para abordar las deficiencias de Apache Hive, Iceberg se hizo con código abierto y se donó a la Apache Software Foundation al año siguiente. Se convirtió en un proyecto Apache de nivel superior en 2020.

La velocidad, eficacia, fiabilidad y facilidad de uso de Apache Iceberg ayudan a simplificar y coordinar el procesamiento de datos a cualquier escala. Estas fortalezas lo han convertido en un formato de tabla de elección para una serie de data warehouses líderes, data lakes y data lakehouses, incluyendo IBM watsonx.data, Netezza y Db2 Warehouse.

Diseño 3D de pelotas rodando en una pista

Las últimas novedades e insights sobre IA

Descubra insights y noticias de expertos sobre IA, la nube y mucho más en el boletín semanal Think. 

¿Por qué usar Apache Iceberg?

Iceberg es uno de los pocos formatos de tabla de código abierto que permite transacciones ACID: intercambios de datos que preservan la precisión al garantizar atomicidad, coherencia, aislamiento y durabilidad.

La génesis de Iceberg fue un esfuerzo por abordar las limitaciones prácticas de las tablas de Apache Hive en un entorno de data lake de gran tamaño. Según Ryan Blue, presidente de PMC del proyecto Apache Iceberg y (anteriormente) ingeniero sénior en Netflix, “muchos servicios y motores diferentes usaban tablas Hive. Pero el problema era que no teníamos esa garantía de corrección. No teníamos transacciones atómicas”, dijo en una conferencia de 2021. "A veces, los cambios de un sistema hacían que otro sistema obtuviera los datos incorrectos y ese tipo de problema hacía que nunca usáramos estos servicios, que no hiciéramos cambios en nuestras tablas, solo para estar seguros".1

Apache Hive se originó como un medio para hacer que los clústeres de Apache Hadoop funcionen de manera similar a las bases de datos relacionales accesibles por SQL. Si bien funciona de manera efectiva para datos estáticos, se adapta mal a conjuntos de datos cambiantes: los cambios deben coordinarse manualmente entre diferentes aplicaciones y usuarios o, de lo contrario, corren el riesgo de corrupción y la posterior inexactitud de grandes conjuntos de datos.

Para garantizar la precisión en un entorno dinámico, Iceberg se diseñó para garantizar que cualquier transacción de datos exhiba las cuatro propiedades de ACID:

Atomicidad

Todos los cambios en los datos se realizan como si fueran una sola operación, es decir, se ejecutan todos los cambios o ninguno. Por ejemplo, en una transacción de datos financieros, la atomicidad garantiza que cualquier débito realizado desde una cuenta tenga un crédito correspondiente en la otra cuenta.

Coherencia

No hay contradicciones entre el estado general de los datos antes de la transacción y el estado de los datos después de esta. Continuando con el ejemplo de transacción financiera, la consistencia asegura que los fondos combinados existentes entre las dos cuentas sean los mismos después de la transacción que antes.

Aislamiento

El estado intermedio de cualquier transacción es invisible a otras transacciones; Las transacciones simultáneas (aquellas que operan simultáneamente en el mismo conjunto de datos) se tratan como si estuvieran en serie. En esta transacción financiera, el aislamiento garantiza que cualquier otra transacción pueda ver los fondos transferidos en la cuenta debitada o en la cuenta acreditada, pero no en ambas (ni en ninguna).

Durabilidad

Luego de una transacción exitosa, cualquier cambio en los datos persistirá incluso en caso de una falla del sistema. En nuestro ejemplo financiero, esto significa que la transacción permanecerá completa incluso si hay un corte de energía en todo el sistema inmediatamente después.

Apache Iceberg vs. Delta Lake vs. Apache Hudi

El formato de tabla Iceberg de Apache se compara a menudo con otras dos tecnologías de datos de código abierto que ofrecen transacciones ACID: Delta Lake, una capa de almacenamiento optimizada creada originalmente por Databricks que amplía los archivos de datos Parquet con un registro de transacciones basado en archivos y un manejo de metadatos escalable, y Apache Hudi (abreviaturade "Hadoop Upserts Deletes and Incrementals"), desarrollada originalmente por Uber en 2016.

Un estudio de 2022 realizado por Synvert generó datos aleatorios y los almacenó en formato JSON en un bucket de AWS S3 para emplearlos en la evaluación comparativa de las tres tecnologías. Sus pruebas finalmente demostraron que el formato de tabla optimizado de Iceberg produjo un rendimiento superior al de Delta Lake y Apache Hudi en todas las métricas probadas.2

  • Almacenamiento: los tamaños de archivo resultantes de las tablas Iceberg fueron significativamente más pequeños que los de Delta Lake o Hudi, lo que representa un gran beneficio para la optimización del almacenamiento.
     

  • Operaciones de inserción: Para las operaciones de inserción, Iceberg también tuvo el rendimiento más rápido, es decir, el tiempo de ejecución más corto. Tanto Iceberg como Delta Lake fueron significativamente más rápidos que Hudi.
     

  • Operaciones de actualización: para las operaciones de actualización, Iceberg fue significativamente más rápido que Delta Lake y Hudi. En particular, a diferencia de sus colegas, el tiempo de ejecución de Iceberg no aumentó significativamente con el número total de registros: en las cargas de trabajo máximas probadas en el estudio (500 millones de registros), Iceberg fue casi 10 veces más rápido que Delta Lake.
     

  • Operaciones de eliminación: Del mismo modo, Iceberg fue varias veces más rápido que ambas alternativas en las operaciones de eliminación.

Academia de IA

¿Es la gestión de datos el secreto de la IA generativa?

Explore por qué los datos de alta calidad son esenciales para el uso exitoso de la IA generativa.

¿Cómo funciona Apache Iceberg?

Iceberg implementa una jerarquía de tres capas de archivos de metadatos para garantizar la corrección y coordinación de los datos de las tablas en diversos formatos de archivo y cambios constantes.

Escrito en Java y Python y también ofrecido en una API Scala, Iceberg soporta una variedad de formatos de archivo de big data, incluyendo Apache Parquet, Apache Avro y Apache ORC. Ofrece una funcionalidad similar a la de las tablas SQL en bases de datos tradicionales de una manera independiente del formato de archivo y del proveedor, lo que permite que múltiples motores operen en el mismo conjunto de datos.

La arquitectura de una tabla Iceberg comprende tres capas: el catálogo Iceberg, la capa de metadatos y la capa de datos.

Catálogo Iceberg

El catálogo Iceberg se sitúa sobre la capa de metadatos y los datos posteriores, como la punta de un iceberg sobre la superficie del agua. Almacena los punteros de metadatos actualizados (o "actuales") que asignan el nombre de una tabla determinada a la ubicación de su(s) archivo(s) de metadatos actual(es). Además de su catálogo integrado, Iceberg admite otros marcos de catálogo como Hive MetaStore o AWS Glue.

Las operaciones a nivel de catálogo de Iceberg son atómicas, ya que esto es esencial para garantizar la corrección de las transacciones en curso.

Por lo tanto, un motor de consulta comienza cualquier consulta SELECT en el catálogo de Iceberg, que proporciona la ubicación del archivo de metadatos actual para la tabla que el motor de consulta busca leer.

Capa de metadatos

La capa de metadatos Iceberg comprende, en orden descendente, archivos de metadatos, listas de manifiestos y archivos de manifiesto.

Archivo de metadatos

Archivo de metadatos Los archivos de metadatos almacenan los metadatos de una tabla, incluido el esquema de la tabla, la información de división, su instantánea actual y las instantáneas de estados anteriores. Al dirigirse al archivo de metadatos actual de la entrada de la tabla en el catálogo Iceberg, el motor de consultas utiliza el valor [ current-snapshot-id] para encontrar su entrada en elarreglo de imágenes [snapshots]. A partir de ahí, puede localizar y abrir la lista de manifiestos de la tabla.

Lista de manifiestos

Lista de manifiestos La lista de manifiestos es simplemente una lista de archivos de manifiesto e información importante para cada archivo de datos que contiene, como su ubicación, la imagen a la que está asociado y las partes a las que pertenece. Ciertas optimizaciones y funciones de filtrado están disponibles en esta etapa.

Archivo de manifiesto

Archivo de manifiesto Los archivos de manifiesto realizan un seguimiento de los archivos de datos y sus detalles, metadatos y estadísticas asociados. Esto impulsa uno de los beneficios fundamentales del formato de tabla Iceberg sobre el formato de tabla Hive: su capacidad para realizar un seguimiento de los datos a nivel de archivo. En esta etapa, losvalores[file-path] para cada objeto [data-file] se pueden usar para encontrar y abrir ese archivo.

Capa de datos

La capa de datos, como su nombre indica, reside debajo de la capa de metadatos y contiene los archivos finales.

Características clave de Apache Iceberg

Apache Iceberg ofrece una serie de funciones útiles para mejorar y simplificar la gestión de datos.

Partición oculta

Iceberg se encarga de todos los detalles de partición y consulta tras bambalinas. La división oculta de Iceberg ahorra a los usuarios el trabajo de proporcionar información sobre el diseño de las divisiones al consultar las tablas. Los usuarios no necesitan mantener las columnas de división por sí mismos, ni siquiera comprender el diseño de la tabla física, para obtener resultados de consulta precisos.

Esto no solo hace que la división de Iceberg sea muy fácil de usar, sino que también permite cambiar los diseños de división con el tiempo sin interrumpir las consultas preescritas. Cuando las especificaciones de la división evolucionan, los datos de la tabla (y sus metadatos) no se ven afectados. Solo los datos nuevos, escritos en la tabla luego de la evolución, se dividen con la nueva especificación, y los metadatos de estos nuevos datos se mantienen por separado.

Evolución del esquema

Iceberg proporciona soporte nativo para la evolución del esquema. Esto permite a los usuarios modificar los esquemas de tablas sin necesidad de una migración de datos compleja, lo que agiliza en gran medida la adaptación a las estructuras de datos en evolución.

Viaje en el tiempo

Viaje en el tiempo Iceberg permite a los usuarios viajar en el tiempo a través de instantáneas de datos de Iceberg en diferentes puntos en el tiempo. Esto es valioso para una variedad de casos de uso, incluyendo auditorías, depuración y verificaciones de cumplimiento de normas.

Compactación y filtrado de datos

Compactación y filtrado de datos Iceberg ofrece una serie de capacidades de indexación que ayudan a optimizar el rendimiento de las consultas, como opciones de compactación para fusionar archivos más pequeños en otros más grandes y reducir la sobrecarga de metadatos y filtros Bloom con el fin de reducir la lectura innecesaria de datos durante la ejecución de consultas.

Soluciones relacionadas
Software y soluciones de gestión de datos

Diseñe una estrategia de datos que elimine los silos de datos, reduzca la complejidad y mejore la calidad de los datos para ofrecer experiencias excepcionales a clientes y empleados.

Explore las soluciones de gestión de datos
IBM watsonx.data™

watsonx.data le permite escalar los analytics y la IA con todos sus datos, sin importar donde residan, a través de un almacén de datos abierto, híbrido y gobernado.

Descubra watsonx.data
Servicios de consultoría en datos y analytics

Desbloquee el valor de los datos empresariales con IBM Consulting, y construya una organización impulsada por insights que ofrezca ventajas empresariales.

Descubra los servicios de analytics
Dé el siguiente paso

Diseñe una estrategia de datos que elimine los silos de datos, reduzca la complejidad y mejore la calidad de los datos para ofrecer experiencias excepcionales a clientes y empleados.

Explore las soluciones de gestión de datos Descubra watsonx.data
Notas de pie de página