Was ist Hive? Architektur & Modi
Was ist Hive?
Hive ist ein ETL- und Data Warehousing-Tool, das auf Basis des Hadoop Distributed File System (HDFS) entwickelt wurde. Hive erleichtert die Durchführung von Operationen wie
- Datenverkapselung
- Ad-hoc-Abfragen
- Analyse großer Datensätze
Wichtige Eigenschaften von Hive
- In Hive werden zunächst Tabellen und Datenbanken erstellt und dann werden Daten in diese Tabellen geladen.
- Hive ist ein Data Warehouse, das nur für die Verwaltung und Abfrage strukturierter Daten konzipiert ist, die in Tabellen gespeichert sind.
- Beim Umgang mit strukturierten Daten verfügt Map Reduce nicht über Optimierungs- und Benutzerfreundlichkeitsfunktionen wie UDFs, das Hive-Framework jedoch schon. Die Abfrageoptimierung bezieht sich auf eine effektive Art der Abfrageausführung im Hinblick auf die Leistung.
- Die von SQL inspirierte Sprache von Hive entlastet den Benutzer von der Komplexität der Map-Reduce-Programmierung. Sie verwendet bekannte Konzepte aus der Welt der relationalen Datenbanken wie Tabellen, Zeilen, Spalten und Schemata usw., um das Erlernen zu erleichtern.
- Die Programmierung von Hadoop funktioniert mit Flatfiles. Daher kann Hive Verzeichnisstrukturen verwenden, um Daten zu „partitionieren“, um die Leistung bei bestimmten Abfragen zu verbessern.
- Eine neue und wichtige Komponente von Hive, nämlich Metastore, wird zum Speichern von Schemainformationen verwendet. Dieser Metastore befindet sich normalerweise in einer relationalen Datenbank. Wir können mit Hive interagieren, indem wir Methoden wie verwenden
- Web-GUI
- Java Datenbankkonnektivitätsschnittstelle (JDBC)
- Die meisten Interaktionen finden in der Regel über eine Befehlszeilenschnittstelle (CLI) statt. Hive bietet eine CLI zum Schreiben von Hive-Abfragen mithilfe der Hive Query Language (HQL).
- Im Allgemeinen ähnelt die HQL-Syntax der SQL Syntax, mit der die meisten Datenanalysten vertraut sind. Die folgende Beispielabfrage zeigt alle im genannten Tabellennamen vorhandenen Datensätze an.
- Beispielabfrage : Wählen aus
- Hive unterstützt vier Dateiformate TEXTFILE, SEQUENCEFILE, ORC und RCFILE (Spaltendatei aufzeichnen).
- Zur Metadatenspeicherung für einzelne Benutzer verwendet Hive eine Derby-Datenbank und für Metadaten für mehrere Benutzer oder gemeinsam genutzte Metadaten verwendet Hive MySQL.
Zum Aufstellen MySQL als Datenbank und zum Speichern von Metadaten-Informationsprüfungs-Tutorial „Installation und Konfiguration von HIVE und MYSQL“
Einige der wichtigsten Punkte zu Hive:
- Der Hauptunterschied zwischen HQL und SQL besteht darin, dass Hive-Abfragen auf der Hadoop-Infrastruktur und nicht auf der herkömmlichen Datenbank ausgeführt werden.
- Die Ausführung der Hive-Abfrage erfolgt wie eine Reihe automatisch generierter Kartenreduzierungsjobs.
- Hive unterstützt Partitions- und Bucket-Konzepte zum einfachen Abrufen von Daten, wenn der Client die Abfrage ausführt.
- Hive unterstützt kundenspezifische UDFs (User Defined Functions) zur Datenbereinigung, Filterung usw. Entsprechend den Anforderungen der Programmierer können Hive-UDFs definiert werden.
Hive vs. relationale Datenbanken
Durch die Verwendung von Hive können wir einige besondere Funktionen ausführen, die in relationalen Datenbanken nicht möglich sind. Bei großen Datenmengen im Petabyte-Bereich ist es wichtig, sie abzufragen und in Sekundenschnelle Ergebnisse zu erhalten. Und Hive erledigt dies recht effizient, es verarbeitet die Abfragen schnell und liefert in Sekundenschnelle Ergebnisse.
Schauen wir uns nun an, was Hive so schnell macht.
Einige wichtige Unterschiede zwischen Hive und relationalen Datenbanken sind die folgenden:
Relationale Datenbanken sind von „Schema beim Lesen und Schema beim Schreiben„. Erstellen Sie zunächst eine Tabelle und fügen Sie dann Daten in die jeweilige Tabelle ein. An relationalen Datenbanktabellen können Funktionen wie Einfügungen, Aktualisierungen und Änderungen ausgeführt werden.
Bienenstock ist „Schema nur beim Lesen„. Funktionen wie Update, Modifikationen usw. funktionieren damit also nicht. Denn die Hive-Abfrage in einem typischen Cluster läuft auf mehreren Datenknoten. Es ist also nicht möglich, Daten über mehrere Knoten hinweg zu aktualisieren und zu modifizieren. (Hive-Versionen unter 0.13)
Außerdem unterstützt Hive „LESEN SIE VIELE, SCHREIBEN SIE EINMAL" Muster. Das bedeutet, dass wir nach dem Einfügen der Tabelle die Tabelle in den neuesten Hive-Versionen aktualisieren können.
HINWEIS: Die neue Version von Hive verfügt jedoch über aktualisierte Funktionen. Hive-Versionen (Hive 0.14) bieten als neue Funktionen Aktualisierungs- und Löschoptionen
Bienenstock Architektur
Der obige Screenshot erklärt das Apache Hive-Architektur im Detail
Bienenstock besteht hauptsächlich aus 3 Kernteilen
- Hive-Clients
- Hive-Dienste
- Hive-Speicher und Computing
Hive-Kunden:
Hive bietet verschiedene Treiber für die Kommunikation mit unterschiedlichen Anwendungstypen. Für Thrift-basierte Anwendungen wird ein Thrift-Client für die Kommunikation bereitgestellt.
Für Java Für verwandte Anwendungen werden JDBC-Treiber bereitgestellt. Im Gegensatz zu allen Arten von Anwendungen werden ODBC-Treiber bereitgestellt. Diese Clients und Treiber kommunizieren wiederum mit dem Hive-Server in den Hive-Diensten.
Bienenstock-Dienstleistungen:
Clientinteraktionen mit Hive können über Hive Services durchgeführt werden. Wenn der Client abfragebezogene Vorgänge in Hive durchführen möchte, muss er über Hive Services kommunizieren.
CLI ist die Befehlszeilenschnittstelle, die als Hive-Dienst für DDL-Operationen (Data Definition Language) fungiert. Alle Treiber kommunizieren mit dem Hive-Server und dem Haupttreiber in den Hive-Diensten, wie im obigen Architekturdiagramm gezeigt.
Der in den Hive-Diensten vorhandene Treiber stellt den Haupttreiber dar und kommuniziert alle Arten von JDBC, ODBC und anderen kundenspezifischen Anwendungen. Der Treiber verarbeitet diese Anfragen von verschiedenen Anwendungen zur weiteren Verarbeitung an Meta-Store- und Feldsysteme.
Hive-Speicher und Computing:
Hive-Dienste wie Meta Store, Dateisystem und Job Client kommunizieren wiederum mit dem Hive-Speicher und führen die folgenden Aktionen aus
- Metadateninformationen von in Hive erstellten Tabellen werden in der „Meta-Speicherdatenbank“ von Hive gespeichert.
- Abfrageergebnisse und in die Tabellen geladene Daten werden im Hadoop-Cluster auf HDFS gespeichert.
Jobausführungsablauf:
Aus dem obigen Screenshot können wir den Ablauf der Jobausführung in Hive mit Hadoop verstehen
Der Datenfluss in Hive verhält sich nach folgendem Muster:
- Ausführen einer Abfrage über die Benutzeroberfläche (Benutzeroberfläche)
- Der Treiber interagiert mit dem Compiler, um den Plan abzurufen. (Hier bezieht sich Plan auf die Abfrageausführung) Prozess und die damit verbundene Erfassung von Metadateninformationen
- Der Compiler erstellt den Plan für die Ausführung eines Jobs. Der Compiler kommuniziert mit dem Metaspeicher, um eine Metadatenanforderung abzurufen
- Der Metaspeicher sendet Metadateninformationen zurück an den Compiler
- Der Compiler kommuniziert mit dem Treiber mit dem vorgeschlagenen Plan zur Ausführung der Abfrage
- Treiber sendet Ausführungspläne an die Ausführungs-Engine
- Die Execution Engine (EE) fungiert als Brücke zwischen Hive und Hadoop, um die Abfrage zu verarbeiten. Für DFS-Operationen.
- EE sollte zuerst den Namensknoten und dann die Datenknoten kontaktieren, um die in Tabellen gespeicherten Werte zu erhalten.
- EE ruft die gewünschten Datensätze von Datenknoten ab. Die tatsächlichen Daten der Tabellen befinden sich nur im Datenknoten. Vom Namensknoten werden nur die Metadateninformationen für die Abfrage abgerufen.
- Es sammelt tatsächliche Daten von Datenknoten, die sich auf die genannte Abfrage beziehen
- Die Execution Engine (EE) kommuniziert bidirektional mit dem in Hive vorhandenen Meta Store, um DDL-Operationen (Data Definition Language) auszuführen. Hier werden DDL-Operationen wie CREATE, DROP und ALTERING von Tabellen und Datenbanken ausgeführt. Der Meta Store speichert nur Informationen über Datenbanknamen, Tabellennamen und Spaltennamen. Er ruft Daten ab, die mit der erwähnten Abfrage in Zusammenhang stehen.
- Die Execution Engine (EE) wiederum kommuniziert mit Hadoop-Daemons wie Namensknoten, Datenknoten und Job-Tracker, um die Abfrage auf dem Hadoop-Dateisystem auszuführen
- Ergebnisse vom Treiber abrufen
- Ergebnisse an die Ausführungs-Engine senden. Sobald die Ergebnisse von den Datenknoten zum EE abgerufen wurden, werden die Ergebnisse zurück an den Treiber und an die Benutzeroberfläche (Frontend) gesendet.
Hive steht über die Ausführungs-Engine ständig in Kontakt mit dem Hadoop-Dateisystem und seinen Daemons. Der gepunktete Pfeil im Jobflussdiagramm zeigt die Kommunikation der Ausführungs-Engine mit Hadoop-Daemons.
Verschiedene Hive-Modi
Hive kann je nach Größe der Datenknoten in Hadoop in zwei Modi betrieben werden.
Diese Modi sind:
- Lokalbetrieb
- Kartenreduzierungsmodus
Wann sollte der lokale Modus verwendet werden:
- Wenn Hadoop im Pseudomodus mit einem Datenknoten installiert ist, verwenden wir Hive in diesem Modus
- Wenn die Datengröße im Hinblick auf die Beschränkung auf einen einzelnen lokalen Computer kleiner ist, können wir diesen Modus verwenden
- Die Verarbeitung erfolgt bei kleineren Datensätzen, die auf dem lokalen Computer vorhanden sind, sehr schnell
Wann sollte der Kartenreduzierungsmodus verwendet werden:
- Wenn Hadoop über mehrere Datenknoten verfügt und die Daten auf verschiedene Knoten verteilt sind, verwenden wir Hive in diesem Modus
- Es wird für große Mengen an Datensätzen und Abfragen verwendet, die parallel ausgeführt werden
- Durch diesen Modus kann die Verarbeitung großer Datensätze mit besserer Leistung erreicht werden
In Hive können wir diese Eigenschaft festlegen, um anzugeben, in welchem Modus Hive arbeiten kann. Standardmäßig funktioniert es im Map Reduce-Modus und für den lokalen Modus können Sie die folgende Einstellung haben.
Hive soll im lokalen Modus arbeiten
SET mapred.job.tracker=local;
Ab der Hive-Version 0.7 wird ein Modus zum automatischen Ausführen von Map-Reduction-Jobs im lokalen Modus unterstützt.
Was ist Hive Server2 (HS2)?
HiveServer2 (HS2) ist eine Serverschnittstelle, die folgende Funktionen ausführt:
- Ermöglicht Remote-Clients die Ausführung von Abfragen für Hive
- Rufen Sie die Ergebnisse der genannten Abfragen ab
Ab der neuesten Version verfügt es über einige erweiterte Funktionen, die auf Thrift RPC basieren, wie z.
- Parallelität mehrerer Clients
- Authentifizierung
Zusammenfassung
Hive ist ein ETL- und Data-Warehouse-Tool, das auf dem Hadoop-Ökosystem basiert und zur Verarbeitung strukturierter und halbstrukturierter Daten verwendet wird.
- Hive ist eine im Hadoop-Ökosystem vorhandene Datenbank, die DDL- und DML-Operationen ausführt und eine flexible Abfragesprache wie HQL für eine bessere Abfrage und Verarbeitung von Daten bereitstellt.
- Es bietet im Vergleich zu RDMS so viele Funktionen, dass es gewisse Einschränkungen gibt.
Für benutzerspezifische Logik zur Erfüllung der Kundenanforderungen.
- Es bietet die Möglichkeit, benutzerdefinierte Skripte und benutzerdefinierte Funktionen zu schreiben und bereitzustellen.
- Darüber hinaus stellt es Partitionen und Buckets für speicherspezifische Logiken bereit.