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: