Leistung um 30 % gesteigert! Praktische Analyse der Leistungsoptimierung des Kangaroo Cloud Data Stack basierend auf Apache Hudi

Apache Hudi ist eine Open-Source- Data-Lake-Lösung , die Unternehmen dabei helfen kann, große Datenmengen besser zu verwalten und zu analysieren, und eine effiziente Datenaktualisierung und -abfrage unterstützt . Es bietet außerdem eine Vielzahl von Datenkomprimierungs- und Speicherformaten sowie Indexierungsfunktionen und bietet so flexiblere und effizientere Datenverarbeitungsmethoden für Data Warehouse-Praktiken in Unternehmen .

Im Finanzbereich können Unternehmen mit Hudi große Mengen an Finanztransaktionsdaten verarbeiten, die in Echtzeit abgefragt und aktualisiert werden müssen. Im E-Commerce-Geschäft können Unternehmen Hudi nutzen, um Bestelldaten zu verfolgen und Bestellungen in Echtzeit zu aktualisieren und abzufragen. Im Logistik- und Lieferkettenmanagement kann Hudi Unternehmen dabei unterstützen, große Mengen an Logistikdaten in Echtzeit zu verarbeiten und zu aktualisieren, um Datenkonsistenz und -zuverlässigkeit sicherzustellen.

Als One-Stop-Big-Data - Basissoftware bietet Kangaroo Cloud Data Stack Kunden umfassende Supportfunktionen wie Bestandsdatenmigration , Daten-in-the-Lake und Dateiverwaltung auf Basis von Apache Hudi. In diesem Prozess habe ich einige Erfahrungen mit der Optimierung der Hudi-Leistung gesammelt und hoffe, diese in diesem Artikel mit Ihnen teilen zu können.

Kurze Analyse des Hudi-Prinzips

Apache Hudi ist eine Open-Source-Data-Lake-Lösung. Es basiert auf dem Technologie-Stack von Hadoop und Spark und wurde auf verschiedene Computer-Engines wie Flink und Trino erweitert. Der Hauptzweck von Apache Hudi besteht darin, eine effiziente, skalierbare und zuverlässige Data-Lake-Lösung für die Verwaltung und Verarbeitung großer Datensätze bereitzustellen.

Die Kernimplementierung von Hudi besteht darin , inkrementelle Datenaktualisierungs- und Abfragevorgänge zu unterstützen , indem die Datensammlung in mehrere Datendateien aufgeteilt wird und für jede Datendatei eine Datenversion und Indexinformationen verwaltet werden . Wie in der folgenden Abbildung dargestellt, schreibt Hudi die aktualisierten Daten in eine neue Datendatei, wenn der Benutzer die Daten aktualisieren muss, und kopiert die Daten die ursprüngliche Datendateidurch den Copy-on-Write-Vorgang

Gleichzeitig aktualisiert Hudi die Datenversion und Indexinformationen, sodass Benutzer basierend auf der Datenversion und der eindeutigen Kennung auf die neuesten Datensätze zugreifen können. Wenn Benutzer Daten abfragen müssen, verwendet Hudi Indexinformationen, um Datensätze zu finden und die neuesten Datensätze zurückzugeben.

Datei

Im Hudi-Modus „Zusammenführen beim Lesen“ wird der Aktualisierungsvorgang durch Zusammenführen der Originaldaten und der aktualisierten Daten zum Zeitpunkt der Abfrage implementiert. Insbesondere wenn neue Daten geschrieben werden müssen, hängt Hudi die neuen Daten an eine neue Protokolldatei an und zeichnet die Informationen der neuen Datei in der Metadatendatei auf. Beim Abfragen von Daten führt Hudi alle Datendateien zusammen, um eine Ansicht zu generieren, und fragt dann die Ansicht ab.

Da Hudi beim Abfragen nur die Daten zusammenführen muss, die aktualisiert werden müssen, und beim Schreiben nicht zusammenführen muss, kann der Leistungsaufwand beim Schreiben vermieden und schnelle Aktualisierungsvorgänge erzielt werden.

Apache Hudi erstellt beim Schreiben von Daten eine neue Version und generiert beim Lesen von Daten eine Ansicht durch Zusammenführen aller Datenversionen. In der Ansicht erscheint jeder Datensatz nur einmal und ist die neueste Version, wodurch sichergestellt wird, dass der Lesevorgang nur die Daten in der Ansicht betrifft, ohne die Originaldaten zu ändern, wodurch eine Lese-Schreib-Trennung erreicht wird .

Durch die Implementierung der Parallelitätskontrolle über mehrere Versionen hinweg kann Hudi die Leistung von Lesevorgängen verbessern und gleichzeitig die Datenkonsistenz sowie die Zuverlässigkeit und Skalierbarkeit der Daten gewährleisten.

Hudi-Optimierungspraxis

Im Folgenden wird die Leistungsoptimierung von Hudi basierend auf den praktischen Erfahrungen des Kangaroo Cloud Data Stack vorgestellt .

Unterstützung für mehrere Indizes

Hudi unterteilt die Datensammlung in mehrere Datendateien und verwaltet eine Datenversion und Indexinformationen für jede Datendatei, um inkrementelle Datenaktualisierungen und Abfragevorgänge zu unterstützen. Durch die Erstellung eines Index können die generierten Metadaten verwendet werden, um schnell den Speicherort der für die Abfrage erforderlichen Daten zu finden, wie in der folgenden Abbildung dargestellt. Dies kann das Scannen oder Lesen unnötiger Daten aus dem Dateisystem reduzieren oder sogar vermeiden, den E/A-Overhead reduzieren und die Abfrageeffizienz erheblich verbessern. Hudi unterstützt bereits mehrere verschiedene Indexierungstechnologien und verbessert und fügt ständig weitere Indexierungsimplementierungen hinzu.

Kangaroo Cloud Data Stack unterstützt Benutzer beim Festlegen des Indextyps, den sie beim Erstellen einer Hudi-Tabelle verwenden möchten, einschließlich SIMPLE , BLOOM FILTER, BUCKET und anderen Typen. Während des Schreibvorgangs schreibt Hudi die Indexinformationen in die Parkettdatei oder einen externen Speicher. Beim Lesen vergleicht und beurteilt die Anwendung diese Informationen und überspringt unnötige Datendateien.

Datei

Hudi führte MetadataTable in Version 0.11.0 als Multi-Mode-Index ein . Durch die Verwendung von MetadataTable zum Zusammenfassen von Metadateninformationen können Anwendungen Dateisystemaufrufe für Dateiauflistungsvorgänge vermeiden ( was bei der Objektspeicherung sehr zeitaufwändig ist) und das direkte Lesen vermeiden Fußzeileninformationen in der Parkettdatei können die Abfrageleistung erheblich verbessern.

Der Kangaroo Cloud-Datenstapel unterstützt Benutzer dabei, den Multimodus-Index beim Erstellen einer Tabelle zu aktivieren und beim Schreiben von Daten die Indexinformationen der Datei in MetadataTable zu schreiben. DataStack unterstützt auch die asynchrone Erstellung von MetadataTable, um sicherzustellen, dass sich der Schreibvorgang immer noch in einem Zustand mit geringer Latenz befindet. Anschließend wird MetadataTable offline von der Hintergrundanwendung generiert, um die Leseleistung zu verbessern.

Da MetadataTable auf Informationen wie Spaltenstatistiken/Bloomfilter basiert, die in der Basisdatei aufgezeichnet sind, gibt es keine Möglichkeit, die Informationen der Protokolldatei im Merge-on-Read-Modus in MetadataTable zu speichern, und das Open-Source-Framework verwendet sie nicht zum Implementieren von Dateien Filterung.

Da die Basisdatei und die Protokolldatei jedoch dieselbe Datei-ID haben, hat das Kangaroo Cloud-Technologieteam eine Transformation innerhalb des Datenstapels vorgenommen: Filtern Sie die Protokolldatei nach dem Abrufen der Basisdatei über die MetadataTable nach der Datei-ID, um unnötiges zu vermeiden Lektüre. Es wurde bestätigt, dass diese Änderung dazu führen kann, dass der Modus „Zusammenführen beim Lesen“ den gleichen Filtereffekt hat wie der Modus „Kopieren beim Schreiben“ .

Optimieren Sie das Dateilayout

Bei der Speicherung großer Datenmengen ist die Optimierung des Dateilayouts eine wichtige Technik zur Leistungsoptimierung. Sein Hauptzweck besteht darin, die Daten beim Schreiben nach bestimmten Regeln auf dem Speichermedium anzuordnen , um die Effizienz des Datenlesens und -verarbeitens zu verbessern. Die Optimierung des Dateilayouts kann auf verschiedene Arten erfolgen, z. B. durch Zeitstempelsortierung , Partitionssortierung und Zusammenführung von Dateien.

Hudi bietet eine Methode zur Optimierung des Dateilayouts namens Clustering , mit der kleine Dateien zu größeren Dateien zusammengeführt werden können, um die Gesamtzahl der Dateien zu reduzieren, die die Abfrage-Engine scannen muss, oder Konzepte wie raumfüllende Kurven zur Anpassung an den Datensee zu verwenden Layout Und reduzieren Sie die von der Abfrage gelesene Datenmenge. Mithilfe von Clustering können Daten mit denselben Abfragemerkmalen in mehreren benachbarten Dateien abgelegt und dann während der Abfrage gemäß den Indexinformationen gefiltert werden, wodurch die Anzahl der zu lesenden Dateien effektiv reduziert und die Rechenkosten gesenkt werden können.

Kangaroo Cloud Data Stack bietet eine visuelle Seite, die Benutzern die Anpassung des Dateilayouts erleichtert. Benutzer können Sortierstrategien, Sortierfelder, Filterbedingungen usw. frei festlegen und optimieren. Da Hudi mehrere Versionen zum Organisieren von Dateien verwendet, müssen sich Benutzer keine Sorgen darüber machen, dass sich die Optimierungsaufgabe auf die laufende Leseaufgabe auswirkt. Nach Abschluss der Optimierung kann die neue Leseaufgabe die Effizienzverbesserung genießen, die das neue Layout mit sich bringt.

Datei

Entdecken Sie neue Funktionen

Im Zuge der Implementierung von Hudi verfolgt Kangaroo Cloud Data Stack auch aktiv neue Funktionen und Features in der Praxis-Community.

In Hudi 0.13.0 hat Hudi die Funktion „ Optimierte Datensatzladeverarbeitung “ implementiert. Durch Festlegen der beiden Parameter „hoodie.datasource.write.record.merger.impls=org.apache.hudi.HoodieSparkRecordMerger“ und „hoodie.logfile.data.block.format=parquet“ werden zusätzliche Kopien und Deserialisierungen im Schreibvorgang vermieden auf konsistente Weise während ihres gesamten Lebenszyklus.

Kangaroo Cloud Stack hat diese Funktion getestet und eingeführt. Nach der Überprüfung wurde die Update-Leistung im Vergleich zur Vorgängerversion um etwa 20 % verbessert, was mit der Beschreibung der Community übereinstimmt. Darüber hinaus bezieht sich der Zahlenstapel auch auf die neue Funktion zum Schreiben von Daten ohne Unterbrechungssperre in der Nachrichtenwarteschlange, die mit Hudi 0.13.0 eingeführt wurde, indem Hoodie.write.executor.type = DISRUPTOR und Hoodie.write.executor.disruptor.wait festgelegt werden. Strategie = BUSY_SPIN_WAIT Parameter, kombiniert mit der oben genannten optimierten Konfiguration, wurde die Gesamtaktualisierungsleistung um mehr als 30 % verbessert.

Zusammenfassen

Der Vorteil von Apache Hudi besteht darin, dass es die inkrementelle Datenverarbeitung unterstützt , eine gute Datenkonsistenz und -zuverlässigkeit aufweist und eine Vielzahl von Technologien zur Leistungsoptimierung bereitstellt, die die Effizienz der Datenverarbeitung und -abfrage verbessern können, sowie eine gute Leistung und Skalierbarkeit aufweist.

Während der Implementierung von Hudi überprüfte das Kangaroo Cloud Data Stack- Team verschiedene Indizes von Hudi, wendete die Funktion zur Optimierung der Dateiorganisation an und fasste allgemeine Optimierungsparameter zusammen, um Unternehmen einen zuverlässigen, effizienten und skalierbaren Data Lake-Aufbau zu bieten. Die Data Lake-Lösung hat Wir haben viel Erfahrung gesammelt, die Unternehmen dabei helfen kann, Daten besser zu verwalten und zu analysieren und die Genauigkeit und Effizienz von Geschäftsentscheidungen zu verbessern.

„Dutstack-Produkt-Whitepaper“: https://www.dtstack.com/resources/1004?src=szsm

Download-Adresse „Data Governance Industry Practice White Paper“: https://www.dtstack.com/resources/1001?src=szsm Wenn Sie mehr über Kangaroo Cloud-Big-Data-Produkte, Branchenlösungen und Kundenbeispiele erfahren oder konsultieren möchten, Besuchen Sie die offizielle Website von Kangaroo Cloud: https://www.dtstack.com/?src=szkyzg

Gleichzeitig sind Studierende, die sich für Big-Data-Open-Source-Projekte interessieren, herzlich eingeladen, sich dem „Kangaroo Cloud Open Source Framework DingTalk Technology qun“ anzuschließen, um die neuesten Informationen zur Open-Source-Technologie auszutauschen. Qun-Nummer: 30537511, Projektadresse: https: // github.com/DTStack

{{o.name}}
{{m.name}}

Ich denke du magst

Origin my.oschina.net/u/3869098/blog/10084152
Empfohlen
Rangfolge