Hvad er Hive? Architecture & Modes
โก Smart opsummering
Hive er SQL-laget i Hadoop-รธkosystemet, der omdanner HiveQL-sรฆtninger til distribuerede job, der lรฆser strukturerede data, der allerede findes pรฅ HDFS, sรฅ analytikere forespรธrger petabyte-tabeller uden selv at skrive MapReduce-kode.

Hvad er Hive?
Hive er et ETL- og datalagringsvรฆrktรธj udviklet oven pรฅ Hadoop Distributed File System (HDFS). Hive gรธr det nemt at udfรธre operationer som f.eks.
- Dataindkapsling
- Ad hoc forespรธrgsler
- Analyse af enorme datasรฆt
Vigtige egenskaber ved Hive
Punkterne nedenfor forklarer, hvad der adskiller Hive fra et almindeligt MapReduce-program.
- I Hive oprettes fรธrst tabeller og databaser, og derefter indlรฆses data i disse tabeller.
- Hive er et datalager designet til at administrere og forespรธrge udelukkende strukturerede data, der er gemt i tabeller.
- Nรฅr det gรฆlder strukturerede data, har MapReduce ikke optimerings- og brugervenlighedsfunktioner som UDF'er, men det har Hive-frameworket. 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 i MapReduce-programmering. Det genbruger velkendte koncepter fra relationsdatabaseverdenen, sรฅsom tabeller, rรฆkker, kolonner og skemaer, for at lette lรฆringen.
- Hadoops programmering fungerer pรฅ flade filer. Sรฅ Hive kan bruge mappestrukturer til at "skillevรฆg" data for at forbedre ydeevnen pรฅ bestemte forespรธrgsler.
- En vigtig komponent i Hive er metastoren, der bruges til at lagre skemainformation. Denne metastore findes 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 finder typisk sted via 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 det nรฆvnte tabelnavn.
- Eksempel forespรธrgsel : Vรฆlg * fra
- Hive understรธtter fire filformater, disse er TEXTFILE, SEQUENCEFILE, ORC og RCFILE (Optag kolonnefil).
- Til lagring af metadata for รฉn bruger bruger Hive Derby-databasen, og til metadata for flere brugere eller delte metadata bruger Hive MySQL.
Til opsรฆtning MySQL som databasen og for at gemme metadataoplysninger, se vejledningen pรฅ konfiguration af Hive-metastoren med MySQL, som fรธlger efter den Hive installationsvejledning.
Nogle af hovedpunkterne om Hive:
- Den stรธrste forskel mellem HQL og SQL er, at en Hive-forespรธrgsel udfรธres pรฅ Hadoops infrastruktur i stedet for pรฅ en traditionel database.
- Udfรธrelse af Hive-forespรธrgsler er en rรฆkke automatisk genererede KortReducer beskรฆftigelse.
- Hive understรธtter partition- og bucket-koncepter for nem hentning af data, nรฅr klienten udfรธrer forespรธrgslen.
- Hive understรธtter brugerdefineret UDF'er (brugerdefinerede funktioner) til datarensning, filtrering og lignende arbejde. I henhold til programmรธrernes krav kan man definere Hive UDF'er.
Hive vs relationelle databaser
Hive udfรธrer funktioner, som relationelle databaser ikke kan. Nรฅr data kรธrer i petabytes, er det vigtigt at returnere resultater i sekunder, og Hive gรธr dette effektivt. De vigtigste forskelle er fรธlgende.
Relationelle databaser er af "Skema ved lรฆsning og skema ved skrivning"Fรธrst oprettes en tabel, derefter indsรฆttes data i tabellen. Pรฅ relationelle databasetabeller kan funktioner som indsรฆttelser, opdateringer og รฆndringer udfรธres.
Bistade er "Skema kun skrivebeskyttet"Sรฅ funktioner som opdatering og รฆndring fungerede ikke i tidlige udgivelser, fordi en Hive-forespรธrgsel i en typisk klynge kรธrer pรฅ tvรฆrs af flere DataNodes, hvilket gjorde det umuligt at opdatere og รฆndre data pรฅ tvรฆrs af flere noder (Hive-versioner under 0.13).
Hive understรธtter ogsรฅ "Lรฆs mange, skriv รฉn gang" mรธnster, sรฅ i nyere versioner kan en tabel opdateres efter indsรฆttelse.
BEMรRK VENLIGST: Nyere versioner af Hive kommer med opdaterede funktioner. Hive 0.14 introducerede UPDATE og DELETE som nye funktioner, og senere udgivelser tilfรธjede fuld understรธttelse af ACID-transaktioner.
Tabellen nedenfor kondenserer sammenligningen.
| Aspect | Relationel database | Apache Hive |
|---|---|---|
| Skema validering | Ved skrivning | Lรฆst |
| Typisk datavolumen | Gigabyte til terabyte | Terabyte til petabyte |
| arbejdsbyrde | OLTP pรฅ rรฆkkeniveau lรฆser og skriver | Fuld scanning af batchanalyser |
| Forespรธrgselssprog | SQL | HQL, en SQL-inspireret dialekt |
| Udfรธrelse | Database motor | Distribuerede klyngejob |
Hive Architecture
Diagrammet nedenfor forklarer Apache Hive-arkitektur i detaljer.
Hive bestรฅr hovedsageligt af 3 kernedele:
- Hive-klienter
- Hive-tjenester
- Hive-lagring og -databehandling
Hive-kunder
Hive leverer forskellige drivere til kommunikation med forskellige typer applikationer. Til Thrift-baserede applikationer leverer den en Thrift-klient til kommunikation.
Til Java Til relaterede applikationer leverer den JDBC-drivere. Til alle andre typer applikationer leverer den ODBC-drivere. Disse klienter og drivere kommunikerer til gengรฆld med Hive-serveren i Hive-tjenesterne.
Hive Services
Klientinteraktioner med Hive udfรธres via Hive-tjenester. Hvis klienten รธnsker at udfรธre en forespรธrgselsrelateret handling i Hive, skal den kommunikere via Hive-tjenester.
CLI'en fungerer som Hive-tjenesten til DDL-operationer. Alle drivere kommunikerer med Hive-serveren og hoveddriveren i Hive-tjenester, som vist i arkitekturdiagrammet ovenfor.
Driveren i Hive-tjenester er den primรฆre driver: den kommunikerer med JDBC, ODBC og andre klientspecifikke applikationer og sender derefter deres anmodninger til metastoret og filsystemet til videre behandling.
Hive Storage og Computing
Hive-tjenester sรฅsom metastoren, filsystemet og jobklienten kommunikerer til gengรฆld med Hive-lagring og udfรธrer fรธlgende handlinger:
- Metadataoplysninger om tabeller oprettet i Hive gemmes i Hive metastore-database.
- Forespรธrgselsresultater og data, der indlรฆses i tabellerne, gemmes i Hadoop-klyngen pรฅ HDFS.
Jobudfรธrelsesflow
Diagrammet nedenfor tracsender รฉn forespรธrgsel fra brugergrรฆnsefladen til DataNodes og tilbage.
Ud fra ovenstรฅende diagram kan vi forstรฅ jobudfรธrelsesflowet i Hive med Hadoop. Dataflowet i Hive opfรธrer sig i fรธlgende mรธnster.
- Udfรธrelse af en forespรธrgsel fra brugergrรฆnsefladen
- Driveren interagerer med compileren for at hente planen. (Her refererer plan til forespรธrgselsudfรธrelsesprocessen og dens relaterede indsamling af metadatainformation.)
- Compileren opretter planen for det job, der skal udfรธres. Compileren kommunikerer med metastoret for at hente metadataanmodningen.
- Metastoren sender metadatainformation tilbage til compileren
- Compileren kommunikerer med driveren med den foreslรฅede plan for at udfรธre forespรธrgslen.
- Chauffรธren sender udfรธrelsesplaner til udfรธrelsesmotoren
- Udfรธrelsesmotoren (EE) fungerer som en bro mellem Hive og Hadoop for at behandle forespรธrgslen, inklusive DFS-operationer:
- EE kontakter fรธrst NameNode og derefter DataNodes for at hente de vรฆrdier, der er gemt i tabellerne.
- EE henter de รธnskede poster fra DataNodes. De faktiske tabeldata findes kun pรฅ datanoderne; fra NameNode henter den kun metadata til forespรธrgslen.
- Den indsamler faktiske data fra datanoderne relateret til den nรฆvnte forespรธrgsel.
- EE kommunikerer tovejs med metastoren for at udfรธre DDL (data definition language) operationer sรฅsom OPRET, SLIP og รNDRE pรฅ tabeller og databaser. Metastoren gemmer kun database-, tabel- og kolonnenavne.
- EE kommunikerer til gengรฆld med Hadoop-daemoner sรฅsom NameNode, DataNodes og job. tracker til at udfรธre forespรธrgslen oven pรฅ Hadoop-filsystemet
- Henter resultater fra driveren
- Sender resultater til udfรธrelsesmotoren. Nรฅr resultaterne er hentet fra datanoderne til EE'en, sender den resultaterne tilbage til driveren og til brugergrรฆnsefladen (frontend).
Hive holder kontakten med Hadoop-filsystemet og dets dรฆmoner via eksekveringsmotoren. Den stiplede pil i diagrammet viser denne kommunikation.
Forskellige tilstande af Hive
Hive kan fungere i to tilstande afhรฆngigt af stรธrrelsen af โโdatanoderne i Hadoop. Disse tilstande er:
- Lokal tilstand
- MapReduce-tilstand
Hvornรฅr skal man bruge lokal tilstand
- Hvis Hadoop er installeret i pseudodistribueret tilstand med รฉn datanode, bruger vi Hive i denne tilstand.
- Hvis datastรธrrelsen er lille nok til at vรฆre 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 MapReduce-tilstand bruges
- Hvis Hadoop har flere datanoder, og data er fordelt pรฅ tvรฆrs af de forskellige noder, bruger vi Hive i denne tilstand
- Den arbejder pรฅ store mรฆngder data, og forespรธrgslen udfรธres parallelt.
- Behandling af store datasรฆt med bedre ydeevne kan opnรฅs gennem denne tilstand
I Hive kan vi indstille en egenskab, der angiver, hvilken tilstand Hive skal fungere i. Som standard fungerer den i MapReduce-tilstand, og til lokal tilstand kan du bruge fรธlgende indstilling:
SET mapred.job.tracker=local;
Fra Hive version 0.7 og fremefter understรธttes en tilstand, der automatisk kรธrer MapReduce-job i lokal tilstand. Pรฅ Hive 4.x er standardmotoren Apache Tez, sรฅ denne egenskab gรฆlder for den รฆldre MapReduce-sti.
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
- Henter resultaterne af disse forespรธrgsler
Nuvรฆrende versioner tilfรธjer avancerede funktioner baseret pรฅ Thrift RPC, sรฅsom:
- Multi-klient samtidighed
- Godkendelse
HS2 ligger bag Beeline og alle JDBC- eller ODBC-sessioner, hvilket er grunden til, at den erstattede Hive CLI til รฉn bruger. HiveQL-operatorer og indbyggede funktioner Reference er det naturlige nรฆste skridt.


