Technologieaustausch

Einführung in Hive und seine Architektur

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Was ist Hive?

  • Ein Hadoop-basiertes Data Warehouse, das für einige Anwendungen mit hoher Latenz (Offline-Entwicklung) geeignet ist, kann strukturierte und halbstrukturierte Datendateien, die in Hadoop-Dateien gespeichert sind, einer Datenbanktabelle zuordnen und SQL-ähnliche Daten basierend auf der Tabelle A bereitstellen Modell namens Hive Query Language (HQL) für den Zugriff auf und die Analyse großer Datensätze, die in Hadoop-Dateien gespeichert sind;
  • Der Kern von Hive besteht darin, HQL in ein MapReduce-Programm umzuwandeln und das Programm dann zur Ausführung an den Hadoop-Cluster zu senden.
  • Hive selbst speichert oder berechnet keine Daten. Es basiert vollständig auf HDFS und MapReduce. Die Tabellen in Hive sind rein logische Tabellen.

Was ist ein Data Warehouse?

  • Das Data Warehouse selbst „produziert“ keine Daten und seine Daten stammen aus verschiedenen externen Systemen;
  • Gleichzeitig muss das Data Warehouse selbst keine Daten „verbrauchen“ und die Ergebnisse stehen verschiedenen externen Anwendungen offen;
  • Aus diesem Grund wird es „Lager“ und nicht „Fabrik“ genannt;

Hive-Architektur und -Komponenten

Fügen Sie hier eine Bildbeschreibung ein

  • Meta-Shop: Metadaten in Hive werden normalerweise in relationalen Datenbanken wie MySQL/Derby gespeichert und umfassen den Namen der Tabelle, die Spalten und Partitionen der Tabelle und ihre Attribute, die Attribute der Tabelle (ob es sich um eine externe Tabelle usw. handelt), das Verzeichnis, in dem sich die Daten der Tabelle befinden usw.;
  • Treiber : Treiber, einschließlich Syntax-Parser, Plan-Compiler, Optimierer und Executor. Vollständige HQL-Abfrageanweisungen aus lexikalischer Analyse, Syntaxanalyse, Kompilierung, Optimierung und Abfrageplangenerierung. Der generierte Abfrageplan wird in HDFS gespeichert und anschließend vom Ausführungs-Engine-Aufruf ausgeführt.
    • Parser (SQL-Parser): Konvertieren Sie SQL-Zeichenfolgen in einen abstrakten Syntaxbaum AST und führen Sie eine Syntaxanalyse für den AST durch, z. B. ob die SQL-Semantik korrekt ist, ob die Tabelle vorhanden ist und ob die Felder vorhanden sind.
    • Compiler (Physischer Plan): Kompilieren Sie AST, um einen logischen Ausführungsplan (DAG) zu generieren.
    • Optimierer (Abfrageoptimierer): Optimieren Sie den logischen Ausführungsplan;
    • Ausführung: Konvertieren Sie den logischen Ausführungsplan in einen ausführbaren physischen Plan, bei dem es sich um ein MapReduce/Spark-Programm handelt.

HQL-Ausführungsprozess

Fügen Sie hier eine Bildbeschreibung ein

  1. Eine Anfrage stellen: Initiieren Sie eine Ausführungsanforderung von der Benutzeroberfläche an den Treiber.
  2. Ausführungsplan abrufen: Der Treiber sendet eine Benutzeranforderung an den Compiler, um einen Ausführungsplan zu erhalten.
  3. Metadaten abrufen: Der Compiler ruft relevante Metadaten aus dem Metaspeicher ab, basierend auf den relevanten Tabellen- und Partitionsinformationen in der SQL-Anweisung.
  4. Metadaten zurückgeben: Der Metaspeicher gibt entsprechende Metadaten an den Compiler zurück.
  5. Ausführungsplan für die Rücksendung: Analysieren und optimieren Sie SQL basierend auf Tabellen- und Partitionsmetadaten, um logische Ausführungspläne zu generieren. Der Plan ist ein DAG-Diagramm, und jede Stufe entspricht einer MapReduce-Zuordnung oder einer Reduzierungsoperation.
  6. Führen Sie den Ausführungsplan aus: Senden Sie den Ausführungsplan an die Execution Engine, die den logischen Ausführungsplan zur Ausführung in Form von MapReduce an Hadoop übermittelt.
  7. Die Laufergebnisse werden erhalten: Der Treiber sammelt die Laufergebnisse und sendet sie an die Benutzeroberfläche.