Das Apache Iceberg Open Table-Format
Apache Iceberg ist ein neues Tabellenformat, das die Probleme herkömmlicher Kataloge löst und sich schnell zum Industriestandard für die Verwaltung von Daten in Data Lakes entwickelt. Iceberg führt neue Funktionen ein, die es mehreren Anwendungen ermöglichen, transaktionskonsistent an denselben Daten zusammenzuarbeiten, und definiert zusätzliche Informationen zum Status von Datensätzen, während diese sich im Laufe der Zeit entwickeln und ändern.
Das Iceberg-Tabellenformat bietet ähnliche Fähigkeiten und Funktionen wie SQL-Tabellen in herkömmlichen Datenbanken, ist jedoch vollständig offen und zugänglich, sodass mehrere Engines (Dremio, Spark usw.) mit demselben Datensatz arbeiten können. Iceberg bietet viele Funktionen, z. B.:
- Transaktionale Konsistenz zwischen mehreren Anwendungen, bei der Dateien automatisch hinzugefügt, entfernt oder geändert werden können, mit vollständiger Leseisolation und mehreren gleichzeitigen Schreibvorgängen.
- Vollständige Schemaentwicklung, um Änderungen an einer Tabelle im Laufe der Zeit zu verfolgen
- Zeitreise zum Abfragen historischer Daten und Überprüfen von Änderungen zwischen Aktualisierungen
- Partitionslayout und -entwicklung ermöglichen die Aktualisierung von Partitionsschemata bei sich ändernden Abfragen und Datenmengen, ohne auf versteckte Partitionen oder physische Verzeichnisse angewiesen zu sein.
- Rollback auf frühere Versionen, um Probleme schnell zu beheben und Tabellen in einen bekanntermaßen guten Zustand zurückzusetzen
- Erweiterte Planungs- und Filterfunktionen für hohe Leistung bei großen Datenmengen
Iceberg erreicht diese Funktionen für eine Tabelle über Metadatendateien (auch Manifeste genannt), die durch zeitpunktbezogene Snapshots verfolgt werden, indem alle Deltas beibehalten werden, während eine Tabelle im Laufe der Zeit aktualisiert wird. Jeder Snapshot bietet eine vollständige Beschreibung des Schemas, der Partition und der Dateiinformationen der Tabelle und bietet vollständige Isolation und Konsistenz. Darüber hinaus organisiert Iceberg Snapshot-Metadaten auf intelligente Weise in einer hierarchischen Struktur. Dies ermöglicht schnelle und effiziente Änderungen an Tabellen, ohne alle Datensatzdateien neu definieren zu müssen, und gewährleistet so optimale Leistung beim Arbeiten im Data Lake-Maßstab.
Mit Iceberg wird der gesamte Verlauf im Iceberg-Tabellenformat und ohne Abhängigkeiten vom Speichersystem verwaltet. Dies ermöglicht eine offene Architektur und die Flexibilität, Systeme im Laufe der Zeit ohne Unterbrechung der Benutzer oder bestehender Arbeitslasten zu ändern. Da der historische Status unveränderlich ist und die Verlaufsherkunft klar ist, können Benutzer frühere Zustände in jedem Iceberg-Snapshot oder zu jedem historischen Zeitpunkt abfragen, um konsistente Ergebnisse, Vergleiche oder Rollbacks zur Behebung von Problemen zu erhalten.
Als Apache-Projekt ist Iceberg zu 100 % Open Source und nicht von einzelnen Tools oder Data-Lake-Engines abhängig. Es wurde von Netflix und Apple entwickelt, wird von den größten Technologieunternehmen in der Produktion eingesetzt und hat sich in großem Maßstab bei den weltweit größten Workloads und Umgebungen bewährt. Iceberg unterstützt gängige Industriestandard-Dateiformate, darunter Parquet, ORC und Avro, und wird von den wichtigsten Data-Lake-Engines unterstützt, darunter Dremio, Spark, Hive und Presto.
Hintergrundinformationen zu Daten im Data Lake Storage
Data Lakes sind große Speicher, in denen alle strukturierten und unstrukturierten Daten in beliebigem Umfang gespeichert werden. Sie dienen der Vereinfachung der Datenverwaltung, indem sie Daten zentralisieren und allen Anwendungen in einer Organisation die Interaktion auf einem gemeinsamen Datenspeicher für die gesamte Verarbeitung, Analyse und Berichterstattung ermöglichen. Dies stellt eine erhebliche Verbesserung gegenüber herkömmlichen Architekturen dar, die auf zahlreichen isolierten und abgeschotteten Systemen basieren.
Traditionell wurden Data Lakes mit dem Apache Hadoop Distributed File System (HDFS) in Verbindung gebracht . Heute nutzen Unternehmen jedoch zunehmend Objektspeichersysteme wie Amazon S3 oder Microsoft Azure Data Lake Storage (ADLS). Diese Cloud-Data Lakes bieten Unternehmen zusätzliche Möglichkeiten zur Vereinfachung der Datenverwaltung, da sie bei Bedarf überall für alle Anwendungen zugänglich sind.
Einzelne Datensätze in Data Lakes werden häufig als Dateisammlungen in Verzeichnisstrukturen organisiert, wobei häufig mehrere Dateien in einem Verzeichnis eine einzelne Tabelle darstellen. Die Vorteile dieses Ansatzes bestehen darin, dass die Daten sehr leicht zugänglich und flexibel sind. Einige Konzepte, die von herkömmlichen Datenbanken und Data Warehouses bereitgestellt werden , werden jedoch nicht allein durch Dateiverzeichnisse abgedeckt und erfordern zusätzliche Tools zur Definition. Dazu gehören:
- Wie sieht das Schema eines Datensatzes aus, einschließlich Spalten und Datentypen
- Aus welchen Dateien besteht der Datensatz und wie sind diese organisiert (z. B. Partitionen)
- Wie verschiedene Anwendungen Änderungen am Datensatz koordinieren, einschließlich Änderungen an der Definition des Datensatzes und Änderungen an Daten
Um diese Probleme zu lösen, nutzen Unternehmen mehrere branchenübliche Systeme, um die Daten in ihrem Data Lake-Speicher weiter zu organisieren.
Wie Metadatenkataloge bei der Organisation von Data Lakes helfen
Um Daten in Data Lakes besser zu organisieren, verwenden Organisationen Metadatenkataloge, die die Tabellen im Data Lake-Speicher definieren. Durch die Verwendung von Katalogen teilen alle Anwendungen einer Organisation eine gemeinsame Definition und Ansicht der Daten im Data Lake, was für die Verarbeitung und Erzielung konsistenter Ergebnisse hilfreich ist.
Kataloge werden verwendet, um Folgendes zu definieren:
- Welche Datensätze sind im Data Lake vorhanden?
- Wo sich die verschiedenen Datensätze im Data Lake befinden
- Wie Datensätze hinsichtlich Spalten, Namen, Datentypen usw. strukturiert sind.
Hive Metastore (HMS) und AWS Glue Data Catalog sind die beliebtesten Data Lake-Kataloge und werden in der gesamten Branche weithin verwendet. Sowohl Hive als auch AWS Glue enthalten das Schema, die Tabellenstruktur und den Datenspeicherort für Datensätze im Data Lake-Speicher. Dabei bieten Kataloge eine ähnliche Struktur wie relationale Datenbanken, da sie auf dem Dateispeicher bereitgestellt und von mehreren Anwendungen gemeinsam genutzt werden. Dies gewährleistet konsistente Ergebnisse zwischen verschiedenen Anwendungen und vereinfacht die Datenverwaltung.
Warum Kataloge nicht ausreichen
Obwohl Kataloge eine gemeinsame Definition der Datensatzstruktur innerhalb des Data Lake-Speichers bereitstellen, koordinieren sie Datenänderungen oder Schemaentwicklungen zwischen Anwendungen nicht auf transaktionskonsistente Weise.
Stellen Sie sich einen großen Datensatz vor, der aus Hunderttausenden von Dateien besteht. Kataloge wie Hive und AWS Glue enthalten die Struktur des Datensatzes, einschließlich Spaltennamen und Datentypen, sowie in Verzeichnissen organisierte Partitionen. Sie definieren jedoch nicht, welche Datendateien vorhanden und Teil des Datensatzes sind. Daher müssen Anwendungen auf das Lesen von Dateimetadaten im Data Lake-Speicher angewiesen sein, um zu einem bestimmten Zeitpunkt zu identifizieren, welche Dateien Teil eines Datensatzes sind.
Solange der Datensatz statisch ist und sich nicht ändert, können verschiedene Anwendungen mit einer konsistenten Ansicht des Datensatzes arbeiten. Herausforderungen entstehen jedoch, wenn eine Anwendung in den Datensatz schreibt und ihn ändert und diese Änderungen mit einer anderen Anwendung koordiniert werden müssen, die aus demselben Datensatz liest. Wenn beispielsweise ein ETL- Prozess den Datensatz aktualisiert, indem er mehrere Dateien zum Speicher hinzufügt und daraus entfernt, kann eine andere Anwendung, die den Datensatz liest, eine teilweise oder inkonsistente Ansicht des Datensatzes verarbeiten und falsche Ergebnisse generieren. Dies tritt auf, wenn einige Dateien zum Speicher hinzugefügt oder daraus entfernt wurden, aber nicht alle erforderlichen Änderungen abgeschlossen wurden.
Ohne eine automatische Koordination von Datenänderungen zwischen Anwendungen im Datensee müssen Unternehmen komplizierte Pipelines oder Staging-Bereiche erstellen, die instabil und manuell schwer zu verwalten sein können.
Wie sich Iceberg von herkömmlichen Katalogen und Datenbanken unterscheidet
Es gibt erhebliche Unterschiede zwischen Iceberg und Data Lake-Katalogen wie dem Hive Metastore, aber auch zwischen relationalen Datenbanken und Enterprise Data Warehouses. Anders als beim Hive Metastore, wo Änderungen über Hive vorgenommen werden, sind bei Iceberg alle Anwendungen gleichberechtigte Teilnehmer und mehrere Tools können Tabellen direkt und gleichzeitig aktualisieren. Darüber hinaus beschreibt Iceberg den vollständigen Verlauf von Tabellen, einschließlich Schema- und Datenänderungen. Der Hive Metastore beschreibt nur das aktuelle Schema eines Datensatzes ohne historische Informationen oder Datenänderungen mit Zeitverlauf.
Relationale Datenbanken und Enterprise Data Warehouses bieten ähnliche Funktionen wie atomare Transaktionen und Zeitreisen. Allerdings geschieht dies über ein geschlossenes, vertikal integriertes und proprietäres System, bei dem alle Zugriffe durch die Datenbank laufen und von ihr verarbeitet werden müssen. Die Weiterleitung aller Zugriffe über ein einziges System vereinfacht die Parallelitätsverwaltung und Aktualisierungen, schränkt jedoch auch die Flexibilität ein und erhöht die Kosten. Iceberg hingegen ermöglicht es allen Anwendungen, direkt auf Tabellen innerhalb des Data Lake-Speichers zu arbeiten. Dies senkt nicht nur die Kosten durch die Nutzung von Data Lake-Architekturen, sondern erhöht auch die Flexibilität und Agilität erheblich, da alle Anwendungen an vorhandenen Datensätzen arbeiten können, ohne Daten zwischen mehreren separaten und geschlossenen Systemen zu migrieren.
Vorteile der Verwendung von Iceberg
Durch die Definition eines effizienten offenen Tabellenformats für Data Lake-Tabellen, das transaktionskonsistent mit der Point-in-Time-Snapshot-Isolation ist, bietet Iceberg Unternehmen zahlreiche Vorteile, darunter:
- Mehrere unabhängige Anwendungen können denselben Datensatz gleichzeitig und mit konsistenten Ergebnissen vor Ort verarbeiten.
- Aktualisierungen sehr großer Tabellen im Data Lake-Maßstab werden effizient verarbeitet und zwischen Systemen kommuniziert.
- ETL-Pipelines werden erheblich vereinfacht, indem sie mit den Daten im Data Lake arbeiten, anstatt sie zwischen mehreren unabhängigen Systemen zu verschieben. Das Ergebnis sind zuverlässigere und weniger änderungsanfällige Pipelines.
- Verbessertes Datenmanagement, da sich Datensätze im Laufe der Zeit ändern und weiterentwickeln
- Höhere Datenzuverlässigkeit sowie Identifizierung und Lösung von Problemen, wenn diese auftreten
Durch den Einsatz von Iceberg können Unternehmen das volle Potenzial und die Vorteile einer Migration zu einer Data-Lake-Architektur ausschöpfen. Benutzern können ähnliche Funktionen und Merkmale wie bei herkömmlichen Datenbanken bereitgestellt werden, jedoch in einer offenen und flexiblen Data-Lake-Umgebung. Dateningenieure können Datenpipelines vereinfachen und Kosteneinsparungen erzielen, während sie Endbenutzern gleichzeitig einen verbesserten Datenzugriff und eine bessere Leistung bieten.
Alternativen zu Iceberg
Ähnlich wie es mehrere Dateiformate wie Parquet, ORC, Avro und JSON gibt, gibt es auch Alternativen zu Iceberg, die ähnliche Funktionen und Vorteile bieten. Die beliebtesten sind das von Databricks entwickelte Delta Lake- Projekt und Hive ACID-Tabellen.
| Hive ACID-Tabellen | Deltasee | Apache-Eisberg | |
| Wer fährt? | Bienenstock | Datenbausteine | Netflix, Apple und andere Community-Mitglieder |
| Dateiformate | ORC | Parkett | Parkett, ORC, Avro |
| Transaktional | Ja | Ja | Ja |
| Motorspezifisch | Ja (nur Hive kann aktualisieren) | Ja (nur Spark kann aktualisieren) | Nein (irgendein) |
| Vollständig Open Source | Ja | Nein (Leistung und Cloud-Unterstützung sind kein OSS) | Ja |
| Zelle | Zelle | Zelle | Zelle |
Aus technischer Sicht bietet Delta Lake einige der gleichen Funktionen und Fähigkeiten wie Iceberg, es gibt jedoch erhebliche Unterschiede. Im Gegensatz zu Iceberg, einem unabhängig verwalteten Apache-Projekt, zu dem zahlreiche Unternehmen der gesamten Branche beitragen, wird Delta Lake ausschließlich von Databricks gesponsert und kontrolliert. Darüber hinaus ist Delta Lake nicht vollständig Open Source. Schreibvorgänge sind nur über Spark verfügbar und Leistungsoptimierungen zur Beschleunigung von Lesevorgängen wurden nicht als Open Source freigegeben. Darüber hinaus verfügt Iceberg mittlerweile über eine sehr bedeutende Community von Mitwirkenden, darunter Netflix, Apple, Airbnb, Stripe, Expedia und Dremio.
Im Gegensatz zu Delta Lake sind Hive ACID-Tabellen vollständig Open Source. Wie bei Delta Lake können Hive-Aktualisierungsvorgänge jedoch nur über eine einzige Data Lake-Engine ausgeführt werden, und der Großteil der Entwicklung wird von einem einzigen Anbieter (Cloudera) durchgeführt. Hive ACID-Tabellen hängen vom ORC-Dateiformat ab und sind hinsichtlich der unterstützten Dateiformate weniger flexibel.
Obwohl es Delta Lake- und Hive-ACID-Tabellen schon länger gibt als Iceberg, gewinnt Iceberg schnell an Akzeptanz und zusätzlichen Funktionen, da immer mehr Unternehmen zu diesem Format beitragen.
Vorteile von Iceberg gegenüber anderen Formaten
Obwohl mehrere Tabellenformatoptionen verfügbar sind, hat Iceberg wichtige Eigenschaften mit früheren Open-Source-Projekten gemeinsam, die zu De-facto-Industriestandards wurden, wie z. B. Apache Parquet . Insbesondere ist Iceberg aus Governance-Sicht völlig unabhängig und nicht an eine bestimmte Engine oder ein bestimmtes Tool gebunden. Daher kann Iceberg von vielen verschiedenen Organisationen in zahlreichen Branchen entwickelt und unterstützt werden, was die Akzeptanz und das Wachstum fördert. Darüber hinaus bietet Iceberg mehrere Vorteile, darunter:
- Alle Anwendungen haben den gleichen Zugriff und die Verarbeitung ist nicht von einer bestimmten Engine abhängig oder an diese gebunden. Dies bietet Unternehmen die Flexibilität, ihren Data Lake nach Bedarf anzupassen.
- Leistungsoptimierungen auf Basis von Best Practices, die einen schnellen und kosteneffizienten Zugriff auf Daten ermöglichen
- Vollständig speichersystemunabhängig, ohne Dateisystemabhängigkeiten, bietet Flexibilität bei der Auswahl und Migration von Speichersystemen nach Bedarf
- Mehrere erfolgreiche Produktionsbereitstellungen mit Dutzenden Petabyte und Millionen von Partitionen
- 100 % Open Source und unabhängig verwaltet
Aufgrund dieser Vorteile erfreut sich Iceberg zunehmender Akzeptanz und hilft Unternehmen dabei, die Verwaltung zu vereinfachen und ihren Datensee optimal zu nutzen.

