Apache Hive-Architektur und -Befehle: Modi, Eigenschaften und Anwendungen

Veröffentlicht: 2021-06-30

Inhaltsverzeichnis

Was ist Hive?

Der Apache Hive ist ein Open-Source-Data-Warehousing-Tool, das von Facebook für die verteilte Verarbeitung und Datenanalyse entwickelt wurde. Es basiert auf dem Hadoop Distributed File System (HDFS). Ein Mechanismus zum Projizieren von Strukturen auf die Daten in Hadoop wird von Hive bereitgestellt. Eine SQL-ähnliche Sprache namens HiveQL (HQL) wird verwendet, um diese Daten abzufragen. Es besteht eine Ähnlichkeit zwischen den Tabellen in Hive und Tabellen in einer relationalen Datenbank. Hive-Abfragen können leicht von jedem geschrieben werden, der mit SQL vertraut ist.

Einige Funktionen von Hive sind:

  • Speicherung von Schemainformationen in einer Datenbank und der verarbeiteten Daten in HDFS.
  • Entwickelt für OLAP.
  • Die Abfragesprache ist HiveQL oder HQL, ähnlich wie SQL.
  • Es ist schnell, vertraut, skalierbar und erweiterbar.

Verwendung von Hive

  • Es ist der verteilte Speicher Apache Hive.
  • Es werden Tools bereitgestellt, die es den Benutzern ermöglichen, Daten einfach zu extrahieren, umzuwandeln und zu laden.
  • Zur Bereitstellung der Struktur werden verschiedene Datenformate angeboten.
  • Hive kann auf Dateien zugreifen, die im Hadoop Distributed File System (HDFS) gespeichert sind.

Befehle von Hive

Die Hive-Befehle lauten:

  1. Data Definition Language (DDL): Die Tabellen und anderen Objekte in der Datenbank werden durch diese Befehle erstellt und modifiziert.
  • CREATE: Wird verwendet, um eine Tabelle oder Datenbank zu erstellen.
  • SHOW: Wird verwendet, um Datenbank, Tabelle, Eigenschaften usw. anzuzeigen.
  • ALTER: Es wird verwendet, um Änderungen an der bestehenden Tabelle vorzunehmen.
  • DESCRIBE: Beschreibt die Tabellenspalten.
  • TRUNCATE: Wird verwendet, um Tabellenzeilen dauerhaft abzuschneiden und zu löschen.
  • DELETE: Löscht die Tabellendaten, kann aber wiederhergestellt werden.
  1. Data Manipulation Language (DML): Wird zum Abrufen, Speichern, Ändern, Löschen, Einfügen und Aktualisieren von Daten in der Datenbank verwendet.
  • Syntax für LOAD-, INSERT-Anweisungen

LOAD data <LOCAL> inpath <file path> into table [tablename]

  • Nach dem Laden der Daten werden die Datenmanipulationsbefehle verwendet, um die Daten abzurufen.
  • Die Zählaggregatfunktion wird verwendet, um die Gesamtzahl der Datensätze in einer Tabelle zu zählen.
  • Das Schlüsselwort „extern erstellen“ wird zum Erstellen einer Tabelle verwendet und stellt einen Speicherort bereit, an dem die Tabelle erstellt wird. Eine EXTERNAL-Tabelle verweist auf einen beliebigen HDFS-Speicherort für ihre Speicherung.
  • Einfügebefehle werden verwendet, um die Hive-Datentabelle zu laden. „insert overwrite“ wird verwendet, um die vorhandenen Daten zu überschreiben, und „insert into“ wird verwendet, um die Daten an vorhandene Daten anzuhängen.
  • Eine Tabelle wird durch den Befehl „partitioned by“ in Partitionen und durch den Befehl „clustered by“ in Buckets unterteilt.
  • Das Einfügen von Daten löst Fehler aus, da die dynamische Partition nicht aktiviert ist. Daher sind in der Hive-Shell folgende Parameter einzustellen.

set hive.exec.dynamic.partition=true;

Um dynamische Partitionen zu aktivieren, ist es standardmäßig false

set hive.exec.dynamic.partition.mode=nonstrict;

  • Der Befehl „Drop Table“ löscht die Daten und Metadaten einer Tabelle
  • Aggregation: Syntax:

Wählen Sie die Anzahl (DISTINCT-Kategorie) aus dem Tabellennamen aus;

Der Befehl zählt verschiedene Kategorien von 'cate'-Tabellen.

  • Gruppierung: Syntax:

Wählen Sie Kategorie, Summe (Betrag) aus TXT-Datensätzen, gruppieren Sie nach Kategorie

Die Ergebnismenge wird in eine oder mehrere Spalten gruppiert.

  • Verknüpfungsvorgang: Führen Sie ihn aus, um Felder aus zwei Tabellen zu kombinieren, indem Sie gemeinsame Werte für jede Spalte verwenden.
  • Left Outer Join: Für Tabelle A und B soll Left Outer Join alle Datensätze der „linken“ Tabelle (A) enthalten, auch wenn die Join-Bedingung keinen passenden Datensatz in der „rechten“ Tabelle (B) findet.
  • Right Outer Join: Jede Zeile aus der „rechten“ Tabelle (B) erscheint mindestens einmal in der verknüpften Tabelle.
  • Vollständige Verknüpfung: Die verknüpfte Tabelle enthält alle Datensätze aus beiden Tabellen. Die verknüpfte Tabelle enthält alle Datensätze aus beiden Tabellen.

Bienenstock-Architektur

Die Apache-Hive-Architektur ist in Abbildung 1 dargestellt .

Liste der Hauptkomponenten

Die Hauptkomponenten der Hive-Architektur sind:

1. Hive-Client

Verschiedene Anwendungen, die in Sprachen wie Java, Python, C++ usw. geschrieben sind, werden durch die Verwendung verschiedener von Hive bereitgestellter Treiber kommuniziert. Es kann in jeder beliebigen Sprache verfasst werden. Die Clients und Server wiederum kommunizieren mit dem Hive-Server in den Hive-Diensten.

Meist werden sie in drei Typen eingeteilt:

  • Thrift Client: Es basiert auf Apache Thrift, um eine Anfrage von einem Thrift-Client zu bedienen. Der Thrift-Client wird für die Kommunikation für die Thrift-basierten Anwendungen verwendet.
  • JDBC-Client: JDBC wird für Java-bezogene Anwendungen bereitgestellt. Java-Anwendungen werden über den JDBC-Treiber mit dem Hive verbunden. Es verwendet außerdem Thrift, um mit dem Hive-Server zu kommunizieren.
  • ODBC-Client: Die auf dem ODBC-Protokoll basierenden Anwendungen dürfen sich über die ODBC-Treiber mit dem Hive verbinden. Ähnlich wie JDBC verwendet es Thrift, um mit dem Hive-Server zu kommunizieren.

2. Hive-Dienste

Hive-Dienste stellen Mittel für die Interaktionen von Hive mit den Kunden bereit. Alle abfragebezogenen Vorgänge, die vom Kunden durchgeführt werden müssen, müssen über die Mietdienste mitgeteilt werden. Für Data Definition Language (DDL)-Vorgänge fungiert CLI als Hive-Dienst.

Alle Treiber müssen mit dem Hive-Server und dann mit dem Haupttreiber in den Hive-Diensten kommunizieren. Treiber in den Hive-Diensten stellen den Haupttreiber dar, der mit den kundenspezifischen Anwendungen und allen Arten von JDBC, ODBC usw. kommuniziert. Die Anforderungen von verschiedenen Anwendungen werden vom Treiber an die Metastore- und Feldsysteme verarbeitet, die weiter verarbeitet werden.

Die von Hive angebotenen Dienstleistungen sind:

  • Beeline: Die Beeline ist eine Befehlsshell, in der ein Benutzer seine Abfragen an das System senden kann. Es wird von HiveServer2 unterstützt. Es ist ein JDBC-Client, der auf SQLLINE CLI basiert.
  • Hive-Server 2: Clients dürfen die Abfragen für den Hive ausführen. Als Nachfolger von HiveServer1 ermöglicht es die Ausführung mehrerer Abfragen von mehreren Clients. Es bietet die beste Unterstützung für offene API-Clients wie JDBC und ODBC.
  • Hive-Treiber: Der Benutzer übermittelt die HiveQL-Anweisungen über die Befehlsshell an den Hive-Treiber. Es sendet die Abfrage an den Compiler und erstellt Sitzungshandles für die Abfrage.
  • Hive-Compiler: Der Hive-Compiler wird zum Übergeben der Abfrage verwendet. Unter Verwendung der im Metaspeicher gespeicherten Metadaten führt der Hive-Compiler eine semantische Analyse und Typprüfung für die verschiedenen Abfrageblöcke und -ausdrücke durch. Ein Ausführungsplan wird dann vom Compiler generiert, der der DAG (Directed Acyclic Graph) ist. Jede Stufe des DAG ist eine Metadatenoperation, eine Operation auf HDFS oder ein Map/Reduce-Job.
  • Optimierer: Die Hauptaufgabe des Optimierers besteht darin, Transformationsoperationen am Ausführungsplan durchzuführen. Es erhöht die Effizienz und Skalierbarkeit durch die Aufteilung der Aufgaben.
  • Ausführungsmaschine : Nach Abschluss der Kompilierungs- und Optimierungsschritte ist es die Rolle der Ausführungsmaschine, die den vom Compiler erstellten Ausführungsplan ausführt. Der Plan wird mit Hadoop in der Reihenfolge ihrer Abhängigkeiten ausgeführt.
  • Metastore : Metastore ist im Allgemeinen eine relationale Datenbank, die die Metadateninformationen speichert, die sich auf die Struktur der Tabellen und Partitionen beziehen. Es ist ein zentrales Repository, das auch das Speichern von Informationen zu Spalten und Spaltentypen umfasst. Informationen zu Serialisierern und Deserialisierern werden ebenfalls in Metastore gespeichert, die für Lese-/Schreibvorgänge zusammen mit HDFS-Dateien erforderlich sind, die Daten speichern. Eine Thrift-Schnittstelle wird von Metastore zum Abfragen und Bearbeiten von Hive-Metadaten bereitgestellt.

Metastore kann in zwei Modi konfiguriert werden:

  • Remote: Dieser Modus ist nützlich für Nicht-Java-Anwendungen und im Remote-Modus ist der Metastore ein Thrift-Dienst.
  • Eingebettet: In diesem Modus kann der Client über JDBC direkt mit dem Metastore interagieren.
  • HCatalog: Die Tabellen- und Speicherverwaltungsschicht für Hadoop ist der HCatalog. Es sind verschiedene Datenverarbeitungstools zum Lesen und Schreiben von Daten im Grid verfügbar, wie Pig, MapReduce usw. Aufbauend auf dem Hive-Metastore werden die tabellarischen Daten des Hive-Metastores anderen Datenverarbeitungstools ausgesetzt.
  • WebHCat: WebHCat ist eine HTTP-Schnittstelle und REST-API für HCatalog. Es führt Hive-Metadatenoperationen durch und bietet einen Dienst zum Ausführen von Hadoop MapReduce- (oder YARN-), Pig- und Hive-Jobs.

3. Verarbeitung und Ressourcenverwaltung

Die Ausführung der Abfragen erfolgt durch ein internes MapReduce-Framework.

Das MapReduce-Framework ist ein Software-Framework zur Verarbeitung großer Datenmengen auf großen Clustern handelsüblicher Hardware. Die Daten werden in Chunks aufgeteilt und dann von Map-Reduce-Tasks verarbeitet.

4. Verteilter Speicher

Die Hive-Dienste kommunizieren mit dem Hive-Speicher, um die folgenden Aktionen auszuführen:

  • Die Hive „Meta-Speicherdatenbank“ enthält die Metadateninformationen von Tabellen, die in Hive erstellt wurden.
  • Der Hadoop-Cluster auf HDFS speichert Abfrageergebnisse und die in die Tabellen geladenen Daten.

Verschiedene Hive-Modi

Abhängig von der Größe der Daten kann Hive in zwei Modi arbeiten.

  1. Lokalbetrieb

Der lokale Modus von Hive wird verwendet, wenn

  • Das installierte Hadoop hat einen Datenknoten und wird im Pseudomodus installiert.
  • Die Datengröße eines einzelnen lokalen Computers ist kleiner.
  • Schnelle Verarbeitung auf lokalen Maschinen aufgrund der kleineren vorhandenen Datensätze.
  1. Modus zum Reduzieren der Karte

Der Kartenreduktionsmodus von Hive wird verwendet, wenn

  • Hadoop hat mehrere Datenknoten mit verteilten Daten über die verschiedenen Knoten.
  • Die Datengröße ist größer und eine parallele Ausführung der Abfrage ist erforderlich.
  • Große Datensätze können mit besserer Performance verarbeitet werden.

Eigenschaften von Hive

  • Daten werden in die Tabellen geladen, nachdem die Tabellen und die Datenbanken erstellt wurden.
  • Nur in Tabellen gespeicherte strukturierte Daten können von Hive verwaltet und abgefragt werden.
  • Das Hive-Framework verfügt über Optimierungs- und Benutzerfreundlichkeitsfunktionen beim Umgang mit strukturierten Daten, die in Map Reduce nicht vorhanden sind.
  • Aus Gründen der Benutzerfreundlichkeit ist die von Hive SQL inspirierte Sprache ein einfacherer Ansatz im Vergleich zur komplexen Programmiersprache von Map Reduce. Bekannte Konzepte von Tabellen, Zeilen, Spalten usw. werden in Hive verwendet.
  • Um die Leistung der Abfragen zu steigern, kann Hive die Daten mithilfe einer Verzeichnisstruktur partitionieren.
  • Hive enthält eine wichtige Komponente namens „Metastore“, die sich in einer relationalen Datenbank befindet und Schemainformationen speichert. Für die Interaktion mit Hive können zwei Methoden verwendet werden: Web-GUI und Java Database Connectivity (JDBC)-Schnittstelle.
  • Für die meisten Interaktionen wird eine Befehlszeilenschnittstelle (CLI) verwendet. Die CLI wird zum Schreiben der Hive-Abfragen unter Verwendung der Hive Query Language (HQL) verwendet.
  • Die HQL-Syntax ähnelt der SQL-Syntax.
  • Vier Dateiformate werden von Hive unterstützt; TEXTFILE, SEQUENCEFILE, ORC und RCFILE (Record Columnar File).

Fazit

Apache Hive ist ein Open-Source-Data-Warehousing-Tool, das aus Hauptkomponenten wie Hive-Clients, Hive-Diensten, Verarbeitungsframework und Ressourcenverwaltung sowie verteiltem Speicher besteht.

Es baut auf dem Hadoop-Ökosystem für die Verarbeitung von Strukturen und halbstrukturierten Daten auf. Die von Hive bereitgestellte Benutzeroberfläche ermöglicht es dem Benutzer, seine Abfragen in Hive Query Language (HQL) zu übermitteln. Diese wird an den Compiler zur Generierung eines Ausführungsplans übergeben. Der Plan wird schließlich von der Ausführungsmaschine ausgeführt.

Wenn Sie mehr über Big Data erfahren möchten, schauen Sie sich unser PG Diploma in Software Development Specialization in Big Data-Programm an, das für Berufstätige konzipiert ist und mehr als 7 Fallstudien und Projekte bietet, 14 Programmiersprachen und Tools abdeckt und praktische praktische Übungen enthält Workshops, mehr als 400 Stunden gründliches Lernen und Unterstützung bei der Stellenvermittlung bei Top-Unternehmen.

Sehen Sie sich unsere anderen Softwareentwicklungskurse bei upGrad an.

Führen Sie die datengesteuerte technologische Revolution an

7 FALLSTUDIEN & PROJEKTE. JOBHILFE BEI ​​TOP-UNTERNEHMEN. ENGAGIERTER STUDENTENMENTOR.
Fortgeschrittenes Zertifikatsprogramm in Big Data vom IIIT Bangalore