Hvad er Hive? Architecture & Modes

Hvad er Hive?

Hive er et ETL- og datavarehusværktøj udviklet oven på Hadoop Distributed File System (HDFS). Hive gør arbejdet nemt for at udføre operationer som

  • Dataindkapsling
  • Ad hoc forespørgsler
  • Analyse af enorme datasæt

Vigtige egenskaber ved Hive

  • I Hive oprettes først tabeller og databaser, og derefter indlæses data i disse tabeller.
  • Hive som datavarehus designet til kun at administrere og forespørge på strukturerede data, der er gemt i tabeller.
  • Mens det beskæftiger sig med strukturerede data, har Map Reduce ikke optimerings- og brugervenlighedsfunktioner som UDF'er, men det har Hive framework. Forespørgselsoptimering refererer til en effektiv måde at udføre forespørgsler på med hensyn til ydeevne.
  • Hives SQL-inspirerede sprog adskiller brugeren fra kompleksiteten ved Map Reduce-programmering. Den genbruger velkendte koncepter fra relationsdatabaseverdenen, såsom tabeller, rækker, kolonner og skemaer osv. for at lette indlæringen.
  • Hadoops programmering virker på flade filer. Så Hive kan bruge mappestrukturer til at "partitionere" data for at forbedre ydeevnen på visse forespørgsler.
  • En ny og vigtig komponent i Hive, dvs. Metastore, der bruges til lagring af skemaoplysninger. Denne Metastore ligger typisk i en relationsdatabase. Vi kan interagere med Hive ved hjælp af metoder som
    • Web GUI
    • Java Database Connectivity (JDBC) interface
  • De fleste interaktioner har en tendens til at finde sted over en kommandolinjegrænseflade (CLI). Hive leverer en CLI til at skrive Hive-forespørgsler ved hjælp af Hive Query Language (HQL)
  • Generelt ligner HQL-syntaksen SQL syntaks, som de fleste dataanalytikere er bekendt med. Eksempelforespørgslen nedenfor viser alle de poster, der findes i nævnte tabelnavn.
    • Eksempel forespørgsel : Vælg * fra
  • Hive understøtter fire filformater TEXTFILE, SEQUENCEFILE, ORC og RCFILE (Optag kolonnefil).
  • Til lagring af metadata for enkeltbrugere bruger Hive derby-database og til metadata for flere brugere eller delt metadata-tilfælde bruger Hive MYSQL.

Til opsætning MySQL som database og til at gemme Meta-data information check Tutorial "Installation og konfiguration af HIVE og MYSQL"

Nogle af hovedpunkterne om Hive:

  • Den største forskel mellem HQL og SQL er, at Hive-forespørgslen udføres på Hadoops infrastruktur i stedet for den traditionelle database.
  • Hive-forespørgslens udførelse vil være som en serie af automatisk genererede kortreducerende job.
  • Hive understøtter partitions- og buckets-koncepter for nem hentning af data, når klienten udfører forespørgslen.
  • Hive understøtter brugerdefinerede specifikke UDF (User Defined Functions) til datarensning, filtrering osv. I henhold til kravene fra programmørerne kan man definere Hive UDF'er.

Hive vs relationelle databaser

Ved at bruge Hive kan vi udføre nogle ejendommelige funktioner, som ikke opnås i relationelle databaser. For en enorm mængde data, der er i peta-bytes, er det vigtigt at forespørge på det og få resultater på få sekunder. Og Hive gør dette ganske effektivt, det behandler forespørgslerne hurtigt og producerer resultater på sekunders tid.

Lad nu se, hvad der gør Hive så hurtig.

Nogle vigtige forskelle mellem Hive og relationelle databaser er følgende;

Relationelle databaser er af "Skema på LÆS og Skema ved skrivning“. Først oprettes en tabel og derefter indsætte data i den pågældende tabel. På relationelle databasetabeller kan funktioner som indsættelser, opdateringer og ændringer udføres.

Hive er "Skema kun på LÆS“. Så funktioner som opdatering, ændringer osv. virker ikke med dette. Fordi Hive-forespørgslen i en typisk klynge kører på flere dataknuder. Så det er ikke muligt at opdatere og ændre data på tværs af flere noder.(Hive-versioner under 0.13)

Hive understøtter også "LÆS Mange SKRIV En gang” mønster. Hvilket betyder, at vi efter indsættelse af tabel kan opdatere tabellen i de seneste Hive-versioner.

BEMÆRK: Den nye version af Hive kommer dog med opdaterede funktioner. Hive-versioner (Hive 0.14) kommer med opdaterings- og sletindstillinger som nye funktioner

Hive Architecture

Hive Architecture

Ovenstående skærmbillede forklarer Apache Hive arkitektur i detaljer

Hive består hovedsageligt af 3 kernedele

  1. Hive-kunder
  2. Hive Services
  3. Hive Storage og Computing

Hive-kunder:

Hive leverer forskellige drivere til kommunikation med en anden type applikationer. For Thrift-baserede applikationer vil det give Thrift-klient til kommunikation.

Til Java relaterede applikationer, det giver JDBC-drivere. Andre end nogen form for applikationer leveres ODBC-drivere. Disse klienter og drivere kommunikerer igen med Hive-serveren i Hive-tjenesterne.

Hive-tjenester:

Kundeinteraktioner med Hive kan udføres gennem Hive Services. Hvis klienten ønsker at udføre nogen forespørgselsrelaterede operationer i Hive, skal den kommunikere gennem Hive Services.

CLI er kommandolinjegrænsefladen, der fungerer som Hive-tjeneste for DDL-operationer (Data definition Language). Alle drivere kommunikerer med Hive-serveren og til hoveddriveren i Hive-tjenester som vist i ovenstående arkitekturdiagram.

Driver til stede i Hive-tjenesterne repræsenterer hoveddriveren, og den kommunikerer alle typer JDBC, ODBC og andre klientspecifikke applikationer. Driveren vil behandle disse anmodninger fra forskellige applikationer til metalager og feltsystemer for yderligere behandling.

Hive-opbevaring og databehandling:

Hive-tjenester såsom Meta Store, Filsystem og Job Client kommunikerer igen med Hive-lagring og udfører følgende handlinger

  • Metadataoplysninger om tabeller, der er oprettet i Hive, gemmes i Hive "Metalagringsdatabase".
  • Forespørgselsresultater og data indlæst i tabellerne vil blive gemt i Hadoop cluster på HDFS.

Jobudførelsesflow:

Jobudførelsesflow

Fra ovenstående skærmbillede kan vi forstå jobudførelsesflowet i Hive med Hadoop

Datastrømmen i Hive opfører sig i følgende mønster;

  1. Udførelse af forespørgsel fra brugergrænsefladen (brugergrænseflade)
  2. Driveren interagerer med Compiler for at få planen. (Her refererer planen til udførelse af forespørgsler) proces og dens relaterede metadata informationsindsamling
  3. Compileren opretter planen for et job, der skal udføres. Compiler kommunikerer med Meta Store for at få metadataanmodning
  4. Meta-lager sender metadata-information tilbage til compiler
  5. Compiler kommunikerer med driveren med den foreslåede plan for at udføre forespørgslen
  6. Driver Sender eksekveringsplaner til udførelsesmotor
  7. Execution Engine (EE) fungerer som en bro mellem Hive og Hadoop til at behandle forespørgslen. Til DFS-drift.
  • EE bør først kontakte Name Node og derefter til Data noder for at få værdierne gemt i tabeller.
  • EE vil hente ønskede poster fra Data Nodes. De faktiske data for tabeller findes kun i dataknudepunktet. Mens den fra Name Node kun henter metadataoplysningerne for forespørgslen.
  • Den indsamler faktiske data fra dataknudepunkter relateret til nævnte forespørgsel
  • Execution Engine (EE) kommunikerer tovejs med Meta-lageret i Hive for at udføre DDL-operationer (Data Definition Language). Her udføres DDL-operationer som CREATE, DROP og ALTERING tabeller og databaser. Meta store gemmer kun information om databasenavn, tabelnavne og kolonnenavne. Det vil hente data relateret til den nævnte forespørgsel.
  • Execution Engine (EE) kommunikerer på sin side med Hadoop-dæmoner såsom Name node, Data nodes og job tracker for at udføre forespørgslen oven på Hadoop-filsystemet
  1. Henter resultater fra driveren
  2. Sender resultater til Execution Engine. Når resultaterne er hentet fra dataknudepunkter til EE, vil det sende resultater tilbage til driveren og til brugergrænsefladen (frontend)

Hive Løbende i kontakt med Hadoop-filsystemet og dets dæmoner via Execution Engine. Den stiplede pil i jobflowdiagrammet viser kommunikationen med udførelsesmotoren med Hadoop-dæmoner.

Forskellige tilstande af Hive

Hive kan fungere i to tilstande afhængigt af størrelsen af ​​dataknudepunkter i Hadoop.

Disse tilstande er,

  • Lokal tilstand
  • Kortreducer tilstand

Hvornår skal du bruge lokal tilstand:

  • Hvis Hadoop er installeret i pseudo-tilstand med én dataknude, bruger vi Hive i denne tilstand
  • Hvis datastørrelsen er mindre i forhold til begrænset til en enkelt lokal maskine, kan vi bruge denne tilstand
  • Behandlingen vil være meget hurtig på mindre datasæt, der findes på den lokale maskine

Hvornår skal du bruge kortreduceringstilstand:

  • Hvis Hadoop har flere dataknuder, og data er fordelt på tværs af forskellige knudepunkter, bruger vi Hive i denne tilstand
  • Det vil udføre på store mængder af datasæt og forespørgsler vil udføre parallelt
  • Behandling af store datasæt med bedre ydeevne kan opnås gennem denne tilstand

I Hive kan vi indstille denne egenskab til at nævne, hvilken tilstand Hive kan fungere? Som standard fungerer det i Map Reduce-tilstand, og for lokal tilstand kan du have følgende indstilling.

Hive til at arbejde i lokal tilstand sæt

SET mapred.job.tracker=lokal;

Fra Hive version 0.7 understøtter den en tilstand til automatisk at køre kortreducere job i lokal tilstand.

Hvad er Hive Server2 (HS2)?

HiveServer2 (HS2) er en servergrænseflade, der udfører følgende funktioner:

  • Gør det muligt for fjernklienter at udføre forespørgsler mod Hive
  • Hent resultaterne af nævnte forespørgsler

Fra den seneste version har den nogle avancerede funktioner baseret på Thrift RPC som;

  • Multi-klient samtidighed
  • Godkendelse

Resumé

Hive er et ETL- og datavarehusværktøj oven på Hadoop-økosystemet og bruges til at behandle strukturerede og semistrukturerede data.

  • Hive er en database, der findes i Hadoop-økosystemet, der udfører DDL- og DML-operationer, og den giver fleksibelt forespørgselssprog såsom HQL for bedre forespørgsel og behandling af data.
  • Det giver så mange funktioner sammenlignet med RDMS, som har visse begrænsninger.

Til brugerspecifik logik, der opfylder kundens krav.

  • Det giver mulighed for at skrive og implementere brugerdefinerede scripts og brugerdefinerede funktioner.
  • Derudover giver det partitioner og buckets til opbevaringsspecifikke logikker.