Was ist Hive? Architektur & Modi

Was ist Hive?

Hive ist ein ETL- und Data-Warehousing-Tool, das auf dem Hadoop Distributed File System (HDFS) basiert. Hive erleichtert die Durchführung von Vorgängen wie z

  • 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 SQL-inspirierte Sprache von Hive trennt den Benutzer von der KommunikationplexFunktionalität der Map Reduce-Programmierung. Es verwendet bekannte Konzepte aus der Welt der relationalen Datenbanken wie Tabellen, Zeilen, Spalten und Schemata usw., um das Lernen 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 Database Connectivity (JDBC)-Schnittstelle
  • 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).
  • Für die Speicherung von Metadaten einzelner Benutzer verwendet Hive eine Derby-Datenbank und für Metadaten mehrerer Benutzer oder gemeinsam genutzter Metadaten verwendet Hive MYSQL.

Informationen zum Einrichten von MySQL als Datenbank und zum Speichern von Metadateninformationen finden Sie im 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 wesentliche Unterschiede zwischen Hive und relationalen Datenbanken sind die folgendenwing;

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 etc. funktionieren damit also nicht. Weil die Hive-Abfrage in einem typischen Cluster auf mehreren Datenknoten ausgeführt wird. Daher ist es nicht möglich, Daten über mehrere Knoten hinweg zu aktualisieren und zu ändern. (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

Bienenstock Architektur

Der obige Screenshot erklärt das Apache Bienenstock architecture in detail

Bienenstock besteht hauptsächlich aus 3 Kernteilen

  1. Hive-Clients
  2. Hive-Dienste
  3. 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.

Aussichten für Javac 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:

Kundeninteraktionen mit Hive können über Hive Services durchgeführt werden. Wenn der Client abfragebezogene Vorgänge in Hive ausführen möchte, muss er über Hive-Dienste kommunizieren.

CLI is the command line interface acts as Hive service for DDL (Data definition Language) operations. All drivers communicate with Hive server and to the main driver in Hive services as shown in above architecture diagram.

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 Folgendes auswing Aktionen

  • 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:

Ablauf der Auftragsausführung

Aus dem obigen Screenshot können wir den Ablauf der Jobausführung in Hive mit Hadoop verstehen

Der Datenfluss in Hive verhält sich wie folgtwing Muster;

  1. Ausführen einer Abfrage über die Benutzeroberfläche (Benutzeroberfläche)
  2. 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
  3. Der Compiler erstellt den Plan für die Ausführung eines Jobs. Der Compiler kommuniziert mit dem Metaspeicher, um eine Metadatenanforderung abzurufen
  4. Der Metaspeicher sendet Metadateninformationen zurück an den Compiler
  5. Der Compiler kommuniziert mit dem Treiber mit dem vorgeschlagenen Plan zur Ausführung der Abfrage
  6. Treiber sendet Ausführungspläne an die Ausführungs-Engine
  7. Die Execution Engine (EE) fungiert als Brücke zwischen Hive und Hadoop, um die Abfrage zu verarbeiten. Für DFS-Vorgänge.
  • 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 Metaspeicher, um DDL-Operationen (Data Definition Language) auszuführen. Hier werden DDL-Operationen wie CREATE, DROP und ALTERING von Tabellen und Datenbanken durchgeführt. Der Metaspeicher speichert nur Informationen über Datenbanknamen, Tabellennamen und Spaltennamen. Es werden Daten im Zusammenhang mit der genannten Abfrage abgerufen.
  • Die Execution Engine (EE) wiederum kommuniziert mit Hadoop-Daemons wie Namensknoten, Datenknoten und Job-Tracker, um die Abfrage auf dem Hadoop-Dateisystem auszuführen
  1. Ergebnisse vom Treiber abrufen
  2. 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

Abhängig von der Größe der Datenknoten in Hadoop kann Hive 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 Kartenreduzierungsmodus und für den lokalen Modus können Sie Folgendes verwendenwing Einstellung.

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 Folgendes ausführtwing Funktionen:

  • 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
  • Beglaubigung

Zusammenfassung

Hive ist ein ETL- und Data-Warehouse-Tool auf Basis von Hadoop ecosSystem und wird zur Verarbeitung strukturierter und halbstrukturierter Daten verwendet.

  • Hive ist eine in Hadoop vorhandene Datenbank ecosDas System führt DDL- und DML-Operationen aus und bietet eine flexible Abfragesprache wie HQL für eine bessere Abfrage und Verarbeitung von Daten.
  • 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.