Wat is Hive? Architectuur & Modi

Inhoudsopgave:

Anonim

In deze tutorial leer je-

  • Wat is Hive?
  • Hive-architectuur
  • Verschillende modi van Hive
  • Wat is Hive Server2 (HS2)?

Wat is Hive?

Hive is een ETL- en datawarehousing-tool die is ontwikkeld bovenop Hadoop Distributed File System (HDFS). Hive maakt het werk gemakkelijk voor het uitvoeren van bewerkingen zoals

  • Data inkapseling
  • Ad-hoc zoekopdrachten
  • 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 om query's uit te voeren in termen van prestaties.
  • De op 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, enz. Om het leren te vergemakkelijken.
  • Hadoop's programmering werkt op platte bestanden. Hive kan dus directorystructuren gebruiken om gegevens te "partitioneren" om de prestaties van bepaalde query's 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 communiceren met Hive 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 gegevensanalisten bekend zijn. De onderstaande voorbeeldquery geeft alle records weer die aanwezig zijn in de genoemde tabelnaam.
    • Voorbeeldquery : Selecteer * uit
  • Hive ondersteunt vier bestandsindelingen, namelijk TEXTFILE, SEQUENCEFILE, ORC en RCFILE (Record Columnar File).
  • Voor de opslag van metadata voor één gebruiker gebruikt Hive de Derby-database en voor meerdere gebruikers Metadata of gedeelde Metadata-case gebruikt Hive MYSQL.

Voor het instellen van MySQL als database en het opslaan van metadata-informatie, 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 de Hive-query wordt uitgevoerd op de infrastructuur van Hadoop in plaats van op de traditionele database.
  • De uitvoering van de Hive-query zal zijn als een reeks automatisch gegenereerde toewijzingen om banen te 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, filteren, etc. van data. Volgens de eisen van de programmeurs kan men Hive UDFs definiëren.

Hive versus relationele databases: -

Door Hive te gebruiken, kunnen we een aantal eigenaardige functionaliteit uitvoeren die niet wordt bereikt in relationele databases. Voor een enorme hoeveelheid gegevens in peta-bytes is het belangrijk om deze op te vragen en binnen enkele seconden resultaten te krijgen. En Hive doet dit behoorlijk efficiënt, het verwerkt de vragen snel en produceert resultaten in de tweede keer.

Laten we eens kijken wat Hive zo snel maakt.

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

Relationele databases zijn van " Schema on READ en Schema on Write ". 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.

Hive is " Schema on READ only ". Functies zoals 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)

Hive ondersteunt ook het patroon " READ Many WRITE Once ". Dat betekent dat we na het invoegen van de tabel de tabel kunnen bijwerken in de nieuwste Hive-versies.

OPMERKING : de nieuwe versie van Hive wordt echter geleverd met bijgewerkte functies. Hive-versies (Hive 0.14) komen met Update- en Delete-opties als nieuwe functies

Hive-architectuur

De bovenstaande schermafbeelding legt de Apache Hive-architectuur in detail uit

Bijenkorf bestaat voornamelijk uit 3 kernonderdelen

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

Hive-klanten:

Hive biedt verschillende stuurprogramma's voor communicatie met verschillende soorten applicaties. Voor op Thrift gebaseerde applicaties biedt het Thrift-client voor communicatie.

Voor Java-gerelateerde toepassingen biedt het JDBC-stuurprogramma's. Behalve elk type applicatie leverde ODBC-stuurprogramma's. Deze clients en stuurprogramma's 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 klant 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 weergegeven 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 verwerkt die verzoeken van verschillende applicaties naar metastore 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 Storage en voeren de volgende acties uit

  • Metadata-informatie van tabellen die in Hive zijn gemaakt, wordt opgeslagen in de "Meta-opslagdatabase" van Hive.
  • Queryresultaten en gegevens die in de tabellen zijn geladen, worden opgeslagen in Hadoop-cluster op HDFS.

Stroom van taakuitvoering:

Uit de bovenstaande schermafbeelding kunnen we de stroom voor het uitvoeren van taken in Hive met Hadoop begrijpen

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

  1. Query uitvoeren vanuit de gebruikersinterface (gebruikersinterface)
  2. De bestuurder werkt samen met Compiler om het plan te krijgen. (Hier verwijst plan naar het uitvoeren van query's) proces en de bijbehorende verzameling van metadata-informatie
  3. De compiler maakt het plan voor een uit te voeren taak. Compiler communiceert met Meta store voor het verkrijgen van metadata-verzoek
  4. Meta store stuurt metadata-informatie terug naar de compiler
  5. Compiler communiceert met Driver met het voorgestelde plan om de query uit te voeren
  6. Stuurprogramma Verzendt uitvoeringsplannen naar de 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 nodes om de waarden in tabellen op te halen.
  • EE gaat de gewenste records ophalen uit dataknooppunten. De feitelijke gegevens van tabellen bevinden zich alleen in het gegevensknooppunt. Terwijl het van Name Node alleen de metadata-informatie voor de query ophaalt.
  • Het verzamelt feitelijke gegevens van gegevensknooppunten met betrekking tot de genoemde query
  • Execution Engine (EE) communiceert bidirectioneel met de meta-winkel 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. Meta store zal alleen informatie over databasenaam, tabelnamen en kolomnamen opslaan. Het haalt gegevens op met betrekking tot de 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 chauffeur
  2. Resultaten naar de uitvoeringsengine verzenden. Zodra de resultaten zijn opgehaald van dataknooppunten naar de EE, worden de resultaten teruggestuurd naar het stuurprogramma en naar de gebruikersinterface (front-end)

Hive Continu in contact met Hadoop-bestandssysteem en zijn daemons via Execution-engine. 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 gegevensknooppunten in Hadoop.

Deze modi zijn,

  • Lokale modus
  • Kaart verkleinen modus

Wanneer gebruik je de lokale modus:

  • Als de Hadoop is geïnstalleerd in de pseudomodus met één gegevensknooppunt, gebruiken we Hive in deze modus
  • Als de gegevensgrootte kleiner is in termen van beperkt tot een enkele lokale machine, kunnen we deze modus gebruiken
  • De verwerking zal erg snel zijn op kleinere gegevenssets die op de lokale computer aanwezig zijn

Wanneer gebruik je de kaartreductiemodus:

  • Als Hadoop meerdere gegevensknooppunten heeft en gegevens worden verdeeld over verschillende knooppunten, gebruiken we Hive in deze modus
  • Het zal werken op een grote hoeveelheid gegevenssets en de query zal parallel worden uitgevoerd
  • Met deze modus kunnen grote gegevenssets met betere prestaties worden verwerkt

In Hive kunnen we deze eigenschap instellen om te vermelden welke modus Hive kan werken? Standaard werkt het in de modus Kaart verkleinen en voor de lokale modus kunt u de volgende instelling hebben.

Bijenkorf om in de lokale modus te werken

SET mapred.job.tracker = lokaal;

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

Wat is Hive Server2 (HS2)?

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

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

Vanaf de laatste versie heeft het een aantal geavanceerde functies op basis van Thrift RPC zoals;

  • Gelijktijdigheid van meerdere clients
  • Authenticatie

Overzicht:

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

  • Hive is een database die aanwezig is in het Hadoop-ecosysteem en DDL- en DML-bewerkingen uitvoert, en het biedt flexibele querytaal zoals HQL voor betere query's en verwerking van gegevens.
  • Het biedt zoveel functies in vergelijking 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 gemaakte scripts en door de gebruiker gedefinieerde functies te schrijven en te implementeren.
  • Daarnaast biedt het partities en buckets voor opslagspecifieke logica's.