Wat is Hive? Architectuur en modi

Wat is Hive?

Hive is een ETL- en datawarehousing-tool ontwikkeld bovenop Hadoop Distributed File System (HDFS). Hive maakt het werk gemakkelijk 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 op SQL geïnspireerde taal van Hive scheidt de gebruiker van de complexheid van de kaart Verminder de programmering. Het hergebruikt bekende concepten uit de relationele databasewereld, zoals tabellen, rijen, kolommen en schema's, enz. voor meer leergemak.
  • 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 metadata voor één gebruiker gebruikt Hive de derby-database en voor metadata van meerdere gebruikers of gedeelde metadata gebruikt Hive MYSQL.

Voor het instellen van MySQL als database en het opslaan van metadata-informatie raadpleegt u 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 bucketconcepten 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 volgendewing;

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“. Functies als de update, aanpassingen etc. werken hier dus niet mee. Omdat de Hive-query in een typisch cluster op meerdere gegevensknooppunten wordt uitgevoerd. Het is dus niet mogelijk om gegevens over meerdere knooppunten bij te werken en te wijzigen. (Hive-versies lager dan 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 Bijenkorf 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:

Klantinteracties met Hive kunnen worden uitgevoerd via Hive Services. Als de client querygerelateerde bewerkingen in Hive wil uitvoeren, moet deze communiceren via Hive Services.

CLI is de opdrachtregelinterface die fungeert als Hive-service voor DDL-bewerkingen (Data Definition Language). Alle stuurprogramma's communiceren met de Hive-server en met het hoofdstuurprogramma in Hive-services, zoals hierboven weergegeven archistructuur diagram.

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, Bestandssysteem en Job Client communiceren op hun beurt met Hive-opslag en voeren de volgende handelingen uitwing acties

  • 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 het 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 als volgtwing 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 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 de metawinkel die aanwezig is in Hive om DDL-bewerkingen (Data Definition Language) uit te voeren. Hier worden DDL-bewerkingen zoals CREATE, DROP en ALTERING tabellen en databases uitgevoerd. Metastore slaat alleen informatie op over de databasenaam, tabelnamen en kolomnamen. Het haalt gegevens op die verband houden met de genoemde zoekopdracht.
  • 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 dataknooppunten 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 te vermelden welke modus Hive kan werken? Standaard werkt het in de Map Reduce-modus en voor de lokale modus kunt u het volgende gebruikenwing instellen.

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 follo uitvoertwing functies:

  • 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

Samengevat

Hive is een ETL- en datawarehouse-tool bovenop Hadoop ecossysteem en gebruikt voor het verwerken van gestructureerde en semi-gestructureerde gegevens.

  • Hive is een database die aanwezig is in Hadoop ecosHet systeem voert DDL- en DML-bewerkingen uit en biedt flexibele zoektaal zoals HQL voor een betere bevraging 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.