Was ist Hive? Architektur & Modi

⚡ Intelligente Zusammenfassung

Hive ist die SQL-Schicht des Hadoop-Ökosystems und wandelt HiveQL-Anweisungen in verteilte Jobs um, die bereits auf HDFS vorhandene strukturierte Daten lesen, sodass Analysten Petabyte-Tabellen abfragen können, ohne selbst MapReduce-Code schreiben zu müssen.

  • 🐝 Was es ist: Ein ETL- und Data-Warehousing-Tool, das Tabellen, Zeilen und Spalten zu in HDFS gespeicherten Dateien hinzufügt.
  • 🗂️ Metastore: Schemainformationen befinden sich in einem relationalen Metastore, der von Derby für einen Benutzer und von MySQL für gemeinsamen Zugriff.
  • 🆚 Gegen ein RDBMS: Hive validiert das Schema beim Lesen, skaliert horizontal und bevorzugt große Scans gegenüber den zeilenweisen Aktualisierungen, die eine Datenbank durchführt.
  • ???? ️ Drei Schichten: Clients, Dienste und Speicher bilden die Architektur, wobei der Treiber Compiler, Metastore und Ausführungs-Engine koordiniert.
  • 🔀 Zwei Modi: Der lokale Modus eignet sich für einen einzelnen Datenknoten und kleine Dateien, während der MapReduce-Modus die Ausführung über einen Cluster mit mehreren Knoten verteilt.
  • ???? HiveServer2: Die auf Thrift basierende HS2-Schnittstelle bietet Multi-Client-Parallelität und Authentifizierung für Remote-Sitzungen.

Hive-Architektur und Modi

Was ist Hive?

Hive ist ein ETL- und Data-Warehousing-Tool, das auf dem Hadoop Distributed File System (HDFS) basiert. Hive vereinfacht Operationen wie beispielsweise

  • Datenverkapselung
  • Ad-hoc-Abfragen
  • Analyse großer Datensätze

Wichtige Eigenschaften von Hive

Die folgenden Punkte erläutern, was Hive von einem einfachen MapReduce-Programm unterscheidet.

  • In Hive werden zunächst Tabellen und Datenbanken erstellt und dann werden Daten in diese Tabellen geladen.
  • Hive ist ein Data Warehouse, das ausschließlich für die Verwaltung und Abfrage strukturierter Daten konzipiert ist, die in Tabellen gespeichert sind.
  • MapReduce bietet bei der Verarbeitung strukturierter Daten keine Optimierungs- und Benutzerfreundlichkeitsfunktionen wie UDFs, das Hive-Framework hingegen schon. Query-Optimierung bezeichnet eine effiziente Abfrageausführung im Hinblick auf die Performance.
  • Die SQL-inspirierte Sprache von Hive entlastet den Benutzer von der Komplexität der MapReduce-Programmierung. Sie verwendet vertraute Konzepte aus der Welt der relationalen Datenbanken, wie Tabellen, Zeilen, Spalten und Schemata, um das Erlernen zu vereinfachen.
  • Hadoop arbeitet mit flachen Dateien. Daher kann Hive Verzeichnisstrukturen verwenden, um „Teilung“ Daten zur Verbesserung der Leistung bei bestimmten Abfragen.
  • Ein wichtiger Bestandteil von Hive ist der Metastore, der zur Speicherung von Schemainformationen dient. Dieser Metastore befindet sich typischerweise in einer relationalen Datenbank. Wir können mit Hive über Methoden wie die folgenden interagieren:
    • Web-GUI
    • Java Datenbankkonnektivitätsschnittstelle (JDBC)
  • Die meisten Interaktionen erfolgen in der Regel über eine Befehlszeilenschnittstelle (CLI). 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 Datensätze der genannten Tabelle an.
    • Beispielabfrage : Wählen aus
  • Hive unterstützt vier Dateiformate, nämlich: TEXTFILE, SEQUENCEFILE, ORC und RCFILE (Spaltendatei aufzeichnen).
  • Für die Metadatenspeicherung durch Einzelbenutzer verwendet Hive die Derby-Datenbank, und für Metadaten durch mehrere Benutzer oder gemeinsam genutzte Benutzer verwendet Hive die Derby-Datenbank. MySQL.

Zum Aufstellen MySQL als Datenbank und zum Speichern von Metadateninformationen, siehe das Tutorial auf Konfiguration des Hive-Metastores mit MySQL, was sich an die Installationsanleitung für Bienenstöcke.

Einige der wichtigsten Punkte zu Hive:

  • Der Hauptunterschied zwischen HQL und SQL besteht darin, dass eine Hive-Abfrage auf der Hadoop-Infrastruktur und nicht auf einer herkömmlichen Datenbank ausgeführt wird.
  • Die Ausführung von Hive-Abfragen ist eine Reihe automatisch generierter Abfragen. MapReduce Arbeitsplätze.
  • Hive unterstützt Partitionierungs- und Bucket-Konzepte, um den Datenabruf beim Ausführen der Abfrage durch den Client zu vereinfachen.
  • Hive unterstützt benutzerdefinierte Benutzerdefinierte Funktionen (UDFs) Zur Datenbereinigung, Filterung und ähnlichen Aufgaben. Entsprechend den Anforderungen der Programmierer können Hive-UDFs definiert werden.

Hive vs. relationale Datenbanken

Hive bietet Funktionen, die relationale Datenbanken nicht bieten können. Bei Datenmengen im Petabyte-Bereich ist die Reaktionszeit auf Ergebnisse in Sekundenschnelle entscheidend, und Hive erfüllt diese Anforderung effizient. Die wichtigsten Unterschiede sind folgende.

Relationale Datenbanken sind von „Schema beim Lesen und Schema beim Schreiben“Zuerst wird eine Tabelle erstellt, dann werden Daten in diese Tabelle eingefügt. In relationalen Datenbanktabellen können Funktionen wie Einfügungen, Aktualisierungen und Änderungen durchgeführt werden.

Hive ist „Schema schreibgeschützt“Funktionen wie Aktualisieren und Ändern funktionierten in frühen Versionen nicht, da eine Hive-Abfrage in einem typischen Cluster über mehrere DataNodes ausgeführt wird, was es unmöglich machte, Daten über mehrere Knoten hinweg zu aktualisieren und zu ändern (Hive-Versionen unter 0.13).

Hive unterstützt auch die „Lies viel, schreibe nur einmal.“ Muster, sodass in neueren Versionen eine Tabelle auch nach dem Einfügen aktualisiert werden kann.

Anmerkungen: Neuere Versionen von Hive bieten aktualisierte Funktionen. Hive 0.14 führte UPDATE und DELETE als neue Funktionen ein, und spätere Versionen fügten die vollständige Unterstützung für ACID-Transaktionen hinzu.

Die folgende Tabelle fasst den Vergleich zusammen.

Aspekt Relationale Datenbank Apache Hive
Schemavalidierung Beim Schreiben Gelesen
Typisches Datenvolumen Gigabytes bis Terabytes Terabytes bis Petabytes
Arbeitsbelastung OLTP-Lese- und Schreibvorgänge auf Zeilenebene Vollständige Stapelanalyse
Abfragesprache SQL HQL, ein von SQL inspirierter Dialekt
Ausführung Datenbank-Engine Verteilte Cluster-Jobs

Hive Architektur

Das folgende Diagramm erklärt die Apache Bienenstockarchitektur im Detail.

Apache Hive-Architekturdiagramm mit Clients, Diensten, Speicher und Rechenkapazität

Hive besteht im Wesentlichen aus 3 Kernkomponenten:

  1. Hive-Clients
  2. Hive-Dienste
  3. Hive-Speicherung und -Verarbeitung

Hive-Clients

Hive bietet verschiedene Treiber für die Kommunikation mit unterschiedlichen Anwendungstypen. Für Thrift-basierte Anwendungen stellt es einen Thrift-Client zur Verfügung.

Für Java Für verwandte Anwendungen stellt es JDBC-Treiber bereit. Für alle anderen Anwendungstypen stellt es ODBC-Treiber bereit. Diese Clients und Treiber kommunizieren wiederum mit dem Hive-Server in den Hive-Diensten.

Hive-Dienste

Die Interaktion des Clients mit Hive erfolgt über Hive-Dienste. Wenn der Client eine Abfrage in Hive durchführen möchte, muss er über die Hive-Dienste kommunizieren.

Die CLI fungiert als Hive-Dienst für DDL-Operationen. Alle Treiber kommunizieren mit dem Hive-Server und dem Haupttreiber in den Hive-Diensten, wie im obigen Architekturdiagramm dargestellt.

Der Treiber in Hive-Diensten ist der Haupttreiber: Er kommuniziert mit JDBC, ODBC und anderen clientseitigen Anwendungen und leitet deren Anfragen dann zur weiteren Verarbeitung an den Metastore und das Dateisystem weiter.

Hive-Speicher und Computing

Hive-Dienste wie der Metastore, das Dateisystem und der Jobclient kommunizieren ihrerseits mit dem Hive-Speicher und führen die folgenden Aktionen aus:

  • Metadateninformationen über in Hive erstellte Tabellen werden in Hive gespeichert. Metastore-Datenbank.
  • Die Abfrageergebnisse und die in die Tabellen geladenen Daten werden im Hadoop-Cluster gespeichert. HDFS.

Ablauf der Jobausführung

Das untenstehende Diagramm traces ist eine Abfrage von der Benutzeroberfläche zu den DataNodes und zurück.

Ablaufdiagramm für die Jobausführung in Hive tracEine Abfrage von der Benutzeroberfläche an die DataNodes senden

Aus dem obigen Diagramm lässt sich der Ablauf der Jobausführung in Hive mit Hadoop nachvollziehen. Der Datenfluss in Hive folgt folgendem Muster.

  1. Ausführen einer Abfrage über die Benutzeroberfläche (UI)
  2. Der Treiber interagiert mit dem Compiler, um den Ausführungsplan zu erhalten. (Hier bezieht sich der Ausführungsplan auf den Abfrageausführungsprozess und die damit verbundene Erfassung von Metadateninformationen.)
  3. Der Compiler erstellt den Ausführungsplan für den Job. Der Compiler kommuniziert mit dem Metastore, um die Metadatenanforderung zu erhalten.
  4. Der Metastore sendet Metadateninformationen an den Compiler zurück.
  5. Der Compiler übermittelt dem Treiber den vorgeschlagenen Plan zur Ausführung der Abfrage.
  6. Der Treiber sendet Ausführungspläne an die Ausführungs-Engine.
  7. Die Ausführungs-Engine (EE) fungiert als Brücke zwischen Hive und Hadoop zur Verarbeitung der Abfrage, einschließlich DFS-Operationen:
    • Der EE kontaktiert zuerst den NameNode und dann die DataNodes, um die in Tabellen gespeicherten Werte abzurufen.
    • Die EE ruft die gewünschten Datensätze von den DataNodes ab. Die eigentlichen Tabellendaten befinden sich ausschließlich auf den DataNodes; vom NameNode werden lediglich Metadaten für die Abfrage abgerufen.
    • Es sammelt tatsächliche Daten von den Datenknoten, die mit der genannten Abfrage in Zusammenhang stehen.
    • Die EE kommuniziert bidirektional mit dem Metastore, um DDL-Operationen (Data Definition Language) durchzuführen, wie zum Beispiel ERSTELLEN, LÖSCHEN und ÄNDERN auf Tabellen und Datenbanken. Der Metastore speichert nur Datenbank-, Tabellen- und Spaltennamen.
    • Die EE wiederum kommuniziert mit Hadoop-Daemons wie dem NameNode, den DataNodes und dem Job. tracker, um die Abfrage auf dem Hadoop-Dateisystem auszuführen
  1. Ergebnisse vom Treiber abrufen
  2. Die Ergebnisse werden an die Ausführungs-Engine gesendet. Sobald die Ergebnisse von den Datenknoten an die Ausführungs-Engine abgerufen wurden, sendet diese die Ergebnisse zurück an den Treiber und an die Benutzeroberfläche (Frontend).

Hive hält über die Ausführungs-Engine Kontakt zum Hadoop-Dateisystem und seinen Daemons. Der gestrichelte Pfeil im Diagramm veranschaulicht diese Kommunikation.

Verschiedene Hive-Modi

Hive kann je nach Größe der Datenknoten in Hadoop in zwei Modi betrieben werden. Diese Modi sind:

  • Lokalbetrieb
  • MapReduce-Modus

Wann sollte der lokale Modus verwendet werden?

  • Wenn Hadoop im pseudo-verteilten Modus mit einem Datenknoten installiert ist, verwenden wir Hive in diesem Modus.
  • Wenn die Datenmenge so klein ist, dass sie auf einen einzelnen lokalen Rechner beschränkt 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 MapReduce-Modus verwendet werden?

  • Wenn Hadoop über mehrere Datenknoten verfügt und die Daten auf die verschiedenen Knoten verteilt sind, verwenden wir Hive in diesem Modus.
  • Es verarbeitet große Datenmengen und die Abfrage wird parallel ausgeführt.
  • Durch diesen Modus kann die Verarbeitung großer Datensätze mit besserer Leistung erreicht werden

In Hive kann man eine Eigenschaft festlegen, um den Arbeitsmodus von Hive anzugeben. Standardmäßig arbeitet es im MapReduce-Modus. Für den lokalen Modus kann man die folgende Einstellung verwenden:

SET mapred.job.tracker=local;

Ab Hive Version 0.7 wird ein Modus unterstützt, der MapReduce-Jobs automatisch lokal ausführt. In Hive 4.x ist Apache Tez die Standard-Engine, daher gilt diese Eigenschaft für den älteren MapReduce-Pfad.

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
  • Ruft die Ergebnisse dieser Abfragen ab.

Aktuelle Versionen bieten erweiterte Funktionen auf Basis von Thrift RPC, wie zum Beispiel:

  • Parallelität mehrerer Clients
  • Authentifizierung

HS2 ist die Basis von Beeline und jeder JDBC- oder ODBC-Sitzung, weshalb es die Einzelbenutzer-Hive-CLI ersetzt hat. HiveQL-Operatoren und integrierte Funktionen Eine Referenz ist der logische nächste Schritt.

Häufig gestellte Fragen

Hive ist eine Batch-Abfrageschicht, die große Tabellen mithilfe verteilter Prozesse durchsucht. HBase ist ein NoSQL-Speicher, der für wahlfreie Lese- und Schreibvorgänge im Millisekundenbereich auf einzelne Zeilen ausgelegt ist. Sie decken gegensätzliche Zugriffsmuster ab und werden häufig parallel betrieben.

Hive läuft auf MapReduce, Apache Tez oder Apache SparkMapReduce ist veraltet und Hive 4.x verwendet standardmäßig Tez, das Zwischenergebnisse im Speicher hält, anstatt sie zwischen den einzelnen Schritten auf die Festplatte zu schreiben.

Eine verwaltete Tabelle gibt Hive die Besitzrechte an Metadaten und Dateien, also löschen Sieping Es löscht die Daten aus dem Warehouse-Verzeichnis. Eine externe Tabelle speichert nur Metadaten und wird gelöscht.ping Die zugrundeliegenden Dateien bleiben unberührt.

Gelernte Kostenmodelle speisen Ausführungsstatistiken in den Planer ein, um Scanvolumen, Join-Reihenfolge und Partitionsbereinigung genauer als statische Schätzungen vorherzusagen. Cloud-Plattformen liefern dieselben Signale wie Empfehlungen zur Komprimierung und zum Partitionslayout.

Copilot-Entwürfe für HiveQL-Joins, Fensterfunktionen und Java UDF-Gerüste aus einem Kommentar verkürzen den Boilerplate-Code. Spaltennamen, Partitionsschlüssel und Datentypen müssen jedoch weiterhin zuerst mit dem tatsächlichen Metastore abgeglichen werden.

Ja. Hive 0.14 führte die Operationen UPDATE und DELETE ein, und spätere Versionen boten vollständige ACID-Unterstützung für Transaktionstabellen. Hive 4.x erweitert dies durch Apache Iceberg-Tabellen mit Snapshot-Isolation und Schema-Evolution.

Alle drei bieten SQL-Zugriff auf dieselben Dateien. Hive eignet sich besonders für lange Batch-Jobs und besitzt den Metastore, auf den die anderen zugreifen. Spark SQL eignet sich für gemischte Datenpipelines; Trino zielt auf interaktive Abfragen über mehrere Datenquellen hinweg ab.

Ja, hauptsächlich über den Hive Metastore, der nach wie vor der Katalogstandard ist. SparkTrino, Presto und Flink können alle lesen. Hive selbst führt weiterhin geplante Batch-Transformationen und Warehouse-Ladevorgänge durch.

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: