Was ist Hive? Architektur & Modi

Inhaltsverzeichnis:

Anonim

In diesem Tutorial lernen Sie:

  • Was ist Hive?
  • Hive-Architektur
  • Verschiedene Modi von Hive
  • Was ist Hive Server2 (HS2)?

Was ist Hive?

Hive ist ein ETL- und Data Warehousing-Tool, das auf dem Hadoop Distributed File System (HDFS) basiert. Hive erleichtert die Arbeit für Operationen wie

  • Datenverkapselung
  • Ad-hoc-Abfragen
  • Analyse großer Datenmengen

Wichtige Eigenschaften von Hive

  • In Hive werden zuerst Tabellen und Datenbanken erstellt und dann Daten in diese Tabellen geladen.
  • Hive als Data Warehouse zum Verwalten und Abfragen nur strukturierter Daten, die in Tabellen gespeichert sind.
  • Beim Umgang mit strukturierten Daten verfügt Map Reduce nicht über Optimierungs- und Usability-Funktionen wie UDFs, das Hive-Framework jedoch. Die Abfrageoptimierung bezieht sich auf eine effektive Methode zur Ausführung von Abfragen in Bezug auf die Leistung.
  • Die von SQL inspirierte Sprache von Hive unterscheidet den Benutzer von der Komplexität der Map Reduce-Programmierung. Es verwendet vertraute Konzepte aus der relationalen Datenbankwelt wie Tabellen, Zeilen, Spalten und Schemata usw., um das Lernen zu vereinfachen.
  • 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, dh Metastore, die zum Speichern von Schemainformationen verwendet wird. Dieser Metastore befindet sich normalerweise in einer relationalen Datenbank. Wir können mit Hive mit Methoden wie interagieren
    • Web-GUI
    • JDBC-Schnittstelle (Java Database Connectivity)
  • Die meisten Interaktionen finden in der Regel über eine Befehlszeilenschnittstelle (Command Line Interface, CLI) statt. Hive bietet eine CLI zum Schreiben von Hive-Abfragen mit Hive Query Language (HQL).
  • Im Allgemeinen ähnelt die HQL-Syntax der SQL-Syntax, mit der die meisten Datenanalysten vertraut sind. In der folgenden Beispielabfrage werden alle Datensätze angezeigt, die im genannten Tabellennamen enthalten sind.
    • Beispielabfrage : Wählen Sie * aus
  • Hive unterstützt vier Dateiformate: TEXTFILE, SEQUENCEFILE, ORC und RCFILE (Record Columnar File).
  • Für die Speicherung von Metadaten für Einzelbenutzer verwendet Hive die Derby-Datenbank und für Metadaten für mehrere Benutzer oder gemeinsam genutzte 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 die Hive-Abfrage eher in der Hadoop-Infrastruktur als in der herkömmlichen Datenbank ausgeführt wird.
  • Die Ausführung der Hive-Abfrage wird wie eine Reihe automatisch generierter Jobs zur Kartenreduzierung aussehen.
  • Hive unterstützt Partitions- und Bucket-Konzepte zum einfachen Abrufen von Daten, wenn der Client die Abfrage ausführt.
  • Hive unterstützt benutzerdefinierte UDF (User Defined Functions) zum Bereinigen, Filtern usw. von Daten. Entsprechend den Anforderungen der Programmierer können Hive-UDFs definiert werden.

Hive Vs relationale Datenbanken: -

Mit Hive können wir einige besondere Funktionen ausführen, die in relationalen Datenbanken nicht erreicht werden. Für eine große Datenmenge in Petabytes ist es wichtig, sie abzufragen und Ergebnisse in Sekunden zu erhalten. Und Hive erledigt dies recht effizient, verarbeitet die Abfragen schnell und liefert in Sekundenschnelle Ergebnisse.

Mal sehen, was Hive so schnell macht.

Einige wichtige Unterschiede zwischen Hive- und relationalen Datenbanken sind die folgenden:

Relationale Datenbanken sind " Schema beim Lesen und Schema beim Schreiben ". Zuerst eine Tabelle erstellen, dann Daten in die jeweilige Tabelle einfügen. In relationalen Datenbanktabellen können Funktionen wie Einfügungen, Aktualisierungen und Änderungen ausgeführt werden.

Hive ist " Schema nur beim Lesen ". Funktionen wie das Update, Änderungen usw. funktionieren damit also nicht. Weil die Hive-Abfrage in einem typischen Cluster auf mehreren Datenknoten ausgeführt wird. Es ist daher nicht möglich, Daten über mehrere Knoten hinweg zu aktualisieren und zu ändern (Hive-Versionen unter 0,13).

Außerdem unterstützt Hive das Muster " READ Many WRITE Once ". Dies bedeutet, dass wir die Tabelle nach dem Einfügen der 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 Optionen zum Aktualisieren und Löschen

Hive-Architektur

Der obige Screenshot erklärt die Apache Hive-Architektur im Detail

Bienenstock besteht hauptsächlich aus 3 Kernteilen

  1. Hive-Kunden
  2. Hive Services
  3. Hive Storage und Computing

Hive-Kunden:

Hive bietet verschiedene Treiber für die Kommunikation mit verschiedenen Arten von Anwendungen. Für Thrift-basierte Anwendungen wird der Thrift-Client für die Kommunikation bereitgestellt.

Für Java-bezogene Anwendungen werden JDBC-Treiber bereitgestellt. Anders als bei jeder Art von Anwendung wurden ODBC-Treiber bereitgestellt. Diese Clients und Treiber kommunizieren wiederum wieder mit dem Hive-Server in den Hive-Diensten.

Hive Services:

Client-Interaktionen 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 Services kommunizieren.

CLI ist die Befehlszeilenschnittstelle, die als Hive-Dienst für DDL-Vorgänge (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 clientspezifischen Anwendungen. Der Treiber verarbeitet diese Anforderungen aus verschiedenen Anwendungen zur weiteren Verarbeitung an Metaspeicher- und Feldsysteme.

Hive Storage 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.

Ablauf der Arbeitsausfü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 folgt:

  1. Abfrage über die Benutzeroberfläche ausführen (Benutzeroberfläche)
  2. Der Treiber interagiert mit dem Compiler, um den Plan abzurufen. (Hier bezieht sich Plan auf die Ausführung von Abfragen) und die damit verbundene Erfassung von Metadateninformationen
  3. Der Compiler erstellt den Plan für einen auszuführenden Job. Compiler, der mit dem Meta Store kommuniziert, um eine Metadatenanforderung zu erhalten
  4. Der Metaspeicher sendet Metadateninformationen an den Compiler zurück
  5. Compiler, der mit dem Treiber über den vorgeschlagenen Plan zur Ausführung der Abfrage kommuniziert
  6. Treiber Senden von Ausführungsplänen 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-Operationen.
  • EE sollte zuerst den Namensknoten und dann die Datenknoten kontaktieren, um die in Tabellen gespeicherten Werte zu erhalten.
  • EE wird die gewünschten Datensätze von den Datenknoten abrufen. Die tatsächlichen Daten von Tabellen befinden sich nur im Datenknoten. Während vom Namensknoten nur die Metadateninformationen für die Abfrage abgerufen werden.
  • Es sammelt tatsächliche Daten von Datenknoten, die sich auf die erwähnte Abfrage beziehen
  • 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-Tabellen und -Datenbanken ausgeführt. Der Metaspeicher speichert nur Informationen zu Datenbanknamen, Tabellennamen und Spaltennamen. Es werden Daten abgerufen, die sich auf die erwähnte Abfrage beziehen.
  • Execution Engine (EE) kommuniziert wiederum mit Hadoop-Dämonen wie Name Node, Data Nodes und Job Tracker, um die Abfrage über dem Hadoop-Dateisystem auszuführen
  1. Ergebnisse vom Treiber abrufen
  2. Senden von Ergebnissen an die Execution Engine. Sobald die Ergebnisse von den Datenknoten zum EE abgerufen wurden, werden die Ergebnisse an den Treiber und an die Benutzeroberfläche (Front-End) zurückgesendet.

Hive Kontinuierlicher Kontakt mit dem Hadoop-Dateisystem und seinen Daemons über die Execution Engine. Der gepunktete Pfeil im Jobflussdiagramm zeigt die Kommunikation der Execution Engine mit Hadoop-Daemons.

Verschiedene Modi von Hive

Hive kann abhängig von der Größe der Datenknoten in Hadoop in zwei Modi betrieben werden.

Diese Modi sind:

  • Lokalbetrieb
  • Kartenreduzierungsmodus

Wann wird der lokale Modus verwendet?

  • Wenn der Hadoop im Pseudomodus mit einem Datenknoten installiert ist, verwenden wir Hive in diesem Modus
  • Wenn die Datengröße in Bezug auf die Beschränkung auf einen einzelnen lokalen Computer kleiner ist, können wir diesen Modus verwenden
  • Die Verarbeitung kleinerer Datensätze auf dem lokalen Computer erfolgt sehr schnell

Wann wird der Kartenreduzierungsmodus verwendet?

  • Wenn Hadoop mehrere Datenknoten hat und die Daten auf verschiedene Knoten verteilt sind, verwenden wir Hive in diesem Modus
  • Es wird für eine große Menge von Datensätzen ausgeführt und die Abfrage wird parallel ausgeführt
  • In diesem Modus kann die Verarbeitung großer Datenmengen mit besserer Leistung erreicht werden

In Hive können wir diese Eigenschaft festlegen, um zu erwähnen, welcher Modus Hive funktionieren kann. Standardmäßig funktioniert es im Kartenreduzierungsmodus und für den lokalen Modus können Sie die folgenden Einstellungen vornehmen.

Hive, um im lokalen Modus zu 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 Remoteclients das Ausführen von Abfragen für Hive
  • Rufen Sie die Ergebnisse der genannten Abfragen ab

Ab der neuesten Version hat es einige erweiterte Funktionen, die auf Thrift RPC basieren, wie z.

  • Parallelität mit mehreren Clients
  • Authentifizierung

Zusammenfassung:

Hive ist ein ETL- und Data Warehouse-Tool, das auf dem Hadoop-Ökosystem aufbaut und zur Verarbeitung strukturierter und halbstrukturierter Daten verwendet wird.

  • Hive ist eine Datenbank, die im Hadoop-Ökosystem vorhanden ist und DDL- und DML-Operationen ausführt. Sie bietet eine flexible Abfragesprache wie HQL für eine bessere Abfrage und Verarbeitung von Daten.
  • Es bietet so viele Funktionen im Vergleich zu RDMS, die bestimmte Einschränkungen aufweisen.

Für benutzerspezifische Logik zur Erfüllung der Clientanforderungen.

  • Es bietet die Möglichkeit, benutzerdefinierte Skripts und benutzerdefinierte Funktionen zu schreiben und bereitzustellen.
  • Darüber hinaus werden Partitionen und Buckets für speicherspezifische Logiken bereitgestellt.