I denne veiledningen vil du lære-
- Hva er Hive?
- Hive Arkitektur
- Ulike moduser for Hive
- Hva er Hive Server2 (HS2)?
Hva er Hive?
Hive er et ETL- og datalagerverktøy utviklet på toppen av Hadoop Distributed File System (HDFS). Hive gjør jobben enkel for å utføre operasjoner som
- Innkapsling av data
- Ad-hoc-spørsmål
- Analyse av store datasett
Viktige kjennetegn ved Hive
- I Hive opprettes først tabeller og databaser, og deretter lastes data inn i disse tabellene.
- Hive som datalager designet for å administrere og spørre bare strukturerte data som er lagret i tabeller.
- Mens du arbeider med strukturerte data, har Map Reduce ikke optimaliserings- og brukervennlighetsfunksjoner som UDF-er, men Hive framework har det. Spørreoptimalisering refererer til en effektiv måte å utføre spørringer på når det gjelder ytelse.
- Hives SQL-inspirerte språk skiller brukeren fra kompleksiteten i Map Reduce programmering. Den bruker kjente konsepter fra den relasjonelle databaseverdenen, for eksempel tabeller, rader, kolonner og skjema, etc. for å gjøre det lettere å lære.
- Hadoops programmering fungerer på flate filer. Så, Hive kan bruke katalogstrukturer til å "partisjonere" data for å forbedre ytelsen på visse spørsmål.
- En ny og viktig komponent i Hive, dvs. Metastore som brukes til å lagre skjemainformasjon. Denne metastore ligger vanligvis i en relasjonsdatabase. Vi kan samhandle med Hive ved hjelp av metoder som
- Web-GUI
- Java Database Connectivity (JDBC) interface
- De fleste interaksjoner har en tendens til å finne sted over et kommandolinjegrensesnitt (CLI). Hive gir en CLI for å skrive Hive-spørsmål ved hjelp av Hive Query Language (HQL)
- Vanligvis ligner HQL-syntaksen SQL-syntaksen som de fleste dataanalytikere er kjent med. Eksempelspørringen nedenfor viser alle postene i nevnte tabellnavn.
- Eksempel på spørsmål : Velg * fra
- Eksempel på spørsmål : Velg * fra
- Hive støtter fire filformater, de er TEXTFILE, SEQUENCEFILE, ORC og RCFILE (Record Columnar File).
- For enkelbruker metadata lagring bruker Hive derby database og for flere brukere Metadata eller delt Metadata sak Hive bruker MYSQL.
For å sette opp MySQL som database og for å lagre metadatainformasjon sjekk Veiledning "Installasjon og konfigurering av HIVE og MYSQL"
Noen av de viktigste punktene om Hive:
- Den største forskjellen mellom HQL og SQL er at Hive-spørringen kjøres på Hadoops infrastruktur i stedet for den tradisjonelle databasen.
- Hive-spørringskjøringen kommer til å være som en serie med automatisk genererte kart som reduserer jobber.
- Hive støtter partisjon og skuffekonsepter for enkel henting av data når klienten utfører spørringen.
- Hive støtter tilpassede spesifikke UDF (brukerdefinerte funksjoner) for datarensing, filtrering, etc. I henhold til kravene til programmererne kan man definere Hive UDFer.
Hive Vs Relational Databases: -
Ved å bruke Hive kan vi utføre en spesiell funksjonalitet som ikke oppnås i Relasjonsdatabaser. For en enorm mengde data som er i petabytes, er det viktig å spørre om det og få resultater på få sekunder. Og Hive gjør dette ganske effektivt, det behandler spørringene raskt og gir resultater i andres tid.
La oss nå se hva som gjør Hive så raskt.
Noen viktige forskjeller mellom Hive og relasjonsdatabaser er følgende;
Relasjonsdatabaser er av " Schema on READ og Schema on Write ". Først oppretter du en tabell og setter deretter inn data i den aktuelle tabellen. På relasjonelle databasetabeller kan funksjoner som innsettinger, oppdateringer og modifikasjoner utføres.
Hive er " Schema on READ only ". Så, funksjoner som oppdatering, modifikasjoner osv. Fungerer ikke med dette. Fordi Hive-spørringen i en typisk klynge kjører på flere datanoder. Så det er ikke mulig å oppdatere og endre data på tvers av flere noder. (Hive-versjoner under 0.13)
Dessuten støtter Hive " LES mange skriv en gang " -mønster. Noe som betyr at etter å ha satt inn tabell kan vi oppdatere tabellen i de nyeste Hive-versjonene.
MERKNAD : Den nye versjonen av Hive kommer imidlertid med oppdaterte funksjoner. Hive-versjoner (Hive 0.14) kommer med oppdaterings- og slettealternativer som nye funksjoner
Hive Arkitektur
Skjermbildet ovenfor forklarer Apache Hive-arkitekturen i detalj
Hive består av hovedsakelig 3 kjernedeler
- Hive-klienter
- Hive Services
- Hive Lagring og databehandling
Hive klienter:
Hive tilbyr forskjellige drivere for kommunikasjon med en annen type applikasjoner. For Thrift-baserte applikasjoner vil den gi Thrift-klienten kommunikasjon.
For Java-relaterte applikasjoner gir den JDBC-drivere. Annet enn noen form for applikasjoner ga ODBC-drivere. Disse klientene og driverne kommuniserer igjen igjen med Hive-serveren i Hive-tjenestene.
Hive Services:
Klientinteraksjoner med Hive kan utføres gjennom Hive Services. Hvis klienten ønsker å utføre spørrerelaterte operasjoner i Hive, må den kommunisere gjennom Hive Services.
CLI er kommandolinjegrensesnittet fungerer som Hive-tjeneste for DDL (Data definition Language) -operasjoner. Alle drivere kommuniserer med Hive-serveren og til hoveddriveren i Hive-tjenester som vist i arkitekturdiagrammet ovenfor.
Driveren som er tilstede i Hive-tjenestene representerer hoveddriveren, og den kommuniserer alle typer JDBC, ODBC og andre klientspesifikke applikasjoner. Driver vil behandle disse forespørslene fra forskjellige applikasjoner til metabutikk og feltsystemer for videre behandling.
Hive Lagring og databehandling:
Hive-tjenester som Meta store, File system og Job Client kommuniserer i sin tur med Hive-lagring og utfører følgende handlinger
- Metadatainformasjon for tabeller opprettet i Hive lagres i Hive "Meta storage database".
- Spørringsresultater og data som er lastet inn i tabellene skal lagres i Hadoop-klyngen på HDFS.
Strømning av jobbekspeksjon:
Fra skjermbildet ovenfor kan vi forstå jobbutførelsesflyten i Hive med Hadoop
Dataflyten i Hive oppfører seg i følgende mønster;
- Utføre spørring fra brukergrensesnittet (brukergrensesnitt)
- Sjåføren kommuniserer med Compiler for å få tak i planen. (Her refererer plan til spørringskjøring) prosess og tilhørende metadatainnsamling
- Kompilatoren lager planen for en jobb som skal utføres. Kompilator som kommuniserer med Meta-butikken for å få metadataforespørsel
- Meta-butikken sender metadatainformasjon tilbake til kompilatoren
- Kompilator som kommuniserer med Driver med den foreslåtte planen for å utføre spørringen
- Driver Sende kjøringsplaner til kjøremotor
- Execution Engine (EE) fungerer som en bro mellom Hive og Hadoop for å behandle spørringen. For DFS-operasjoner.
- EE skal først kontakte Name Node og deretter til Data noder for å få verdiene lagret i tabeller.
- EE skal hente ønskede poster fra datanoder. De faktiske dataene til tabellene ligger bare i datanoden. Mens det fra Navnode bare henter metadatainformasjonen for spørringen.
- Den samler faktiske data fra datanoder relatert til nevnte spørring
- Execution Engine (EE) kommuniserer toveis med Meta-butikken i Hive for å utføre DDL-operasjoner (Data Definition Language). Her gjøres DDL-operasjoner som CREATE, DROP og ALTERING tabeller og databaser. Meta store lagrer kun informasjon om databasenavn, tabellnavn og kolonnenavn. Den vil hente data relatert til nevnte spørring.
- Utførelsesmotor (EE) kommuniserer i sin tur med Hadoop-demoner som Navneknute, Datanoder og jobbsporing for å utføre spørringen på toppen av Hadoop-filsystemet
- Henter resultater fra sjåføren
- Sende resultater til kjøremotoren. Når resultatene er hentet fra datanoder til EE, vil den sende resultatene tilbake til sjåføren og til brukergrensesnittet (frontend)
Hive Kontinuerlig i kontakt med Hadoop-filsystemet og dets demoner via kjøringsmotoren. Den stiplete pilen i jobbflytskjemaet viser kjøringen av kommunikasjonen med Hadoop-demoner.
Ulike moduser for Hive
Hive kan operere i to moduser avhengig av størrelsen på datanodene i Hadoop.
Disse modusene er,
- Lokal modus
- Kartreduserende modus
Når skal du bruke lokal modus:
- Hvis Hadoop er installert i pseudomodus med en datanode, bruker vi Hive i denne modusen
- Hvis datastørrelsen er mindre når det gjelder begrenset til én lokal maskin, kan vi bruke denne modusen
- Behandlingen vil være veldig rask på mindre datasett som finnes i den lokale maskinen
Når skal du bruke Map reduseringsmodus:
- Hvis Hadoop har flere datanoder og data distribueres over forskjellige noder, bruker vi Hive i denne modusen
- Det vil utføre på store mengder datasett og spørsmål som skal utføres parallelt
- Behandling av store datasett med bedre ytelse kan oppnås gjennom denne modusen
I Hive kan vi stille denne egenskapen til å nevne hvilken modus Hive kan fungere? Som standard fungerer den i Map Reduce-modus, og for lokal modus kan du ha følgende innstilling.
Hive for å jobbe i lokal modus satt
SETT mapred.job.tracker = lokal;
Fra Hive versjon 0.7 støtter den en modus for å kjøre kart automatisk redusere jobber i lokal modus.
Hva er Hive Server2 (HS2)?
HiveServer2 (HS2) er et servergrensesnitt som utfører følgende funksjoner:
- Gjør det mulig for eksterne klienter å utføre spørsmål mot Hive
- Hent resultatene av nevnte spørsmål
Fra den nyeste versjonen har den noen avanserte funksjoner Basert på Thrift RPC som;
- Multiklient-samtidighet
- Godkjenning
Sammendrag:
Hive er et ETL- og datalagerverktøy på toppen av Hadoop-økosystemet og brukes til behandling av strukturerte og semistrukturerte data.
- Hive er en database som er tilstede i Hadoop økosystem utfører DDL og DML operasjoner, og det gir fleksibelt spørrespråk som HQL for bedre spørring og behandling av data.
- Det gir så mange funksjoner sammenlignet med RDMS, som har visse begrensninger.
For at brukerspesifikk logikk skal oppfylle kundens krav.
- Det gir mulighet for å skrive og distribuere egendefinerte skript og brukerdefinerte funksjoner.
- I tillegg gir den partisjoner og bøtter for lagringsspesifikk logikk.