Wat is Hive? Architectuur en modi

Wat is Hive?

Hive is een ETL- en datawarehousingtool die is ontwikkeld op basis van Hadoop Distributed File System (HDFS). Hive maakt het werk eenvoudiger voor het uitvoeren van bewerkingen zoals

  • Gegevens inkapseling
  • Ad-hocvragen
  • Analyse van enorme datasets

Belangrijke kenmerken van Hive

  • In Hive worden eerst tabellen en databases gemaakt en vervolgens worden gegevens in deze tabellen geladen.
  • Hive als datawarehouse ontworpen voor het beheren en opvragen van alleen gestructureerde gegevens die in tabellen zijn opgeslagen.
  • Bij het omgaan met gestructureerde gegevens heeft Map Reduce geen optimalisatie- en bruikbaarheidsfuncties zoals UDF's, maar het Hive-framework wel. Query-optimalisatie verwijst naar een effectieve manier van query-uitvoering in termen van prestaties.
  • De door SQL geïnspireerde taal van Hive scheidt de gebruiker van de complexiteit van Map Reduce-programmering. Het hergebruikt bekende concepten uit de relationele databasewereld, zoals tabellen, rijen, kolommen en schema's, etc. voor eenvoudig leren.
  • De programmering van Hadoop werkt op platte bestanden. Hive kan dus directorystructuren gebruiken om gegevens te ‘partitioneren’ om de prestaties bij bepaalde zoekopdrachten te verbeteren.
  • Een nieuw en belangrijk onderdeel van Hive, namelijk Metastore, gebruikt voor het opslaan van schema-informatie. Deze metastore bevindt zich doorgaans in een relationele database. We kunnen met Hive communiceren met behulp van methoden zoals
    • Web GUI
    • Java Database Connectivity (JDBC)-interface
  • De meeste interacties vinden meestal plaats via een opdrachtregelinterface (CLI). Hive biedt een CLI om Hive-query's te schrijven met behulp van Hive Query Language (HQL)
  • Over het algemeen is de HQL-syntaxis vergelijkbaar met de SQL syntaxis waarmee de meeste data-analisten bekend zijn. De onderstaande voorbeeldquery geeft alle records weer die aanwezig zijn in de genoemde tabelnaam.
    • Voorbeeldvraag : Selecteer uit
  • Hive ondersteunt vier bestandsformaten TEXTFILE, SEQUENCEFILE, ORC en RCFILE (Kolombestand opnemen).
  • Voor de opslag van metagegevens voor één gebruiker gebruikt Hive de Derby-database. Voor de opslag van metagegevens voor meerdere gebruikers of gedeelde metagegevens gebruikt Hive MYSQL.

Voor het opzetten MySQL als database en om metadata-informatie op te slaan, zie Tutorial “Installatie en configuratie van HIVE en MYSQL”

Enkele van de belangrijkste punten over Hive:

  • Het belangrijkste verschil tussen HQL en SQL is dat Hive-query's worden uitgevoerd op de infrastructuur van Hadoop in plaats van op de traditionele database.
  • De uitvoering van de Hive-query zal lijken op een reeks automatisch gegenereerde kaarten die taken verminderen.
  • Hive ondersteunt partitie- en bucketsconcepten voor het eenvoudig ophalen van gegevens wanneer de client de query uitvoert.
  • Hive ondersteunt op maat gemaakte UDF (User Defined Functions) voor het opschonen van gegevens, filteren, enz. Volgens de vereisten van de programmeurs kan men Hive UDF's definiëren.

Hive versus relationele databases

Door Hive te gebruiken, kunnen we een aantal bijzondere functionaliteiten uitvoeren die niet worden bereikt in relationele databases. Voor een enorme hoeveelheid gegevens in petabytes is het belangrijk om er query's op uit te voeren en binnen enkele seconden resultaten te verkrijgen. En Hive doet dit behoorlijk efficiënt, het verwerkt de vragen snel en levert binnen enkele seconden resultaten op.

Laten we nu eens kijken wat Hive zo snel maakt.

Enkele belangrijke verschillen tussen Hive en relationele databases zijn de volgende:

Relationele databases zijn van “Schema bij LEZEN en Schema bij Schrijven“. Maak eerst een tabel en voeg vervolgens gegevens in de betreffende tabel in. Op relationele databasetabellen kunnen functies zoals invoegingen, updates en wijzigingen worden uitgevoerd.

Bijenkorf is “Schema op alleen lezen“. Dus functies zoals update, modificaties, etc. werken hier niet mee. Omdat de Hive-query in een typisch cluster op meerdere Data Nodes draait. Het is dus niet mogelijk om data over meerdere nodes te updaten en te modificeren. (Hive-versies onder 0.13)

Ook ondersteunt Hive “LEES Velen SCHRIJVEN EENS" patroon. Dat betekent dat we na het invoegen van de tabel de tabel kunnen bijwerken in de nieuwste Hive-versies.

NOTITIE: De nieuwe versie van Hive wordt echter geleverd met bijgewerkte functies. Hive-versies (Hive 0.14) bieden opties voor bijwerken en verwijderen als nieuwe functies

Bijenkorf Architectuur

Bijenkorf Architectuur

De bovenstaande schermafbeelding legt de apache Hive-architectuur in detail

Hive bestaat voornamelijk uit 3 kernonderdelen

  1. Hive-klanten
  2. Hive-diensten
  3. Hive-opslag en computergebruik

Hive-klanten:

Hive biedt verschillende stuurprogramma's voor communicatie met een ander type applicaties. Voor op Thrift gebaseerde toepassingen biedt het een Thrift-client voor communicatie.

Voor Java gerelateerde toepassingen, biedt het JDBC-stuurprogramma's. Anders dan welk type applicatie dan ook, voorzien van ODBC-stuurprogramma's. Deze Clients en drivers communiceren op hun beurt weer met de Hive-server in de Hive-services.

Bijenkorfdiensten:

Clientinteracties met Hive kunnen worden uitgevoerd via Hive Services. Als de client query-gerelateerde bewerkingen in Hive wil uitvoeren, moet hij communiceren via Hive Services.

CLI is de command line interface die fungeert als Hive service voor DDL (Data Definition Language) bewerkingen. Alle drivers communiceren met de Hive server en met de hoofddriver in Hive services zoals getoond in het bovenstaande architectuurdiagram.

Het stuurprogramma dat aanwezig is in de Hive-services vertegenwoordigt het hoofdstuurprogramma en communiceert alle soorten JDBC-, ODBC- en andere klantspecifieke toepassingen. Driver zal deze verzoeken van verschillende applicaties verwerken naar metawinkel- en veldsystemen voor verdere verwerking.

Hive-opslag en computergebruik:

Hive-services zoals Meta Store, File System en Job Client communiceren op hun beurt met Hive-opslag en voeren de volgende acties uit

  • Metagegevensinformatie van tabellen die in Hive zijn gemaakt, wordt opgeslagen in Hive “Meta-opslagdatabase”.
  • Queryresultaten en gegevens die in de tabellen zijn geladen, worden opgeslagen in een Hadoop-cluster op HDFS.

Taakuitvoeringsstroom:

Taakuitvoeringsstroom

Uit de bovenstaande schermafbeelding kunnen we de taakuitvoeringsstroom in Hive met Hadoop begrijpen

De gegevensstroom in Hive gedraagt ​​zich volgens het volgende patroon;

  1. Query uitvoeren vanuit de gebruikersinterface (gebruikersinterface)
  2. De bestuurder communiceert met Compiler om het plan te verkrijgen. (Hier verwijst het plan naar het uitvoeren van zoekopdrachten) en de bijbehorende metadata-informatieverzameling
  3. De compiler maakt het plan voor een uit te voeren taak. Compiler communiceert met Meta Store voor het verkrijgen van metadataverzoeken
  4. Metastore stuurt metadata-informatie terug naar de compiler
  5. Compiler communiceert met Driver met het voorgestelde plan om de query uit te voeren
  6. Stuurprogramma Uitvoeringsplannen verzenden naar uitvoeringsengine
  7. Execution Engine (EE) fungeert als een brug tussen Hive en Hadoop om de query te verwerken. Voor DFS-bewerkingen.
  • EE moet eerst contact opnemen met Name Node en vervolgens met Data-knooppunten om de waarden op te halen die in tabellen zijn opgeslagen.
  • EE gaat de gewenste records ophalen van dataknooppunten. De feitelijke gegevens van tabellen bevinden zich alleen in het gegevensknooppunt. Terwijl het vanuit Name Node alleen de metadata-informatie voor de query ophaalt.
  • Het verzamelt feitelijke gegevens van dataknooppunten die verband houden met de genoemde zoekopdracht
  • Execution Engine (EE) communiceert bidirectioneel met Meta store aanwezig in Hive om DDL (Data Definition Language) bewerkingen uit te voeren. Hier worden DDL bewerkingen zoals CREATE, DROP en ALTERING tabellen en databases uitgevoerd. Meta store zal alleen informatie opslaan over database naam, tabelnamen en kolomnamen. Het zal data ophalen gerelateerd aan genoemde query.
  • Execution Engine (EE) communiceert op zijn beurt met Hadoop-daemons zoals Name node, Data nodes en job tracker om de query uit te voeren bovenop het Hadoop-bestandssysteem
  1. Resultaten ophalen van stuurprogramma
  2. Resultaten verzenden naar de uitvoeringsengine. Zodra de resultaten van dataknooppunten naar de EE zijn opgehaald, worden de resultaten teruggestuurd naar het stuurprogramma en naar de gebruikersinterface (frontend)

Hive Continu in contact met het Hadoop-bestandssysteem en zijn daemons via de uitvoeringsengine. De gestippelde pijl in het taakstroomdiagram toont de communicatie van de Execution-engine met Hadoop-daemons.

Verschillende modi van Hive

Hive kan in twee modi werken, afhankelijk van de grootte van de datanodes in Hadoop.

Deze modi zijn,

  • Lokale modus
  • Kaartverkleiningsmodus

Wanneer moet u de lokale modus gebruiken:

  • Als de Hadoop in pseudo-modus is geïnstalleerd en één dataknooppunt heeft, gebruiken we Hive in deze modus
  • Als de gegevensgrootte kleiner is in de zin van beperkt tot één lokale machine, kunnen we deze modus gebruiken
  • De verwerking zal zeer snel zijn op kleinere datasets die aanwezig zijn op de lokale machine

Wanneer moet u de kaartverkleiningsmodus gebruiken:

  • Als Hadoop meerdere dataknooppunten heeft en gegevens over verschillende knooppunten worden gedistribueerd, gebruiken we Hive in deze modus
  • Het werkt op een groot aantal datasets en de query wordt parallel uitgevoerd
  • Via deze modus kan verwerking van grote datasets met betere prestaties worden bereikt

In Hive kunnen we deze eigenschap instellen om aan te geven in welke modus Hive kan werken? Standaard werkt het in de Map Reduce-modus en voor de lokale modus kunt u de volgende instelling hebben.

Hive werkt in de lokale modus

SET mapred.job.tracker=lokaal;

Vanaf Hive-versie 0.7 ondersteunt het een modus om kaarten automatisch in de lokale modus uit te voeren.

Wat is Hive Server2 (HS2)?

HiveServer2 (HS2) is een serverinterface die de volgende functies uitvoert:

  • Hiermee kunnen externe clients query's uitvoeren op Hive
  • Haal de resultaten van genoemde zoekopdrachten op

Vanaf de nieuwste versie heeft het een aantal geavanceerde functies gebaseerd op Thrift RPC, zoals;

  • Gelijktijdigheid met meerdere clients
  • authenticatie

Samenvatting

Hive is een ETL- en datawarehousetool gebaseerd op het Hadoop-ecosysteem en wordt gebruikt voor het verwerken van gestructureerde en semi-gestructureerde data.

  • Hive is een database in het Hadoop-ecosysteem die DDL- en DML-bewerkingen uitvoert en flexibele querytaal zoals HQL biedt voor betere query's en verwerking van gegevens.
  • Het biedt zoveel functies vergeleken met RDMS, dat bepaalde beperkingen heeft.

Voor gebruikersspecifieke logica om aan de eisen van de klant te voldoen.

  • Het biedt de mogelijkheid om op maat gedefinieerde scripts en door de gebruiker gedefinieerde functies te schrijven en te implementeren.
  • Bovendien biedt het partities en buckets voor opslagspecifieke logica.