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