Mein IBM Anmelden Abonnieren
Was ist Apache Iceberg?

Was ist Apache Iceberg?

IBM watsonx.data erkunden Think-Newsletter abonnieren
Ein Eisberg, der im dunkelblauen Wasser schwimmt

Veröffentlicht: 26. Februar 2024
Mitwirkende: Dave Bergmann

Was ist Apache Iceberg?

Was ist Apache Iceberg?

Apache Iceberg ist ein leistungsstarkes Open Source-Format für umfangreiche analytische Tabellen, das die Verwendung von SQL-Tabellen für Big Data sowie die sichere Integration dieser Tabellen in Engines wie Apache Spark, Trino, Flink, Presto, Hive und Impala erleichtert.

Zusätzlich zu seiner offenen Tabellenformatspezifikation umfasst Iceberg auch eine Reihe von APIs und Bibliotheken, die es Speicher-Engines, Abfrage-Engines und Ausführungs-Engines ermöglichen, reibungslos mit Tabellen zu interagieren, die diesem Format folgen.

Das Iceberg-Tabellenformat ist zu einem festen Bestandteil des Big Data-Ökosystems geworden, vor allem aufgrund seiner Fähigkeit zur Bereitstellung von Funktionen, die bei anderen Tabellenformaten normalerweise nicht verfügbar sind. Durch die Verwendung einer Vielzahl von Metadaten, die zu jeder Tabelle gespeichert werden, ermöglicht Iceberg die Entwicklung von Schemata, Partitionen und Tabellenversionen, ohne dass kostspielige Tabellenumschreibungen oder Tabellenmigrationen erforderlich sind. Es ist vollständig unabhängig vom Speichersystem, unterstützt mehrere Datenquellen und ist nicht vom Dateisystem abhängig.

Ursprünglich 2017 von Data Engineers bei Netflix und Apple entwickelt, um die Mängel von Apache Hive zu beheben, wurde Iceberg als Open Source veröffentlicht und im darauffolgenden Jahr an die Apache Software Foundation gespendet. Im Jahr 2020 wurde es zu einem Apache-Projekt auf oberster Ebene.

Die Geschwindigkeit, Effizienz, Zuverlässigkeit und allgemeine Benutzerfreundlichkeit von Apache Iceberg tragen dazu bei, die Datenverarbeitung in jeder Größenordnung zu vereinfachen und zu koordinieren. Diese Vorteile haben es zum Tabellenformat der Wahl für eine Reihe führender Data Warehouses, Data Lakes und Data Lakehouses gemacht, darunter IBM® watsonx.data. Netezza und Db2 Warehouse.

Schauen Sie sich IBM watsonx.ai näher an

Ein zweckmäßiger Datenspeicher auf der Grundlage einer offenen Data Lakehouse-Architektur zur standortunabhängigen Skalierung von KI-Workloads für alle Ihre Daten.

Ähnliche Inhalte Newsletter von IBM abonnieren Für KI-Updates anmelden
Was spricht für den Einsatz von Apache Iceberg?

Was spricht für den Einsatz von Apache Iceberg?

Iceberg ist eines der wenigen Open Source-Tabellenformate, die AKID-Transaktionen ermöglichen: einen Datenaustausch, der die Genauigkeit bewahrt, indem er Atomarität , Konsistenz, Isolation und Dauerhaftigkeit gewährleistet.

Icebergs Entstehungsgeschichte war ein Versuch, die praktischen Einschränkungen von Apache Hive-Tabellen in einer großen Data Lake-Umgebung zu überwinden. Laut Ryan Blue, PMC-Vorsitzender des Apache Iceberg-Projekts und (ehemals) leitender Ingenieur bei Netflix, „nutzten viele verschiedene Dienste und Engines Hive-Tabellen. Das Problem war jedoch, dass wir keine Garantie auf Richtigkeit hatten. Wir hatten keine atomaren Transaktionen“, sagte er in einer Konferenz im Jahr 2021. „Manchmal führten Änderungen in einem System dazu, dass ein anderes System die falschen Daten erhielt, und diese Art von Problemen veranlasste uns, diese Dienste, nur um sicher zu gehen, einfach nicht zu nutzen und keine Änderungen an unseren Tabellen vorzunehmen.“1  

Apache Hive selbst wurde entwickelt, um Apache Hadoop-Cluster ähnlich funktionieren zu lassen wie relationale Datenbanken, auf die über SQL zugegriffen werden kann. Während es für statische Daten gut funktioniert, passt es sich nur schlecht an veränderte Datensätze an: Änderungen müssen manuell über verschiedene Anwendungen und Benutzer hinweg koordiniert werden, sonst besteht die Gefahr der Beschädigung und anschließenden Ungenauigkeit großer Datensätze.

Um die Genauigkeit in einer dynamischen Umgebung zu gewährleisten, wurde Iceberg so konzipiert, dass jede Datentransaktion alle vier AKID-Eigenschaften aufweist:

Atomarität

Alle Datenänderungen werden so durchgeführt, als handle es sich um einen einzigen Vorgang; das heißt, entweder werden alle Änderungen ausgeführt oder gar keine. Beispielsweise stellt Atomarität bei einer Transaktion mit Finanzdaten sicher, dass bei jeder Belastung von einem Konto eine entsprechende Gutschrift auf dem anderen Konto erfolgt.

Konsistenz

Es gibt keine Widersprüche zwischen dem Gesamtdatenstatus vor der Transaktion und dem Datenstatus nach der Transaktion. Um das Beispiel der Finanztransaktion fortzusetzen, stellt die Konsistenz sicher, dass die kombinierten Mittel zwischen den beiden Konten nach der Transaktion dieselben sind wie vor der Transaktion.

Isolation

Der Zwischenzustand einer Transaktion ist für andere Transaktionen unsichtbar. Gleichzeitige Transaktionen – Transaktionen,die gleichzeitig auf denselben Datensatz zugreifen – werden so behandelt, als wären sie serialisiert. Bei dieser Finanztransaktion sorgt die Isolierung dafür, dass jede andere Transaktion die überwiesenen Mittel entweder auf dem belasteten Konto oder auf dem gutgeschriebenen Konto sehen kann, aber nicht auf beiden (oder auf keinem).

Dauerhaftigkeit

Nach einer erfolgreichen Transaktion bleiben alle Datenänderungen auch im Falle eines Systemausfalls erhalten. In unserem Finanzbeispiel bedeutet dies, dass die Transaktion auch dann abgeschlossen bleibt, wenn es unmittelbar danach zu einem systemweiten Stromausfall kommt.

Gegenüberstellung: Apache Iceberg – Delta Lake – Apache Hudi

Das Apache Iceberg-Tabellenformat wird oft mit zwei anderen Open Source-Datentechnologien verglichen, die AKID-Transaktionen anbieten: Delta Lake, eine optimierte Speicherschicht, die ursprünglich von Databricks entwickelt wurde und Parquet-Datendateien um ein dateibasiertes Transaktionsprotokoll und skalierbare Metadatenverarbeitung erweitert, sowie Apache Hudi– kurz für „Hadoop Upserts Deletes and Incrementals“ – das im Jahr 2016 von Uber entwickelt wurde.

Eine von Synvert durchgeführte Studie aus dem Jahr 2022 generierte Zufallsdaten und speicherte sie im JSON-Format in einem AWS S3-Bucket, um sie für das Benchmarking der drei Technologien zu verwenden. Ihre Tests zeigten letztendlich, dass das optimierte Tabellenformat von Iceberg bei allen getesteten Metriken eine bessere Leistung erbrachte als die von Delta Lake und Apache Hudi.2

  • Speichern: Die daraus resultierenden Dateien der Iceberg-Tabellen waren deutlich kleiner als die von Delta Lake oder Hudi, was einen großen Vorteil für die Speicheroptimierung bietet.

  • Einfügen: Bei Einfügeoperationen hatte Iceberg ebenfalls die schnellste Leistung, d. h. die kürzeste Runtime. Sowohl Iceberg als auch Delta Lake waren deutlich schneller als Hudi.

  • Aktualisieren: Bei den Aktualisierungsvorgängen war Iceberg drastisch schneller als Delta Lake und Hudi. Bemerkenswert ist, dass die Laufzeit von Iceberg im Gegensatz zu seinen Gegenstücken nicht signifikant mit der Gesamtzahl der Datensätze zunahm: Bei der maximalen Arbeitslast, die in der Studie getestet wurde – 500 Millionen Datensätze – war Iceberg fast 10-mal schneller als Delta Lake.

  • Löschen: Ebenso war Iceberg bei Löschungen um ein Vielfaches schneller als beide Alternativen. 

Wie funktioniert Apache Iceberg?

Wie funktioniert Apache Iceberg?

Iceberg implementiert eine dreistufige Hierarchie von Metadatendateien, um die Korrektheit und Koordination von Tabellendaten über verschiedene Dateiformate und ständige Änderungen hinweg zu gewährleisten.

Iceberg ist in Java und Python geschrieben und wird auch über eine Scala-API angeboten. Es unterstützt eine Vielzahl von Big Data-Dateiformaten, darunter Apache Parquet, Apache Avro und Apache ORC. Es bietet eine ähnliche Funktionalität wie SQL-Tabellen in herkömmlichen Datenbanken, ist jedoch dateiformat- und herstellerunabhängig und ermöglicht es mehreren Engines, mit demselben Datensatz zu arbeiten. 

Die Architektur einer Iceberg-Tabelle umfasst drei Schichten: den Iceberg-Katalog, die Metadatenschicht und die Datenschicht.

Iceberg-Katalog

Der Iceberg-Katalog selbst befindet sich oben auf der Metadatenschicht und die Daten später – ähnlich wie die Spitze eines Eisbergs –über der Wasseroberfläche. Er speichert die aktuellen Metadatenzeiger, die den Namen einer bestimmten Tabelle dem Speicherort ihrer aktuellen Metadatendatei(en) zuordnen. Neben dem integrierten Katalog unterstützt Iceberg andere Katalog-Frameworks wie Hive MetaStore oder AWS Glue.

Die Operationen auf der Ebene des Iceberg-Katalogs sind atomar, da dies für die Sicherstellung der Korrektheit der Transaktionen unerlässlich ist.

Eine Abfrage-Engine beginnt daher jede SELECT-Abfrage mit dem Iceberg-Katalog, der den Speicherort der aktuellen Metadatendatei für die Tabelle angibt, die die Abfrage-Engine lesen möchte.

Metadatenschicht

Die Iceberg-Metadatenebene umfasst – in absteigender Reihenfolge – Metadatendateien, Manifestlisten und Manifestdateien.

Metadatendatei
Metadatendateien speichern die Metadaten einer Tabelle, einschließlich des Schemas der Tabelle, der Partitionsinformationen, ihrer aktuellen Snapshots und der Snapshots früherer Zustände. Nachdem die Abfrage-Engine vom Eintrag der Tabelle im Iceberg-Katalog auf die aktuelle Metadaten-Datei verwiesen wurde, verwendet sie den Wert [current-snapshot-id], um ihren Eintrag im Array [Snapshots] zu finden. Von dort aus kann sie die Manifestliste der Tabelle finden und öffnen.

Manifestliste
Die Manifestliste ist einfach eine Liste von Manifestdateien und wichtigen Informationen für jede darin enthaltene Datendatei, wie z. B. ihr Speicherort, der Snapshot, dem sie zugeordnet ist, und die Partitionen, zu denen sie gehört. In dieser Phase stehen bestimmte Optimierungen und Filterfunktionen zur Verfügung.

Manifest-Datei
In Manifestdateien werden Datendateien und die zugehörigen Details, Metadaten und Statistiken erfasst. Daraus ergibt sich einer der grundlegenden Vorteile des Iceberg-Tabellenformats gegenüber dem Hive-Tabellenformat: seine Fähigkeit zur Nachverfolgung von Daten auf Dateiebene. In dieser Phase können die [file-path]-Werte für jedes [data-file]-Objekt verwendet werden, um diese Datei zu suchen und zu öffnen.

Datenschicht

Die Datenebene befindet sich, wie der Name schon sagt, unterhalb der Metadatenebene und enthält die eigentlichen Dateien.

Wichtige Funktionen von Apache Iceberg

Wichtige Funktionen von Apache Iceberg

Apache Iceberg bietet eine Reihe hilfreicher Funktionen zur Verbesserung und Vereinfachung der Datenverwaltung.

Versteckte Partitionierung
Iceberg kümmert sich unter der Oberfläche um alle Details der Partitionierung und Abfrage. Die versteckte Partitionierung von Iceberg erspart Nutzern die Arbeit, beim Abfragen von Tabellen Informationen zum Partitionslayout bereitzustellen. Nutzer müssen Partitionsspalten nicht selbst verwalten und das Layout der physischen Tabelle nicht einmal verstehen, um genaue Abfrageergebnisse zu erhalten.

Dies macht die Iceberg-Partitionierung nicht nur sehr benutzerfreundlich, sondern ermöglicht auch die Änderung von Partitionslayouts im Laufe der Zeit, ohne dass vorab geschriebene Abfragen beschädigt werden. Wenn sich Partitionsspezifikationen weiterentwickeln, bleiben die Daten in der Tabelle (und ihre Metadaten) davon unberührt. Nur neue Daten, die nach der Weiterentwicklung in die Tabelle geschrieben wurden, werden mit der neuen Spezifikation partitioniert, und Metadaten für diese neuen Daten werden separat aufbewahrt.

Schemaentwicklung
Iceberg bietet native Unterstützung für die Schemaweiterentwicklung. Dadurch können Benutzer Tabellenschemata ändern, ohne dass eine komplexe Datenmigration erforderlich ist, wodurch die Anpassung an sich weiter entwickelnde Datenstrukturen erheblich vereinfacht wird.
 

Zeitreisen
Iceberg ermöglicht Benutzern eine Zeitreise durch Momentaufnahmen von Iceberg-Daten zu verschiedenen Zeitpunkten. Dies ist für eine Vielzahl von Anwendungsfällen wertvoll, einschließlich Audits, Debugging und Compliance-Prüfungen.


Datenverdichtung und -filterung
Iceberg bietet eine Reihe von Indizierungsfunktionen, die zur Optimierung der Abfrageleistung beitragen, wie z. B. Verdichtungsoptionen zum Zusammenführen kleinerer Dateien in größere, um den Metadaten-Overhead zu reduzieren und Bloom-Filter, um unnötiges Lesen von Daten während der Abfrageausführung zu vermeiden.

Weiterführende Lösungen

Weiterführende Lösungen

IBM watsonx.data™

Greifen Sie auf Ihre Daten zu und optimieren Sie kostspielige Workloads mit watsonx.data, einem zweckmäßigen Datenspeicher, der auf einer offenen Data Lakehouse-Architektur zur standortunabhängigen Skalierung von KI-Workloads für alle Ihre Daten basiert.

IBM watsonx.data erkunden

IBM Db2 warehouse

Führen Sie kritische Analysen und KI-Workloads mit allen Arten von Daten, überall aus, durch: IBM® Db2 Warehouse entspricht Ihren Preis-Leistungs-Vorstellungen für hoch verfügbare Workloads, bietet einfachen, kontrollierten Zugriff auf all Ihre Daten und beseitigt Ihre Datensilos in der Hybrid Cloud.

 

IBM Db2 Warehouse erkunden

IBM Netezza®

Skalieren Sie Analysen und KI mit einem einheitlichen, verwalteten und kostengünstigen Cloud Data Warehouse. Mit Unterstützung für offene Formate wie Parquet und Apache Iceberg sowie nativer Integration mit Ihrem Data Lake und IBM watsonx.data Lakehouse ermöglicht Netezza Data Engineers, Data Scientists und Datenanalysten die Ausführung komplexer Workloads ohne zusätzliches ETL oder zusätzliche Datenübertragung über Cloud Object Storage.

IBM® Netezza erkunden

Data-Lake-Lösungen

Versorgen Sie Ihre Anwendungen, Analysen und KI mit beliebigen Daten in einem offenen Data Lakehouse. Im Gegensatz zu herkömmlichen Data Warehouses können Data Lakehouses Video, Audio, Protokolle, Texte, soziale Medien, Sensordaten und Dokumente verarbeiten, um Apps, Analysen und KI zu unterstützen. Sie können als Teil einer Data Fabric-Architektur erstellt werden, um die richtigen Daten zur richtigen Zeit bereitzustellen, unabhängig davon, wo sie sich befinden.

Data-Lake-Lösungen kennenlernen
Apache Iceberg-Ressourcen

Apache Iceberg-Ressourcen

Das Warum und Wie der Partitionierung in Apache Iceberg

Erfahren Sie mehr über die Partitionierung in Apache Iceberg und folgen Sie einem Beispiel, um zu sehen, wie einfach Iceberg die Partitionsevolution macht.

Das Datendifferenzierungsmerkmal

Dieser Leitfaden wurde von Chief Data Officers, Data Leaders und anderen Experten bei IBM und darüber hinaus entwickelt und hilft Ihnen bei der Umsetzung der richtigen Strategie, Technologien und Kultur, um ein datengestütztes Unternehmen zu führen, das von KI angetrieben wird.

Das disruptive Potenzial offener Data Lakehouse-Architekturen

Vor dem herausfordernden Hintergrund steigender Datenkosten, der Ausbreitung von Datensilos und einer Zunahme regulatorischer Anforderungen war das Gefühl der Dringlichkeit für Unternehmen, KI für Wettbewerbsvorteile zu nutzen, noch nie so groß wie heute.

Machen Sie den nächsten Schritt

Greifen Sie auf Ihre Daten zu und optimieren Sie kostspielige Workloads mit watsonx.data, einem zweckmäßigen Datenspeicher, der auf einer offenen Data Lakehouse-Architektur zur standortunabhängigen Skalierung von KI-Workloads für alle Ihre Daten basiert.

Jetzt kostenlosen Test starten Interaktive Demo ansehen
Fußnoten

Alle Links befinden sich außerhalb von ibm.com
1
Apache Iceberg: The Hub of an Emerging Data Service Ecosystem?“ (Link befindet sich außerhalb von ibm.com), Datanami, 8. Februar 2021
2 „Clash of ACID Data Lakes: Comparing Data Lakehouse Formats“ (Link befindet sich außerhalb von ibm.com), Data Insights, 9. August 2022