Što je Hive? Architekstura i načini rada
⚡ Pametni sažetak
Hive je SQL sloj Hadoop ekosustava koji pretvara HiveQL naredbe u distribuirane poslove koji čitaju strukturirane podatke koji se već nalaze na HDFS-u, tako da analitičari ispituju petabajtne tablice bez pisanja MapReduce koda.

Što je Hive?
Hive je ETL alat i alat za skladištenje podataka razvijen na Hadoop distribuiranom datotečnom sustavu (HDFS). Hive olakšava obavljanje operacija poput
- Enkapsulacija podataka
- Ad-hoc upiti
- Analiza velikih skupova podataka
Važne karakteristike košnice
Dolje navedene točke objašnjavaju što razlikuje Hive od običnog MapReduce programa.
- U Hiveu se prvo kreiraju tablice i baze podataka, a zatim se podaci učitavaju u te tablice.
- Hive je skladište podataka dizajnirano za upravljanje i ispitivanje samo strukturiranih podataka koji su pohranjeni u tablicama.
- Dok radi sa strukturiranim podacima, MapReduce nema značajke optimizacije i upotrebljivosti poput UDF-ova, ali ih Hive framework ima. Optimizacija upita odnosi se na učinkovit način izvršavanja upita u smislu performansi.
- Hiveov jezik inspiriran SQL-om odvaja korisnika od složenosti MapReduce programiranja. Ponovno koristi poznate koncepte iz svijeta relacijskih baza podataka, kao što su tablice, retci, stupci i sheme, radi lakšeg učenja.
- Hadoopovo programiranje radi na ravnim datotekama. Dakle, Hive može koristiti strukture direktorija za "particija" podatke za poboljšanje performansi na određenim upitima.
- Važna komponenta Hivea je metastore, koji se koristi za pohranjivanje informacija o shemi. Ovaj metastore se obično nalazi u relacijskoj bazi podataka. S Hiveom možemo komunicirati pomoću metoda poput
- Web GUI
- Java Database Connectivity (JDBC) sučelje
- Većina interakcija se obično odvija putem sučelja naredbenog retka (CLI). Hive pruža CLI za pisanje Hive upita pomoću Hive Query Language (HQL).
- Općenito, HQL sintaksa je slična SQL sintaksa s kojom je većina analitičara podataka upoznata. Primjer upita u nastavku prikazuje sve zapise prisutne u spomenutoj tablici s nazivom.
- Uzorak upita : Odaberite * iz
- Hive podržava četiri formata datoteka, a to su TEXTFILE, SEQUENCEFILE, ORC i RCFILE (Datoteka u stupcu zapisa).
- Za pohranu metapodataka za jednog korisnika, Hive koristi Derby bazu podataka, a za pohranu metapodataka za više korisnika ili dijeljene metapodatke Hive koristi MySQL.
Za postavljanje MySQL kao bazu podataka i za pohranu metapodataka, pogledajte vodič o konfiguriranje Hive metastore-a s MySQL, što slijedi iz Vodič za ugradnju košnice.
Neke od ključnih točaka o Hiveu:
- Glavna razlika između HQL-a i SQL-a je u tome što se Hive upit izvršava na Hadoopovoj infrastrukturi, a ne na tradicionalnoj bazi podataka.
- Izvršavanje Hive upita je niz automatski generiranih MapReduce radnih mjesta.
- Hive podržava koncepte particije i spremnika za jednostavno dohvaćanje podataka kada klijent izvrši upit.
- Hive podržava prilagođene opcije UDF-ovi (korisnički definirane funkcije) za čišćenje podataka, filtriranje i slične poslove. Prema zahtjevima programera, mogu se definirati Hive UDF-ovi.
Košnica protiv relacijskih baza podataka
Hive obavlja funkcije koje relacijske baze podataka ne mogu. Kada su podaci veličine petabajta, vraćanje rezultata u sekundama je važno, a Hive to radi učinkovito. Ključne razlike su sljedeće.
Relacijske baze podataka su od „shema pri čitanju i shema pri pisanju“: prvo se kreira tablica, a zatim se podaci ubacuju u tu tablicu. Na tablicama relacijske baze podataka mogu se izvoditi funkcije poput ubacivanja, ažuriranja i izmjena.
Košnica je "shema samo za čitanje"Dakle, funkcije poput ažuriranja i modifikacije nisu radile u ranim izdanjima, jer se Hive upit u tipičnom klasteru izvršava na više DataNode-ova, što je onemogućavalo ažuriranje i modifikaciju podataka na više čvorova (Hive verzije starije od 0.13).
Hive također podržava "Čitaj više, piši jednom" uzorak, tako da se u novijim verzijama tablica može ažurirati nakon umetanja.
NAPOMENA: Novije verzije Hivea dolaze s ažuriranim značajkama. Hive 0.14 uveo je UPDATE i DELETE kao nove značajke, a kasnija izdanja dodala su punu podršku za ACID transakcije.
Donja tablica sažima usporedbu.
| Aspekt | Relacijska baza podataka | Apache košnica |
|---|---|---|
| Provjera valjanosti sheme | Pri pisanju | Pri čitanju |
| Tipična količina podataka | Gigabajti u terabajte | Terabajti u petabajte |
| Radno opterećenje | OLTP na razini redova čita i piše | Analiza serije s potpunim skeniranjem |
| Jezik upita | SQL | HQL, dijalekt inspiriran SQL-om |
| Izvršenje | Mehanizam baze podataka | Distribuirani klasterski poslovi |
Košnica Architektura
Donji dijagram objašnjava apaš Detaljan prikaz arhitekture košnice.
Košnica se uglavnom sastoji od 3 glavna dijela:
- Klijenti košnice
- Usluge košnice
- Pohrana i računanje u košnici
Hive Klijenti
Hive pruža različite upravljačke programe za komunikaciju s različitim vrstama aplikacija. Za aplikacije temeljene na Thriftu, pruža Thrift klijent za komunikaciju.
Za Java Za povezane aplikacije pruža JDBC upravljačke programe. Za bilo koju drugu vrstu aplikacije pruža ODBC upravljačke programe. Ti klijenti i upravljački programi zauzvrat komuniciraju s Hive poslužiteljem u Hive uslugama.
Usluge košnica
Interakcije klijenata s Hiveom obavljaju se putem Hive usluga. Ako klijent želi izvršiti bilo koju operaciju vezanu uz upite u Hiveu, mora komunicirati putem Hive usluga.
CLI djeluje kao Hive servis za DDL operacije. Svi upravljački programi komuniciraju s Hive poslužiteljem i glavnim upravljačkim programom u Hive servisima, kao što je prikazano na gornjem dijagramu arhitekture.
Upravljački program u Hive servisima je glavni upravljački program: komunicira s JDBC-om, ODBC-om i drugim aplikacijama specifičnim za klijenta, a zatim prosljeđuje njihove zahtjeve metastoreu i datotečnom sustavu na daljnju obradu.
Hive Storage and Computing
Hive usluge kao što su metastore, datotečni sustav i klijent posla pak komuniciraju s Hive pohranom i izvode sljedeće radnje:
- Metapodaci o tablicama stvorenim u Hiveu pohranjeni su u Hiveu. metastore baza podataka.
- Rezultati upita i podaci učitani u tablice pohranjuju se u Hadoop klasteru na HDFS.
Tijek izvršavanja posla
Dijagram ispod tracjedan upit od korisničkog sučelja do DataNode-ova i natrag.
Iz gornjeg dijagrama možemo razumjeti tijek izvršavanja poslova u Hiveu s Hadoopom. Tok podataka u Hiveu ponaša se na sljedeći način.
- Izvršavanje upita iz korisničkog sučelja (UI)
- Upravljački program komunicira s kompajlerom kako bi dobio plan. (Ovdje se plan odnosi na proces izvršavanja upita i prikupljanje povezanih metapodataka.)
- Kompajler stvara plan za izvršavanje zadatka. Kompajler komunicira s metapohranom kako bi dobio zahtjev za metapodacima.
- Metastore šalje metapodatke natrag kompajleru
- Kompajler komunicira s upravljačkim programom s predloženim planom za izvršavanje upita
- Upravljački program šalje planove izvršenja izvršnom mehanizmu
- Izvršni mehanizam (EE) djeluje kao most između Hivea i Hadoopa za obradu upita, uključujući DFS operacije:
- EE prvo kontaktira NameNode, a zatim DataNode kako bi dobio vrijednosti pohranjene u tablicama.
- EE dohvaća željene zapise iz DataNode-ova. Stvarni podaci tablice nalaze se samo na podatkovnim čvorovima; iz NameNode-a dohvaća samo metapodatke za upit.
- Prikuplja stvarne podatke iz podatkovnih čvorova povezanih s navedenim upitom
- EE dvosmjerno komunicira s metastoreom kako bi izvršavao DDL (jezik za definiciju podataka) operacije kao što su STVARANJE, ISPUŠTANJE i PROMJENA na tablicama i bazama podataka. Metastore pohranjuje samo nazive baza podataka, tablica i stupaca.
- EE pak komunicira s Hadoop demonima kao što su NameNode, DataNodes i job. tracker za izvršavanje upita na vrhu Hadoop datotečnog sustava
- Dohvaćanje rezultata od vozača
- Slanje rezultata izvršnom mehanizmu. Nakon što se rezultati dohvate s podatkovnih čvorova do EE-a, on ih šalje natrag upravljačkom programu i korisničkom sučelju (front-endu).
Hive ostaje u kontaktu s Hadoop datotečnim sustavom i njegovim demonima putem izvršnog mehanizma. Isprekidana strelica na dijagramu prikazuje tu komunikaciju.
Različiti načini Hive
Hive može raditi u dva načina rada ovisno o veličini podatkovnih čvorova u Hadoopu. Ti načini rada su:
- Lokalni način
- Način rada MapReduce
Kada koristiti lokalni način rada
- Ako je Hadoop instaliran u pseudodistribuiranom načinu rada s jednim podatkovnim čvorom, u ovom načinu rada koristimo Hive.
- Ako je veličina podataka dovoljno mala da se ograniči na jedno lokalno računalo, možemo koristiti ovaj način rada
- Obrada će biti vrlo brza na manjim skupovima podataka koji se nalaze na lokalnom računalu
Kada koristiti MapReduce način rada
- Ako Hadoop ima više podatkovnih čvorova i podaci su distribuirani po različitim čvorovima, u ovom načinu rada koristimo Hive.
- Izvršava se na velikim količinama podataka, a upiti se izvršavaju paralelno.
- Obrada velikih skupova podataka s boljom izvedbom može se postići ovim načinom
U Hiveu možemo postaviti svojstvo koje određuje u kojem načinu rada Hive treba raditi. Prema zadanim postavkama radi u MapReduce načinu rada, a za lokalni način rada možete koristiti sljedeću postavku:
SET mapred.job.tracker=local;
Od verzije Hivea 0.7 nadalje, podržava način rada koji automatski pokreće MapReduce poslove u lokalnom načinu rada. Na Hiveu 4.x zadani mehanizam je Apache Tez, pa se ovo svojstvo odnosi na naslijeđenu MapReduce putanju.
Što je Hive Server2 (HS2)?
HiveServer2 (HS2) je poslužiteljsko sučelje koje obavlja sljedeće funkcije:
- Omogućuje udaljenim klijentima izvršavanje upita protiv Hivea
- Dohvaća rezultate tih upita
Trenutne verzije dodaju napredne značajke temeljene na Thrift RPC-u, kao što su:
- Konkurentnost s više klijenata
- Ovjera
HS2 stoji iza Beelinea i svake JDBC ili ODBC sesije, zbog čega je zamijenio Hive CLI za jednog korisnika. HiveQL operatori i ugrađene funkcije referenca je prirodan sljedeći korak.


