Suchen

Definition Was ist Hive?

| Autor / Redakteur: Dipl.-Ing. (FH) Stefan Luber / Nico Litzel

Apache Hive erweitert das Big Data Framework Hadoop um die Funktionalität eines Data-Warehouse-Systems. Es ermöglicht das performante Abfragen, Zusammenfassen und Analysieren von unstrukturierten Daten mithilfe einer auf SQL basierenden Datenbanksprache.

Firmen zum Thema

(Bild: © aga7ta - stock.adobe.com)

Bei Apache Hive handelt es sich um eine Erweiterung für Hadoop, die es gestattet, unstrukturiert vorliegende Daten mit der SQL-ähnlichen Datenbanksprache HiveQL abzufragen, zusammenzufassen und zu analysieren. Hive erweitert quasi Hadoop um ein Open-Source-Data-Warehouse-System. Entwickler und Anwender greifen dank Hive auf eine SQL:1999-ähnliche Syntax für ihre Anwendungen oder Programme zu. Die Daten können in unterschiedlichster Form in verschiedenen Datenbanken von Hadoop gespeichert sein. Die HiveQL-Abfragen werden in das für das Datenbanksystem benötigte Format übersetzt beispielsweise in MapReduce-Jobs. Damit bietet Hive zusätzliche Kompatibilität für SQL-basierte Anwendungen im Hadoop-Umfeld.

Da SQL-Kenntnisse weit verbreitet sind, ist es auch Nichtspezialisten möglich, mit Hive und Hadoop zu arbeiten. Im Big-Data- und Hadoop-Umfeld hat sich HiveQL zu einer Art Standard für das Arbeiten mit großen Datenmengen entwickelt. Es werden Standard-Operationen wie Filter, Joins oder Aggregationen zur Verfügung gestellt, die nicht individuell zu entwickeln sind. Hive arbeitet nicht wie relationale Datenbanken mit dem Schema-on-Write-Ansatz (SoW), sondern verwendet den so genannten Schema-on-Read-Ansatz (SoR). Dabei werden die Daten weiterhin unverändert in Hadoop gespeichert und erst bei einer Anfrage gegen ein bestimmtes Schema geprüft. Es ergibt sich dadurch der Vorteil, dass ein wesentlich schnelleres Laden von Daten möglich wird. Zudem lassen sich unterschiedliche Schemata auf den gleichen Datenbestand anwenden.

Die wichtigsten Funktionen von Hive

Hive stellt zahlreiche Funktionen bereit. Es unterstützt die Analyse von großen in Hadoop-Formaten und -Filesystemen gespeicherten Datenmengen. Zudem bietet es eine SQL-ähnliche Abfragesprache, die Kommandos beispielsweise in MapReduce, Apache Tez oder Spark-Jobs übersetzt. Um die Abfragegeschwindigkeit zu steigern, stellt Apache Hive geeignete Indices zur Verfügung. Weitere Funktionen von Apache Hive sind:

  • Die Bereitstellung unterschiedlicher Speichertypen wie Text, HBase, RCFile oder weitere,
  • das Speichern von Metadaten in einem relationalen Datenbankmanagementsystem,
  • das Arbeiten mit im Hadoop-System komprimiert vorliegenden Daten sowie
  • die Bereitstellung von UDFs (User Defined Functions) für umfangreiche Funktionen der Datenmanipulation und des Data-Minings.

Die wichtigsten Komponenten

Die wichtigsten Komponenten der Hive-Architektur sind:

  • Der Metastore,
  • der Driver, bestehend aus Compiler, Optimizer und Executor,
  • das Command Line und User Interface (CLI und UI) und
  • der Thrift Server.

Eine Art Zentrale in der Hive-Architektur stellt der Driver bestehend aus Compiler, Optimizer und Executor dar. Er agiert wie ein zentraler Controller, der auf der einen Seite HiveQL-Kommandos entgegennimmt und die Ausführung in Richtung Hadoop-System verantwortet. Der Compiler übersetzt die HiveQL-Abfragen in die abstrakte Syntax und ausführbare Tasks. Diese werden durch den Optimizer gegebenenfalls aggregiert oder gesplittet und optimiert.

Ziel des Optimizers ist es, für eine bessere Performance und Skalierbarkeit zu sorgen. Nach dem Kompilieren und Optimieren übernimmt der Executor die Tasks. Er interagiert mit dem Job-Tracker von Hadoop und übergibt sie dem System zur Ausführung. Dabei beachtet er eventuell bestehende Abhängigkeiten zwischen den verschiedenen Tasks. Der Driver fungiert zudem als Sammelpunkt für die nach der Ausführung erhaltenen Daten.

Die Aufgabe des Metastores besteht darin, Metadaten für die verschiedenen Tabellen zu speichern. Dazu zählen auch die Partitions-Metadaten, die dem Driver helfen, Aufgaben zu überwachen, die sich auf verschiedene Data-Sets eines Clusters verteilen. Der Metastore nutzt hierfür das klassische Format relationaler Datenbankmanagementsysteme. Da die im Metastore abgelegten Daten für das komplette System sehr wichtig sind, erfolgen in regelmäßigen Abständen Replikationen durch einen Backup-Server.

Das Command Line und User Interface (CLI und UI) stellt die Schnittstelle für die externen Anwender bereit. Über den Thrift Server ist es den externen Clients möglich, per Netzwerk mit Hive zu kommunizieren und zu interagieren. Es kommen hierfür JDBC- (Java Database Connectivity) und ODBC-ähnliche (Open Database Connectivity) Protokolle zum Einsatz.

HiveQL – die SQL-ähnliche Datenbanksprache von Hive

HiveQL basiert zwar auf SQL, ist aber nicht vollständig konform zu Standards wie SQL-92. Es kann als eine Art SQL-Dialekt verstanden werden und ist dem MySQL-Dialekt in bestimmten Zusammenhängen ähnlich. Allerdings existieren einige grundlegende Unterschiede und Abweichungen. Zahlreiche Funktionen werden nicht unterstützt, dafür sind viele Erweiterungen integriert, die für eine höhere Performance im Hadoop-Umfeld oder für eine bessere Erweiterbarkeit sorgen. Zu den Erweiterungen zählen zum Beispiel Multitable Inserts. In HiveQL fehlen Funktionen für Transaktionen. Subqueries werden nur bedingt unterstützt.

(ID:44956849)

Über den Autor