Apache Hive
Apache Hive ist ein Open Source Data-Warehouse-System zur Abfrage und Analyse großer Datensätze, die hauptsächlich in Hadoop-Dateien gespeichert sind. Es ist in der Regel Teil des Software-Ökosystems, das auf Grundlage des Hadoop-Frameworks für die Verarbeitung großer Datensätze in einer verteilten Umgebung eingesetzt wird.
Wie Hadoop hat auch Hive seine Wurzeln in Stapelverarbeitungstechniken (Batch Processing). Es wurde 2007 von Entwicklern bei Facebook entwickelt, die den Nutzern von Analyseprogrammen einen SQL-Zugriff auf Hadoop-Daten ermöglichen wollten. Wie Hadoop wurde auch Hive entwickelt, um Petabytes von Daten zu verarbeiten, die durch Webaktivitäten anfallen. Version 1.0 wurde im Februar 2015 veröffentlicht.
Wie Apache Hive funktioniert
Ursprünglich stützte sich die Hadoop-Verarbeitung ausschließlich auf das MapReduce-Framework. Dieses setzte voraus, dass die Benutzer fortgeschrittene Java-Programmierverfahren beherrschen, um Daten erfolgreich abfragen zu können. Die Motivation hinter Apache Hive war es, die Entwicklung von Abfragen zu vereinfachen und im Gegenzug unstrukturierte Hadoop-Daten für eine größere Gruppe von Benutzern in Unternehmen zu öffnen.
Hive hat drei Hauptfunktionen: Datenzusammenfassung, Abfrage und Analyse. Es unterstützt Abfragen, die in einer Sprache namens HiveQL oder HQL ausgedrückt werden, einer deklarativen SQL-ähnlichen Sprache, die in ihrer ersten Version SQL-ähnliche Abfragen automatisch in MapReduce-Jobs übersetzte, welche auf der Hadoop-Plattform ausgeführt wurden. Darüber hinaus unterstützte HiveQL benutzerdefinierte MapReduce-Skripte, die in Abfragen eingefügt werden konnten.
Wenn SQL-Abfragen über Hive übermittelt werden, werden sie zunächst von einer Treiberkomponente empfangen, die Session Handles erstellt und Anfragen über Java Database Connectivity/Open Database Connectivity Schnittstellen an einen Compiler weiterleitet, der anschließend Aufträge zur Ausführung weiterleitet. Hive ermöglicht die Serialisierung/Deserialisierung von Daten und erhöht die Flexibilität beim Schemadesign, indem es einen Systemkatalog namens Hive-Metastore enthält.
Wie sich Hive entwickelt hat
Wie Hadoop hat sich auch Hive weiterentwickelt und umfasst nun mehr als nur MapReduce. Die Aufnahme des YARN-Ressourcenmanagers in Hadoop 2.0 half Entwicklern, die Nutzung von Hive zu erweitern, ebenso wie andere Komponenten des Hadoop-Ökosystems. Im Laufe der Zeit hat HiveQL Unterstützung für die Apache Spark SQL-Engine sowie die Hive-Engine erhalten, und sowohl HiveQL als auch die Hive-Engine unterstützen mittlerweile die verteilte Prozessausführung über Apache Tez und Spark.
Die frühe Hive-Datei-Unterstützung umfasste Textdateien (Flat Files), SequenceFiles (Flat Files, die aus binären Schlüssel/Wert-Paaren bestehen) und Record Columnar Files (RCFiles), die Spalten einer Tabelle in einer spaltenbasierten Datenbank speichern). Hive unterstützt inzwischen auch Optimized Row Columnar (ORC) Dateien und Parquet-Dateien.
Die Ausführung und Interaktivität von Hive war fast von Anfang an ein Thema. Das liegt daran, dass die Abfrageleistung hinter bekannteren SQL-Engines zurückblieb. Um die Leistung zu steigern, begannen die Entwickler von Apache Hive im Jahr 2013 mit der Arbeit am Stinger-Projekt, das Apache Tez und die Verarbeitung gerichteter azyklischer Graphen in das Data-Warehouse-System einführte.
Zu Stinger gehörten auch neue Ansätze, die die Leistung durch Hinzufügen eines kostenbasierten Optimierers, von In-Memory-Hash-Joins, einer Vektorabfrage-Engine und anderen Verbesserungen verbesserten. Mittlerweile unterstützt Hive LLAP-Funktionen (Live Long and Process), die das Prefetching und Caching von spaltenbasierten Daten ermöglicht, sowie ACID-Operationen (Atomicity, Consistency, Isolation and Durability) einschließlich INSERT, UPDATE und DELETE. Außerdem gibt es materialisierte Ansichten und automatische Abfrageumschreibungsfunktionen, die den Benutzern traditioneller Data Warehouses vertraut sind.
Wer Hive unterstützt
Zu den Mitwirkenden am Apache-Hive-Projekt gehören Cloudera, Facebook, Intel, LinkedIn, Databricks und andere. Hive wird in Hadoop-Distributionen unterstützt. Wie die NoSQL-Datenbank Apache HBase wird es häufig als Teil von verteilten Hadoop-Anwendungen implementiert.
Hive lässt sich bei der Apache Foundation herunterladen, ist aber auch beim Hadoop-Anbieter Cloudera sowie bei Amazon Web Services (AWS) verfügbar. Letztere Implementierung unterstützt die Analyse von Datensätzen, die sich im Objektspeicher des Simple Storage Service (S3) befinden.
Apache Hive war einer der allerersten Versuche, SQL-Abfragefunktionen in das Hadoop-Ökosystem zu integrieren. Zu den zahlreichen anderen SQL-on-Hadoop-Alternativen, die entstanden sind, gehören BigSQL, Drill, Hadapt, Impala und Presto. Auch Apache Pig hat sich als alternative Sprache zu HiveQL für Hadoop-orientiertes Data Warehousing etabliert.