Vad är Hive? Arkitektur & Lägen

Innehållsförteckning:

Anonim

I den här handledningen lär du dig-

  • Vad är Hive?
  • Hive Arkitektur
  • Olika lägen för Hive
  • Vad är Hive Server2 (HS2)?

Vad är Hive?

Hive är ett ETL- och datalagringsverktyg utvecklat ovanpå Hadoop Distribuerade Filsystem (HDFS). Hive gör jobbet enkelt för att utföra operationer som

  • Datakapsling
  • Ad hoc-frågor
  • Analys av stora datamängder

Viktiga egenskaper hos Hive

  • I Hive skapas tabeller och databaser först och sedan laddas data i dessa tabeller.
  • Hive som datalager utformat för att hantera och fråga bara strukturerad data som lagras i tabeller.
  • När du hanterar strukturerad data har Map Reduce inte optimerings- och användningsfunktioner som UDF, men Hive Framework har. Frågaoptimering avser ett effektivt sätt att utföra frågor när det gäller prestanda.
  • Hives SQL-inspirerade språk skiljer användaren från komplexiteten i Map Reduce-programmering. Det återanvänder bekanta begrepp från den relationsdatabasvärlden, såsom tabeller, rader, kolumner och scheman, etc. för att underlätta inlärningen.
  • Hadoops programmering fungerar på platta filer. Så, Hive kan använda katalogstrukturer för att "partitionera" data för att förbättra prestanda för vissa frågor.
  • En ny och viktig komponent i Hive, dvs Metastore som används för att lagra schemainformation. Denna metastore finns vanligtvis i en relationsdatabas. Vi kan interagera med Hive med metoder som
    • Webbgränssnitt
    • Java Database Connectivity (JDBC) gränssnitt
  • De flesta interaktioner tenderar att ske över ett kommandoradsgränssnitt (CLI). Hive tillhandahåller en CLI för att skriva Hive-frågor med Hive Query Language (HQL)
  • Generellt sett liknar HQL-syntax den SQL-syntax som de flesta dataanalytiker känner till. Exempelfrågan nedan visar alla poster som finns i nämnda tabellnamn.
    • Exempelfråga : Välj * från
  • Hive stöder fyra filformat, de är TEXTFILE, SEQUENCEFILE, ORC och RCFILE (Record Columnar File).
  • För lagring av metadata för enanvändare använder Hive derby-databas och för metadata för flera användare eller delat Metadata-fall använder Hive MYSQL.

För inställning av MySQL som databas och för lagring av metadatainformation, se Handledning "Installation och konfiguration av HIVE och MYSQL"

Några av de viktigaste punkterna om Hive:

  • Den största skillnaden mellan HQL och SQL är att Hive-frågan körs på Hadoops infrastruktur snarare än den traditionella databasen.
  • Hive-frågan körningen kommer att bli som serier av automatiskt genererade kartor minska jobb.
  • Hive stöder partition och hink-koncept för enkel hämtning av data när klienten kör frågan.
  • Hive stöder specialspecifika UDF (användardefinierade funktioner) för datarengöring, filtrering etc. Enligt programmets krav kan man definiera Hive UDF: er.

Hive Vs Relationsdatabaser: -

Genom att använda Hive kan vi utföra några speciella funktioner som inte uppnås i relationsdatabaser. För en enorm mängd data som finns i petabytes är det viktigt att fråga det och få resultat på några sekunder. Och Hive gör detta ganska effektivt, det bearbetar frågorna snabbt och ger resultat på andra gången.

Låt nu se vad som gör Hive så snabbt.

Några viktiga skillnader mellan Hive och relationsdatabaser är följande;

Relationsdatabaser är av " Schema på READ och Schema on Write ". Skapa först en tabell och infoga sedan data i den specifika tabellen. På relationsdatabastabeller kan funktioner som insättningar, uppdateringar och modifieringar utföras.

Hive är " Schema på LÄS bara ". Så funktioner som uppdatering, modifieringar etc. fungerar inte med detta. Eftersom Hive-frågan i ett typiskt kluster körs på flera datanoder. Så det är inte möjligt att uppdatera och modifiera data över flera noder. (Hive-versioner under 0.13)

Hive stöder också mönstret " LÄS MÅNGA SKRIV en gång ". Vilket innebär att vi efter att ha infört tabellen kan uppdatera tabellen i de senaste Hive-versionerna.

OBS : Den nya versionen av Hive kommer dock med uppdaterade funktioner. Hive-versioner (Hive 0.14) kommer med uppdaterings- och radera-alternativ som nya funktioner

Hive Arkitektur

Ovanstående skärmdump förklarar Apache Hive-arkitekturen i detalj

Hive består av huvudsakligen tre kärndelar

  1. Hive-klienter
  2. Hive Services
  3. Hive Lagring och databehandling

Hive-klienter:

Hive tillhandahåller olika drivrutiner för kommunikation med en annan typ av applikationer. För Thrift-baserade applikationer kommer Thrift-klienten att tillhandahålla kommunikation.

För Java-relaterade applikationer tillhandahåller den JDBC-drivrutiner. Annat än någon typ av applikationer tillhandahålls ODBC-drivrutiner. Dessa klienter och drivrutiner kommunicerar i sin tur igen med Hive-servern i Hive-tjänsterna.

Hive Services:

Klientinteraktioner med Hive kan utföras via Hive Services. Om klienten vill utföra några frågor relaterade till Hive måste den kommunicera via Hive Services.

CLI är kommandoradsgränssnittet fungerar som Hive-tjänst för DDL-operationer (Data definition Language). Alla drivrutiner kommunicerar med Hive-servern och till huvuddrivrutinen i Hive-tjänster som visas i arkitekturschemat ovan.

Drivrutinen som finns i Hive-tjänsterna representerar huvuddrivrutinen och den kommunicerar alla typer av JDBC-, ODBC- och andra klientspecifika applikationer. Drivrutinen kommer att behandla dessa förfrågningar från olika applikationer till metabutik och fältsystem för vidare bearbetning.

Hive Storage och Computing:

Hive-tjänster som Meta store, File system och Job Client kommunicerar i sin tur med Hive-lagring och utför följande åtgärder

  • Metadatainformation för tabeller som skapats i Hive lagras i Hive "Meta-lagringsdatabas".
  • Frågeresultat och data som laddas i tabellerna kommer att lagras i Hadoop-kluster på HDFS.

Flöde för jobbeksponering:

Från ovanstående skärmdump kan vi förstå jobbet exekveringsflödet i Hive med Hadoop

Dataflödet i Hive beter sig i följande mönster;

  1. Utföra fråga från användargränssnittet (användargränssnitt)
  2. Föraren interagerar med Compiler för att få planen. (Här planen hänvisar till frågan körning) process och dess relaterade metadata information insamling
  3. Kompilatorn skapar planen för ett jobb som ska köras. Kompilator kommunicerar med Meta-butiken för att få metadataförfrågan
  4. Meta-butiken skickar metadatainformation tillbaka till kompilatorn
  5. Kompilator kommunicerar med Driver med den föreslagna planen för att utföra frågan
  6. Förare Skickar körplaner till körningsmotorn
  7. Execution Engine (EE) fungerar som en bro mellan Hive och Hadoop för att bearbeta frågan. För DFS-operationer.
  • EE ska först kontakta Namnod och sedan till datanoder för att få värdena lagrade i tabeller.
  • EE kommer att hämta önskade poster från datanoder. De faktiska data för tabeller finns endast i datanoden. Medan från Namnod hämtas endast metadatainformationen för frågan.
  • Det samlar faktiska data från datanoder relaterade till nämnda fråga
  • Execution Engine (EE) kommunicerar i två riktningar med Meta store som finns i Hive för att utföra DDL-operationer (Data Definition Language). Här görs DDL-operationer som CREATE, DROP och ALTERING tabeller och databaser. Meta store lagrar endast information om databasnamn, tabellnamn och kolumnnamn. Det hämtar data relaterade till nämnda fråga.
  • Execution Engine (EE) kommunicerar i sin tur med Hadoop-demoner som Namnod, Datanoder och jobbspårare för att utföra frågan ovanpå Hadoop-filsystemet
  1. Hämtar resultat från föraren
  2. Skicka resultat till körmotorn. När resultaten har hämtats från datanoder till EE skickas resultaten tillbaka till föraren och till användargränssnittet (frontend)

Hive Kontinuerligt i kontakt med Hadoop-filsystemet och dess demoner via Execution engine. Den prickade pilen i flödesdiagrammet Job visar kommunikationen med exekveringsmotorn med Hadoop-demoner.

Olika lägen för Hive

Hive kan fungera i två lägen beroende på storleken på datanoderna i Hadoop.

Dessa lägen är,

  • Lokalt läge
  • Kartlägesläge

När ska man använda lokalt läge:

  • Om Hadoop installerades i pseudoläge med en datanod använder vi Hive i det här läget
  • Om datastorleken är mindre i termer av begränsad till en enda lokal maskin kan vi använda det här läget
  • Bearbetningen kommer att ske mycket snabbt på mindre datamängder som finns i den lokala maskinen

När ska du använda Map-reduceringsläge:

  • Om Hadoop har flera datanoder och data distribueras över olika noder använder vi Hive i det här läget
  • Det kommer att utföra på stora mängder datamängder och frågor som kommer att köras parallellt
  • Bearbetning av stora datamängder med bättre prestanda kan uppnås genom detta läge

I Hive kan vi ställa in den här egenskapen för att nämna vilket läge Hive kan fungera? Som standard fungerar det i Map Reduce-läge och för lokalt läge kan du ha följande inställning.

Hive för att arbeta i lokalt läge

SET mapred.job.tracker = lokal;

Från Hive version 0.7 stöder det ett läge för att köra kartor minska jobb i lokalt läge automatiskt.

Vad är Hive Server2 (HS2)?

HiveServer2 (HS2) är ett servergränssnitt som utför följande funktioner:

  • Gör det möjligt för fjärrklienter att utföra frågor mot Hive
  • Hämta resultaten från nämnda frågor

Från den senaste versionen har det några avancerade funktioner Baserat på Thrift RPC som;

  • Flera klienters samtidighet
  • Autentisering

Sammanfattning:

Hive är ett ETL- och datalagerverktyg ovanpå Hadoop-ekosystemet och används för bearbetning av strukturerad och semistrukturerad data.

  • Hive är en databas som finns i Hadoop-ekosystemet utför DDL- och DML-operationer, och det ger flexibla frågespråk som HQL för bättre frågor och bearbetning av data.
  • Det ger så många funktioner jämfört med RDMS som har vissa begränsningar.

För att användarspecifik logik ska uppfylla kundkraven.

  • Det ger möjlighet att skriva och distribuera anpassade definierade skript och användardefinierade funktioner.
  • Dessutom tillhandahåller den partitioner och hinkar för lagringsspecifik logik.