In-Memory-Analysen für Big Data So zünden sie den Analyse-Turbo mit Apache Arrow
Anbieter zum Thema
Apache Arrow ist ein für Big-Data-Umgebungen interessantes Tool zur spaltenbasierten In-Memory-Datenverarbeitung. Wir erklären, warum das Werkzeug für leistungsstarke Analysen prädestiniert ist.

Der größte Vorteil bei der Analyse von Big Data mit Apache Arrow ist die stark gestiegene Leistung im Vergleich zu anderen Systemen. Arrow bindet sich dabei als Schaltzentrale zwischen den einzelnen Tools in der Big-Data-Infrastruktur ein und bringt so Ordnung ins Chaos.
Erreicht wird das vor allem durch eine verbesserte Zusammenarbeit der verschiedenen Systeme und einer Optimierung der verwendeten CPU-Ressourcen. Hier will Arrow dafür sorgen, dass weniger Daten serialisiert werden müssen. Dieser Vorgang ist normalerweise zur Analyse notwendig, erfordert aber viel Rechenzeit. Arrow nutzt in diesem Bereich eine andere Technik, die für die Analyse von Big Data optimiert ist.
Arrow arbeitet mit vielen Big-Data-Produkten zusammen und bietet daher auch eine breite Unterstützung der wichtigsten Programmiersprachen. Java, C, C++, Python sind bereits eingebunden, die Entwickler haben aber bereits angekündigt in Zukunft noch mehr Sprachen zu integrieren, zum Beispiel R. Wer sich selbst den Quellcode ansehen will, kann sich diesen bei Github herunterladen.
Daraus besteht Arrow
Arrow arbeitet mit Apache Drill zusammen und nutzt teilweise identischen Code – der grundsätzliche Code von Apache Arrow wurde aus Drill entnommen. Drill erweitert die Möglichkeit von Hadoop-Umgebungen und NoSQL-Datenbanken um die Möglichkeit, SQL-Abfragen zu erstellen. Grundlage von Drill ist das Google-Produkt Dremel, welches in hoher Geschwindigkeit Daten aus schemafreien SQL-Datenbanken abfragen kann. Im Fokus der Lösung stehen Echtzeit-Abfragen und Ad-hoc-Berichte in BI- oder Big-Data-Umgebungen. Der Code wird ständig erweitert und setzt über seinen spaltenbasierten In-Memory-Ansatz neue Standards. Apache Drill lässt sich zusammen mit Apache Arrow betreiben.
Die Entwickler von Calcite, Cassandra, Drill, Hadoop, HBase, Ibis, Impala, Kudu, Pandas, Parquet, Phoenix, Spark und Storm arbeiten bereits eng mit den Entwicklern von Apache Arrow zusammen. Viele große Big-Data-Unternehmen unterstützen Arrow ebenfalls, etwa Hortonworks. Es wird erwartet, dass in Zukunft die meisten Big-Data-Umgebungen mit Arrow zusammenarbeiten. Cloudera bietet, zusammen mit Hadoop, ebenfalls eine Unterstützung für Apache Arrow. Denn auch im Hadoop-Ökosystem kann Arrow die Leistung deutlich verbessern.
Darum ist Arrow schneller
Damit die Leistung in der Big-Data-Infrastruktur verbessert wird, schaltet sich Apache Arrow als Schaltzentrale zwischen Spark, Pandas, Drill oder Impala und Parquet, Cassandra, Kudu oder HBase. Das ist wesentlich effizienter als die Interaktion dieser Produkte direkt miteinander inklusive dem ständigen Kopieren und Konvertieren von Daten. Denn hier müssen die verschiedenen Komponenten ständig Daten untereinander austauschen. Anstelle von Punkt-zu-Punkt-Verbindungen arbeiten Big-Data-Netzwerke mit Apache Arrow also wesentlich effizienter, in dem die Kommunikation der Produkte durch Arrow gesteuert wird, beziehungsweise Arrow selbst die Daten weitergibt.
Arrow vereinheitlicht also die Datenverarbeitung und das verwendete Speicherformat. Beim Einsatz verschiedener Big Data Tools ohne Arrow nutzt jedes Tool sein eigenes Format, das jeweils entsprechend angepasst werden muss, wenn die Daten in ein anderes System überführt werden.
Dazu setzt Arrow auf Vektorisierung, Datenparallelität und SIMD (Single Input Multiple Data). Das ermöglicht das gleichzeitige Verarbeiten sehr großer Datenmengen und Datensätzen. Das SIMD-Prinzip vermeidet Verschwendung von Rechenzeit durch Schleifen.
Bindeglied zwischen verschiedenen Komponenten
Der größte Vorteil von Apache Arrow liegt darin, dass durch die Verwendung von Arrow, als Bindeglied zwischen den verschiedenen Komponenten, sehr viel Rechenzeit eingespart wird, welche durch die Kommunikation aller Big-Data-Produkte im Netzwerk untereinander eher verschwendet wird. Denn laut den Entwicklern werden 70 bis 80 Prozent der CPU-Zyklen vor allem für die Serialisierung und Deserialisierung von Daten verwendet. Dadurch sinkt die zur Verfügung stehende Rechenzeit für die Analyse natürlich deutlich. Außerdem entsteht Overhead bei der Datenverarbeitung, den Apache Arrow vermeiden kann.
Vor allem in Umgebungen, bei denen die Leistung der Cluster bereits an ihre Grenzen stößt, kann Arrow eine extreme Geschwindigkeitssteigerung mit sich bringen. Denn ohne Arrow verbrauchen die Server sehr viel Rechenkraft für die Verwaltung der Daten. Damit steht weniger Leistung für die eigentliche Analyse zur Verfügung. Die Entwickler versprechen eine Geschwindigkeitssteigerung um den Faktor 10 bis 100, abhängig von den eingesetzten Produkten und der zu verarbeitenden Datenmenge. Je heterogener eine Big-Data-Umgebung ist, umso mehr lässt sich die Leistung mit Apache Arrow verbessern.
Diese Daten lassen sich mit Arrow verarbeiten
Zusätzlich zu NoSQL-Daten kann Apache Arrow auch relationale Daten verarbeiten. Aber auch Daten im Bereich Internet of Things lassen sich mit Arrow optimal verwalten: Da durch die verschiedenen Sensoren vor allem hier sehr viele Informationen, die auch noch schnell verarbeitet werden müssen, in kurzer Zeit im System eingehen, kann Arrow seine Vorteile ausspielen. So lassen sich zum Beispiel auch JSON-Daten (JavaScript Object Notation) schneller verarbeiten. Als Datentypen lassen sich also vor allem Int, BigInt, Decimal, VarChar, Map, Struct und Array einsetzen.
Fazit
Unternehmen, die im Big-Data-Umfeld mehr Leistung aus ihrer Umgebung herauskitzeln wollen, sollten sich Apache Arrow ansehen. Befinden sich die eingesetzten Produkte bereits jetzt auf der Kompatibilitätsliste mit Arrow, lässt sich die Leistung deutlich verbessern. Vor allem wenn die Umgebung in der Rechenkraft an ihre Grenzen stößt, kann es sinnvoll sein Apache Arrow im Unternehmen zu implementieren. Durch die Integration von Apache Arrow wird der Overhead deutlich reduziert, was auch in einer Einsparung des Datenverkehrs im Netzwerk resultiert.
(ID:44109633)