paint-brush
Data-Lake-Rätsel aufgedeckt: Nessie, Dremio und MinIO sorgen für Aufsehenvon@minio
8,080 Lesungen
8,080 Lesungen

Data-Lake-Rätsel aufgedeckt: Nessie, Dremio und MinIO sorgen für Aufsehen

von MinIO6m2024/02/22
Read on Terminal Reader

Zu lang; Lesen

Dieser Artikel bietet eine Schritt-für-Schritt-Anleitung, die zeigt, wie Nessie, Dremio und MinIO zusammenarbeiten, um die Datenqualität und Zusammenarbeit in Ihren Data-Engineering-Workflows zu verbessern.
featured image - Data-Lake-Rätsel aufgedeckt: Nessie, Dremio und MinIO sorgen für Aufsehen
MinIO HackerNoon profile picture


Viele von uns haben aufgrund späterer Anforderungen Änderungen an Daten vorgenommen. Wenn wir es merken, ist ein Zurücksetzen unmöglich. Veränderung ist nicht nur eine Konstante; Es handelt sich um einen wesentlichen Teil der Datenverwaltung, der einen ausgefeilten Ansatz erfordert. Nutzen Sie die Git-ähnliche Funktionalität von Dremios Datenkatalog Nessie.


So wie Git für die Softwareentwicklung von grundlegender Bedeutung ist, benötigen Dateningenieure ähnliche Tools, um parallel zu arbeiten, Datenversionen zu vergleichen, Änderungen an der Produktion voranzutreiben und bei Bedarf Daten zurückzusetzen. Nessie stellt Dateningenieuren ein Git-ähnliches Versionskontrollsystem zur Verwaltung von Datenversionen, Verzweigungen, Zusammenführungen und Commits zur Verfügung. Dies kann sehr hilfreich sein, wenn mehrere Dateningenieure gleichzeitig mit Daten arbeiten und diese transformieren. Mit Nessie kann jeder Ingenieur in separaten Zweigen arbeiten und gleichzeitig eine einzige Informationsquelle in Form des Hauptzweigs beibehalten. Diese Funktionalität ermöglicht es Data-Engineering-Teams, die Datenqualität angesichts ständiger Veränderungen gemeinsam aufrechtzuerhalten.


Dieser Artikel enthält eine Schritt-für-Schritt-Anleitung, die zeigt, wie Nessie, Dremio und MinIO zusammenarbeiten, um die Datenqualität und Zusammenarbeit in Ihren Data-Engineering-Workflows zu verbessern. Egal, ob Sie Dateningenieur, ML-Ingenieur oder einfach nur ein moderner Data-Lake-Enthusiast sind, dieser Blog stattet Sie mit dem Wissen und den Tools aus, die Sie zur effektiven Verbesserung Ihrer Datenversionierungspraktiken benötigen.

Die Grundlagen verstehen: Nessie Workloads

Nessie ermöglicht Git-ähnliche Workloads, mit denen Sie testen, entwickeln und in die Produktion bringen können. Lassen Sie uns einige Schlüsselkonzepte aufschlüsseln:


  • Zweige: Genau wie in Git können Sie mit Zweigen in Nessie gleichzeitig an verschiedenen Data-Engineering-Aufgaben arbeiten. Beispielsweise könnten Sie einen Zweig für die Funktionsentwicklung, Datenbereinigung und Datentransformation haben. Jeder Zweig kann seinen eigenen Satz an Datenänderungen haben.


  • Commits: In Nessie stellt ein Commit eine Momentaufnahme der Daten zu einem bestimmten Zeitpunkt dar. Wenn Sie Änderungen an Ihren Daten vornehmen, erstellen Sie einen neuen Commit, der diese Änderungen aufzeichnet. Commits sind mit einem bestimmten Branch verknüpft. Wenn Sie Ihre Daten in einen stabilen oder bekanntermaßen guten Zustand zurückversetzen müssen, können Sie mit Nessie ganz einfach einen bestimmten Commit auswählen und auf diese Datenversion zurücksetzen. Dies gewährleistet Datenqualität und -konsistenz.


  • Zusammenführungen : Mit Nessie können Sie die Änderungen von einem Zweig in einen anderen zusammenführen. Dies ähnelt dem Zusammenführen von Codeänderungen in Git. Wenn Sie einen Zweig zusammenführen, werden die in diesem Zweig vorgenommenen Datenänderungen Teil des Zielzweigs.

Die Komponenten



Dremio ist eine verteilte Analyse-Engine, die als Open-Source-Plattform arbeitet und eine intuitive Self-Service-Schnittstelle für Datenexploration, -transformation und kollaboratives Arbeiten bietet. Sein Design basiert auf Apache-Pfeil, ein Hochgeschwindigkeits-Säulenspeicherformat.


Wir haben bereits untersucht, wie und wie Dremio mit Kubernetes bereitgestellt werden kann Fragen Sie Iceberg-Tabellen auf MinIO mit Dremio ab . Weitere Informationen zu Dremio finden Sie unter Dremio-Ressourcen .


MinIO ist ein leistungsstarker Objektspeicher. Bekannt für sein Außergewöhnliches Geschwindigkeit Und Skalierbarkeit MinIO dient als zentrale Komponente beim Aufbau und der Wartung moderner Data-Lake-Infrastrukturen. Mit MinIO können Architekten große Datenmengen vor Ort, auf Bare-Metal, am Edge oder in einer der öffentlichen Clouds effizient verwalten und speichern.


Apache-Eisberg ist ein offenes Tabellenformat, das sich für die Verwaltung großer Datenmengen in Data Lakes eignet. Einzigartige Funktionen wie Zeitreisen, dynamische Schemaentwicklung und Partitionsentwicklung machen es bahnbrechend und ermöglichen es Abfrage-Engines, gleichzeitig sicher und effizient mit denselben Daten zu arbeiten. Sehen Der ultimative Leitfaden zur Lakehouse-Architektur mit Iceberg und MinIO Weitere Informationen zu den Funktionen von Iceberg finden Sie hier.

Erste Schritte

Du wirst das brauchen Docker-Engine Und Docker Compose für dieses Tutorial. Der einfachste Weg, beides zu bekommen, wenn Sie sie noch nicht haben, ist die Installation von Docker Desktop.


Dieser Teil des Tutorials basiert auf Dremios Blogeintrag . Sie können das Repo für dieses Projekt erhalten Hier .


Öffnen Sie zunächst ein Terminal, navigieren Sie zu dem Ordner, in dem Sie das Repo geklont/heruntergeladen haben, und führen Sie den folgenden Befehl aus, um Dremio zu starten.


 docker-compose up dremio


Warten Sie einen Moment und navigieren Sie dann zu http://localhost:9047 um auf Dremio zuzugreifen. Aktualisieren Sie die angeforderten Felder und klicken Sie dann auf Weiter.



Führen Sie als Nächstes den folgenden Befehl aus, um MinIO zu starten.


 docker-compose up minio


Der letzte Befehl docker-compose up unten startet Nessie.


 docker-compose up nessie


Navigieren Sie zu http://localhost:9001 um sich mit dem Benutzernamen und Passwort minioadmin:minioadmin bei MinIO anzumelden. Sie werden aufgefordert, einen Bucket zu erstellen.



Erstellen Sie einen mit dem Namen iceberg-datalake .



Gehen Sie dann zurück zu Dremio unter http://localhost:9047 , klicken Sie auf Quelle hinzufügen und wählen Sie Nessie aus.



  • Legen Sie den Namen auf nessie fest
  • Legen Sie die Endpunkt-URL auf http://nessie:19120/api/v2 fest
  • Setzen Sie die Authentifizierung auf none



Klicken Sie noch nicht auf Speichern. Klicken Sie stattdessen im Navigationsbereich links auf „Speicher“. MinIO ist ein S3-API-kompatibler Objektspeicher und kann dieselben Verbindungspfade wie AWS S3 verwenden.


  • Legen Sie als Zugriffsschlüssel minioadmin fest
  • Legen Sie als Ihren geheimen Schlüssel minioadmin fest
  • Legen Sie den Root-Pfad auf /iceberg-datalake fest



Scrollen Sie nach unten, um zur nächsten Anleitung zu gelangen.

  • Klicken Sie unter Connection Properties auf die Schaltfläche Add Property , um die folgenden Eigenschaften zu erstellen und zu konfigurieren.
    • fs.s3a.path.style.access auf true
    • fs.s3a.endpoint zu minio:9000
    • dremio.s3.compat auf true setzen
    • Deaktivieren Sie Encrypt connection .



Klicken Sie dann auf Speichern. Sie sollten jetzt Nessie-Kataloge in Ihren Datenquellen sehen.



Erstellen Sie eine Datenquelle

Navigieren Sie in Dremio auf der linken Seite zu SQL Runner. Stellen Sie sicher, dass Context im oberen rechten Bereich des Texteditors auf unsere Nessie-Quelle eingestellt ist. Andernfalls müssen Sie zum Ausführen dieser Abfrage auf den Kontext wie nessie.SalesData und nicht nur auf SalesData verweisen. Kopieren Sie die folgende SQL-Anweisung, fügen Sie sie ein und führen Sie sie aus.


 CREATE TABLE SalesData (    id INT,    product_name VARCHAR,    sales_amount DECIMAL,    transaction_date DATE ) PARTITION BY (transaction_date); 



Führen Sie die folgende Abfrage aus, um Daten in die soeben erstellte Tabelle einzufügen.


 INSERT INTO SalesData (id, product_name, sales_amount, transaction_date) VALUES    (1, 'ProductA', 1500.00, '2023-10-15'),    (2, 'ProductB', 2000.00, '2023-10-15'),    (3, 'ProductA', 1200.00, '2023-10-16'),    (4, 'ProductC', 1800.00, '2023-10-16'),    (5, 'ProductB', 2200.00, '2023-10-17'); 



Navigieren Sie zurück zu MinIO, um zu sehen, dass Ihr Data Lake mit den Iceberg-Tabellen gefüllt wurde.


Verzweigung und Verschmelzung mit Nessie

Kehren Sie zu Dremio unter http://localhost:9047 zurück. Beginnen Sie mit der Abfrage einer Tabelle im Hauptzweig mithilfe der AT BRANCH Syntax:


 SELECT * FROM nessie.SalesData AT BRANCH main; 



Erstellen Sie einen ETL-Zweig (Extract Transform and Load), damit Sie mit Daten experimentieren und diese transformieren können, ohne die Produktion zu beeinträchtigen.


 CREATE BRANCH etl_06092023 in nessie


Fügen Sie im ETL-Zweig neue Daten in die Tabelle ein:

 USE BRANCH etl_06092023 in nessie; INSERT INTO nessie.SalesData (id, product_name, sales_amount, transaction_date) VALUES (6, 'ProductC', 1400.00, '2023-10-18');


Bestätigen Sie die sofortige Verfügbarkeit der neuen Daten innerhalb der ETL-Zweigstelle:

 SELECT * FROM nessie.SalesData AT BRANCH etl_06092023;


Beachten Sie die Isolierung von Änderungen von Benutzern im Hauptzweig:

 SELECT * FROM nessie.SalesData AT BRANCH main;


Führen Sie die Änderungen aus dem ETL-Zweig wieder in den Hauptzweig ein:

 MERGE BRANCH etl_06092023 INTO main in nessie;


Wählen Sie den Hauptzweig erneut aus, um zu sehen, dass die Änderungen tatsächlich zusammengeführt wurden.

 SELECT * FROM nessie.SalesData AT BRANCH main


Diese Verzweigungsstrategie ermöglicht es Dateningenieuren, zahlreiche Transaktionen über mehrere Tabellen hinweg unabhängig abzuwickeln. Wenn sie bereit sind, können Dateningenieure diese Transaktionen in einer einzigen, umfassenden Multi-Table-Transaktion innerhalb der Hauptverzweigung zusammenführen.

Abschluss

Dieser Blog-Beitrag befasste sich eingehend mit der Leistungsfähigkeit der Git-ähnlichen Versionskontrolle im Data Engineering und betonte, wie Nessie verwaltet Datenversionen, Verzweigungen und Zusammenführungen nahtlos. Diese Schritt-für-Schritt-Anleitung zeigt, wie Nessie in Zusammenarbeit mit Dremio und MinIO als Objektspeicher-Grundlage die Datenqualität und Zusammenarbeit in Data-Engineering-Workflows verbessert.


Teilen Sie uns mit, wie Ihr Data Lakehouse aussieht [email protected] oder weiter unser Slack-Kanal .


Erscheint auch hier .