Was ist Apache Hive?

Hive ist ein Open-Source-Compute-Framework auf Petabyte-Ebene. Es erleichtert das Lesen, Schreiben und Verwalten großer Datensätze, die in verteiltem Storage wie HDFS (Hadoop Distributed File System) und anderen kompatiblen Blob-Stores wie Amazon S3 gespeichert sind.

Zwar wurde Hive ursprünglich zum Schreiben von MapReduce-Aufträgen entwickelt, jedoch laufen die meisten modernen Implementierungen von Hive auf Tez, das architektonisch ähnlich wie Spark ist. Hive unterstützt die Analyse mit HiveQL, einer SQL-ähnlichen Sprache, und verfügt über alle Vorteile von Hadoop, wie Skalierbarkeit, Redundanz und der Möglichkeit zur Bearbeitung großer Datensätze.

Es wurde 2008 von Facebook entwickelt, um eine zugängliche Möglichkeit zur Abfrage der gewaltigen Mengen an benutzergenerierten Daten zu bieten. Hive ist die älteste und ausgereifteste aller verfügbaren SQL-on-Hadoop-Engines. Insofern ist Hive die bevorzugte Wahl für Unternehmen, die nach der stabilsten SQL-on-Hadoop-Engine suchen.​​​​​​​

Aspekte von Apache Hive

Stabilität

Hive wurde erstmals 2008 veröffentlicht und ist mit fünf Jahren Vorsprung die stabilste und ausgereifteste SQL-on-Hadoop-Engine, die auch heute noch weiterentwickelt und verbessert wird.

Abfragedurchsatz​​​​​​​

Hive ist in der Lage, extrem große (milliardenzeilige) Tabellen problemlos miteinander zu verbinden.​​​​​​​ Während schnellere In-Memory-SQL-Engines bei extrem großen Abfragen von Faktentabelle zu Faktentabelle manchmal versagen, kann die Verarbeitungs-Engine von Hive diese Tabellen problemlos miteinander verbinden. Die moderne Version von Hive auf Tez muss auch keine Kompromisse mehr zwischen hohem Durchsatz und schnellen Abfragen eingehen.

Starke Entwickler-Community

Ein großer Vorteil von Hive ist ein solides Fundament in der Open-Source-Community und die breite Unterstützung durch die Gemeinschaft. Ein Beispiel für diese Unterstützung war die Stinger-Initiative, eine Bewegung innerhalb der Community von Hive-Entwicklern, die interaktive Abfragen und zusätzliche Funktionen in Hive einführte. Das Ergebnis war die Entwicklung von Tez, einer neuen Ausführungsmaschine für Hive.

Für welche Anwendungsfälle ist Hive am besten geeignet?

Batch- und ETL-Verarbeitung

Yahoo! JAPAN testete die Batch-Ausführung einer Zufallsstichprobe von 2.000 SQL-Abfragen auf Hive und Impala. Die Ergebnisse sind ziemlich verblüffend. Ein Großteil der 2.000 Abfragen (etwa 1.800) wurde in weniger als 20 Sekunden beantwortet, während die Rückgabegeschwindigkeit eine breitere Verteilung hatte.​​​​​​​ Hive ging in diesem Benchmark-Wettbewerb als klarer Sieger hervor, da es massive Parallelität mit Batch-Prozessen unterstützte.

Hive-Architektur

Apache Hive wurde ursprünglich entwickelt, um SQL-Abfragen in MapReduce-Prozesse zu übersetzen. Aufgrund der großen Latenzzeit im Zusammenhang mit der Nutzung von MapReduce zur Ausführung von Abfragen läuft das moderne Hive auf Tez, einem Anwendungsframework, bei dem das Zurückschreiben von Zwischenoperationen auf die Festplatte vermieden wird.

Das Team von Spry führte einen Benchmarking-Test von Hive auf MapReduce im Vergleich zu Hive auf Tez und zwei anderen SQL-on-Hadoop-Engines durch. Hive auf Tez schnitt bei verschiedenen Abfragetypen mindestens genauso gut, in einigen Fällen sogar besser ab, als die schnellste Abfrage-Engine.

Datentypen

Hive kann strukturierte, semistrukturierte (JSON, XML, Protokolle usw.) und unstrukturierte Daten verarbeiten.​​​​​​​ Ein SerDe (Serialisierer, Deserialisierer) kann erforderlich sein, um Hive anzuweisen, wie halb- oder unstrukturierte Daten zu verarbeiten sind.

Zeilenbereich (Menge)

Hive wurde entwickelt, um enorme Anfragen mit gewaltigen Datenmengen zu schreiben. 2014 speicherte Facebook mehr als 300 PB an HiveDaten, wobei tagtäglich 600 TB an neuen Daten erzeugt werden.

Hadoop Hive – Nutzung und Verwaltung

Sobald die Daten in HDFS oder ein anderes verteiltes Dateisystem geladen sind, können Sie über die Daten Hive-Tabellen erstellen.​​​​​​​ Es gibt zwei Arten von Tabellen in Hive, externe und interne (verwaltete) Tabellen. Dadurch können Sie steuern, wie diese Daten geladen, kontrolliert und verwaltet werden. Der Hauptunterschied zwischen den beiden Tabellen besteht darin, dass beim Löschen einer internen Tabelle sowohl die Metadaten als auch die zugrunde liegenden Daten gelöscht werden. Beim Löschen einer externen Tabelle werden lediglich die Metadaten entfernt, die zugrunde liegenden Daten sind jedoch weiterhin auf HDFS vorhanden.

Die Anweisung CREATE TABLE erstellt und definiert eine neue Tabelle in Hive. Die Anweisung CREATE kann eine PARTITIONED-BY-Klausel zur Definition der Partitionierungsspalten enthalten. Die Partitionierung weist Hive an, wie die Datenspeicherung zu strukturieren ist.​​​​​​​ Jede Partition erstellt ein Unterverzeichnis, in dem die Daten für diese bestimmte Partition gespeichert werden.​​​​​​​ Zusätzlich zur Partitionierung unterstützt Hive auch Bucketing, wobei die Daten in jeder Partition in mehrere Dateien mit der CLUSTERED-BY-Klausel gegliedert werden. Bucketing kann die Leistung für bestimmte Arten von Verbindungen verbessern. Am besten funktioniert es für Felder mit hoher Kardinalität.

Nachdem Sie eine Tabelle erstellt haben, können Sie Daten entweder mit dem Befehl LOAD DATA direkt aus einer Datei laden oder mit INSERT aus einer Abfrage einfügen.​​​​​​​

Wartung

Einer der am schnellsten umzusetzenden Vorteile für Ihren Hive-Cluster lässt sich durch ein Upgrade auf Apache Tez erzielen, falls Sie dies noch nicht getan haben. Andere Techniken umfassen die Verwendung verschiedener Dateitypen zur Optimierung der Komprimierung und Lesevorgänge sowie Refactoring Ihrer Tabellenarchitektur zur Maximierung der Abfrageleistung.

Entdecken Sie Ihre Liebe zur Analytik.

Business Intelligence, Big-Data-Analyse oder eine 360°-Ansicht Ihrer Kunden.
Was auch immer Sie benötigen, Looker steht Ihnen zur Seite. Sprechen Sie einfach mit unseren Datenexperten.

Demo anfordern