Š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 to: Alat za ETL i skladištenje podataka koji dodaje tablice, retke i stupce datotekama pohranjenim u HDFS-u.
  • 🗂️ Metastore: Informacije o shemi nalaze se u relacijskom metaskladištu, podržanom od strane Derbyja za jednog korisnika i od strane MySQL za zajednički pristup.
  • 🆚 Protiv RDBMS-a: Hive provjerava shemu prilikom čitanja, skalira horizontalno i favorizira velika skeniranja u odnosu na ažuriranja na razini redaka koja baza podataka obrađuje.
  • 🏗️ Tri sloja: Klijenti, usluge i pohrana tvore arhitekturu, a upravljački program koordinira kompajler, metapohranu i izvršni mehanizam.
  • 🔀 Dva načina: Lokalni način rada odgovara jednom podatkovnom čvoru i malim datotekama, dok MapReduce način rada raspoređuje izvršavanje na klaster s više čvorova.
  • 🔌 HiveServer2: HS2 sučelje temeljeno na Thriftu dodaje istodobnost i autentifikaciju više klijenata za udaljene sesije.

Arhitektura i načini rada košnice

Š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.

Dijagram arhitekture Apache Hivea koji prikazuje klijente, usluge, pohranu i računalstvo

Košnica se uglavnom sastoji od 3 glavna dijela:

  1. Klijenti košnice
  2. Usluge košnice
  3. 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.

Dijagram toka izvršavanja Hive posla tracslanje upita s korisničkog sučelja na DataNode-ove

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.

  1. Izvršavanje upita iz korisničkog sučelja (UI)
  2. Upravljački program komunicira s kompajlerom kako bi dobio plan. (Ovdje se plan odnosi na proces izvršavanja upita i prikupljanje povezanih metapodataka.)
  3. Kompajler stvara plan za izvršavanje zadatka. Kompajler komunicira s metapohranom kako bi dobio zahtjev za metapodacima.
  4. Metastore šalje metapodatke natrag kompajleru
  5. Kompajler komunicira s upravljačkim programom s predloženim planom za izvršavanje upita
  6. Upravljački program šalje planove izvršenja izvršnom mehanizmu
  7. 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
  1. Dohvaćanje rezultata od vozača
  2. 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.

Pitanja i odgovori

Hive je sloj serijskih upita koji skenira velike tablice putem distribuiranih poslova. HBase je NoSQL pohrana izgrađena za milisekundna nasumična čitanja i pisanja u pojedinačnim redovima. Rješavaju suprotne obrasce pristupa i često se izvode paralelno.

Hive radi na MapReduceu, Apache Tezu ili Apacheu SparkMapReduce je zastario i Hive 4.x prema zadanim postavkama koristi Tez, koji međurezultate čuva u memoriji umjesto da ih zapisuje na disk između faza.

Upravljana tablica daje Hiveu vlasništvo nad metapodacima i datotekama, pa ga ukloniteping briše podatke iz skladišnog direktorija. Vanjska tablica pohranjuje samo metapodatke i ispuštaping ostavlja temeljne datoteke netaknutima.

Naučeni modeli troškova vraćaju statistiku izvršenja natrag u planer kako bi se preciznije predvidio volumen skeniranja, redoslijed spajanja i obrezivanje particija nego statičke procjene. Platforme u oblaku prikazuju iste signale kao i preporuke za zbijanje i raspored particija.

Copilot izrađuje HiveQL spojeve, funkcije prozora i Java UDF kosturi iz komentara, što skraćuje standardni rad. Nazive stupaca, ključeve particija i tipove podataka i dalje je potrebno prvo provjeriti u odnosu na stvarnu metapohranu.

Da. Hive 0.14 dodao je UPDATE i DELETE, a kasnija izdanja pružila su punu ACID podršku za transakcijske tablice. Hive 4.x proširuje to kroz Apache Iceberg tablice s izolacijom snimki i evolucijom sheme.

Sva tri izlažu SQL preko istih datoteka. Hive preferira duge batch poslove i posjeduje metastore koji ostali čitaju. Spark SQL odgovara mješovitim cjevovodima; Trino cilja interaktivne upite iz nekoliko izvora.

Da, uglavnom putem Hive Metastorea, koji ostaje standard kataloga Spark, Trino, Presto i Flink svi čitaju. Sam Hive i dalje poslužuje zakazane grupne transformacije i utovare u skladište.

Sažmite ovu objavu uz: