Conceitos essenciais
Durch die Kombination von Apache Arrow und ThymesisFlow können Daten in einem Cluster ohne Kopier- und Serialisierungsaufwand geteilt werden.
Resumo
Dieser Artikel beschreibt eine Implementierung von Apache Arrow, die Cluster-Shared-Memory nutzt, um Daten zwischen Knoten auszutauschen, ohne sie kopieren oder serialisieren zu müssen.
Die Kernpunkte sind:
- Verwendung von Apache Arrow als gemeinsames In-Memory-Datenformat, um Interoperabilität zwischen Anwendungen zu ermöglichen
- Einsatz von ThymesisFlow, um einen gemeinsamen Adressraum über den Cluster hinweg zu schaffen
- Serialisierung nur der Tabellenbeschreibung, nicht der Daten selbst, um Kopieraufwand zu vermeiden
- Behandlung von Cache-Kohärenz-Problemen durch gezieltes Leeren der CPU-Caches vor Schreibvorgängen
- Abbildung von Speicherbereichen an die gleichen virtuellen Adressen auf allen Knoten, um Adressübersetzung zu vermeiden
- Erweiterung von Apache Arrow um benutzerdefinierte Speicherverwaltung für Remote-Allokationen
Durch diese Ansätze können Daten effizient über den Cluster hinweg geteilt werden, ohne die Vorteile von Apache Arrow zu verlieren.
Estatísticas
Durchschnittliche Zeit zum Initialisieren einer 1 GiB großen Tabelle im Remote-Speicher: 300,44 ms
Davon 118 ms Overhead für Kommunikation, Cache-Flushing usw.
Übertragung der Tabellenbeschreibung über Ethernet dauert im Durchschnitt 3,23 ms, im Vergleich zu 3,3 ms für einen einfachen gRPC-Aufruf
Citações
"Durch die Kombination von ThymesisFlow mit Apache Arrow minimieren wir die Datenkopie-Engpässe, die derzeit die effiziente Kommunikation zwischen Server-Knoten behindern."
"Apache Arrow-Objekte, einmal instanziiert, sind unveränderlich. Dies vereinfacht ihre Verwendung in einem Cluster-Shared-Memory, da wir uns nicht um Kohärenzprobleme kümmern müssen."