The Doppler Quarterly (DEUTSCHE) Herbst 2017 | Page 28

Softwareauswahl in EMR-Clustern und Apache Tez Hive-Speicherstruktur Sie haben die Wahl, ob Sie Apache Tez zusammen mit Apache Hive auf einem EMR-Cluster installieren wol- len oder nicht. Traditionell wird die Hive-Verarbei- tung über die MapReduce Execution Engine vorge- nommen, die die Daten beim Durchlaufen eines Rechendiagramms auf die Festplatte zurückschrei- ben muss. Dies führt zu einer Leistungseinbuße bei den plattenspezifischen E/A-Operationen. In Apache Tez werden zwischengespeicherte Daten direkt an den nächsten Knoten im Rechendiagramm überge- ben und es werden keine Daten auf die Festplatte geschrieben. Wenn Sie Apache Tez zusammen mit Hive installieren, wird Tez zur Standard-Executi- on-Engine. Wir empfehlen, Tez mit Hive zu verwen- den, da Tez generell das Leistungsverhalten bei Hive-Abfragen verbessert. Wir werden auf Apache Tez im Abschnitt zur Leistungsoptimierung in die- sem Artikel näher eingehen. Überlegungen zur Hive-Datenspeicherung Die empfohlene Vorgehensweise für die Datenspei- cherung in einer Apache-Hive-Implementierung auf AWS ist S3, wobei Hive-Tabellen auf den S3-Datenda- teien aufbauen. Diese Trennung von Berechnung und Speicherung ermöglicht transiente EMR-Cluster und die Nutzung der in S3 gespeicherten Daten für andere Zwecke. Die beiden wichtigsten Überlegungen für ein AWS-basiertes Apache Hive-Datenspeicherkonzept sind: 1) die Hive-Speicherstruktur und 2) das Spei- cherformat der Dateien in den S3-Buckets. Unterhalb der obersten S3-Bucketebene sollten wir die Datendateien in einer Ordnerstruktur organisie- ren. So kann eine Query-Engine den Datenzugriff optimieren, indem sie das Scannen großer Tabellen (Dateien) vermeidet und Joins mehrerer Tabellen optimiert. Zwei Strategien, die wir typischerweise anwenden, um diese Optimierung durch die Organi- sation der Daten auf S3 zu erreichen, sind: 1) Hive- basierte Partitionierung und 2) Bucketing. Eine Partition ist ein Verzeichnis in Hive, in dem der Wert des Partitionsschlüssels im tatsächlichen Namen des Partitionsverzeichnisses gespeichert wird und der Partitionsschlüssel eine virtuelle Spalte in der Tabelle ist. Beim Bucketing ist jedoch jeder Bucket eine Datei, die die eigentlichen Daten enthält. Diese werden auf der Grundlage eines Hash-Algo- rithmus aufgeschlüsselt. Beim Bucketing wird der Tabelle keine virtuelle Spalte hinzugefügt. Die optimale Partitionierungsstrategie führt durch die Eliminierung von Partitionen zu einer schnelleren Reaktion auf Anfragen. Das Bucketing bewirkt durch die durch gemeinsame Optimierung schnellere Antwortzeiten. Hive-Speicherformat Faktoren, die bei der Auswahl eines Dateiformats für die Speicherung berücksichtigt werden müssen: • • • • • Support für spaltenbasierten Speicher Teilbarkeit Komprimierung Entwicklung eines Schemas Indexierungsmöglichkeiten S3 – Bucket Tabelle Transaktionen Partition Partition Nach Zeit Cluster Produkt-ID Cluster Produkt-ID Abbildung 2: Hive-Partition und -Cluster 26 | THE DOPPLER | HERBST 2017 Nach Zeit