Co je Hive? Architecture & Modes
Co je Hive?
Hive je nรกstroj pro ETL a datovรฉ sklady vyvinutรฝ nad Hadoop Distributed File System (HDFS). รl usnadลuje prรกci pลi provรกdฤnรญ operacรญ, jako je
- Zapouzdลenรญ dat
- Ad-hoc dotazy
- Analรฝza velkรฝch datovรฝch sad
Dลฏleลพitรฉ vlastnosti Hive
- V Hive se nejprve vytvoลรญ tabulky a databรกze a potรฉ se do tฤchto tabulek naฤtou data.
- Hive jako datovรฝ sklad urฤenรฝ pro sprรกvu a dotazovรกnรญ pouze strukturovanรฝch dat, kterรก jsou uloลพena v tabulkรกch.
- Pลi prรกci se strukturovanรฝmi daty nemรก Map Reduce funkce pro optimalizaci a pouลพitelnost jako UDF, ale rรกmec Hive ano. Optimalizace dotazu oznaฤuje efektivnรญ zpลฏsob provรกdฤnรญ dotazu z hlediska vรฝkonu.
- Jazyk Hive inspirovanรฝ SQL oddฤluje uลพivatele od sloลพitosti programovรกnรญ Map Reduce. Znovu pouลพรญvรก znรกmรฉ koncepty ze svฤta relaฤnรญch databรกzรญ, jako jsou tabulky, ลรกdky, sloupce a schรฉmata atd. pro snadnรฉ uฤenรญ.
- Programovรกnรญ Hadoopu funguje na plochรฝch souborech. Hive tedy mลฏลพe pouลพรญt adresรกลovรฉ struktury k โrozdฤlenรญโ dat a zlepลกit tak vรฝkon u urฤitรฝch dotazลฏ.
- Novรก a dลฏleลพitรก souฤรกst Hive, tj. Metastore, slouลพรญcรญ k uklรกdรกnรญ informacรญ o schรฉmatu. Tento Metastore se obvykle nachรกzรญ v relaฤnรญ databรกzi. S Hive mลฏลพeme komunikovat pomocรญ metod jako
- Webovรฉ uลพivatelskรฉ rozhranรญ
- Java Rozhranรญ Database Connectivity (JDBC).
- Vฤtลกina interakcรญ se obvykle odehrรกvรก pลes rozhranรญ pลรญkazovรฉho ลรกdku (CLI). Hive poskytuje CLI pro psanรญ dotazลฏ Hive pomocรญ Hive Query Language (HQL)
- Obecnฤ je syntaxe HQL podobnรก syntaxi SQL syntaxi, kterou znรก vฤtลกina datovรฝch analytikลฏ. Ukรกzkovรฝ dotaz nรญลพe zobrazรญ vลกechny zรกznamy pลรญtomnรฉ v uvedenรฉm nรกzvu tabulky.
- Ukรกzkovรฝ dotaz : Vyberte * z
- Hive podporuje ฤtyลi formรกty souborลฏ TEXTFILE, SEQUENCEFILE, ORC a RCFILE (Zรกznam sloupcovรฉho souboru).
- Pro uklรกdรกnรญ metadat pro jednoho uลพivatele pouลพรญvรก Hive databรกzi derby a pro vรญce uลพivatelลฏ metadata nebo sdรญlenรฝ pลรญpad metadat pouลพรญvรก Hive MYSQL.
Pro nastavenรญ MySQL jako databรกze a k uklรกdรกnรญ informacรญ o metadatech โInstalace a konfigurace HIVE a MYSQLโ
Nฤkterรฉ z klรญฤovรฝch bodลฏ o Hive:
- Hlavnรญ rozdรญl mezi HQL a SQL spoฤรญvรก v tom, ลพe dotaz Hive se spouลกtรญ v infrastruktuลe Hadoop spรญลกe neลพ v tradiฤnรญ databรกzi.
- Spuลกtฤnรญ dotazu Hive bude jako sรฉrie automaticky generovanรฝch mapovรฝch redukovanรฝch รบloh.
- Hive podporuje koncepty oddรญlลฏ a segmentลฏ pro snadnรฉ naฤรญtรกnรญ dat, kdyลพ klient provรกdรญ dotaz.
- Hive podporuje vlastnรญ specifickรฉ UDF (User Defined Functions) pro ฤiลกtฤnรญ dat, filtrovรกnรญ atd. Podle poลพadavkลฏ programรกtorลฏ lze definovat Hive UDF.
รl vs relaฤnรญ databรกze
Pomocรญ Hive mลฏลพeme provรกdฤt nฤkterรฉ zvlรกลกtnรญ funkce, kterรฝch nenรญ dosaลพeno v relaฤnรญch databรกzรญch. U velkรฉho mnoลพstvรญ dat, kterรก jsou v petabajtech, je dลฏleลพitรฉ je dotazovat a zรญskat vรฝsledky bฤhem nฤkolika sekund. A Hive to dฤlรก docela efektivnฤ, dotazy zpracovรกvรก rychle a poskytuje vรฝsledky ve vteลinฤ.
Podรญvejme se nynรญ, co dฤlรก Hive tak rychlรฝm.
Nฤkterรฉ klรญฤovรฉ rozdรญly mezi Hive a relaฤnรญmi databรกzemi jsou nรกsledujรญcรญ;
Relaฤnรญ databรกze jsou โSchรฉma pลi ฤtenรญ a schรฉma pลi zรกpisuโ. Nejprve vytvoลte tabulku a potรฉ vloลพte data do konkrรฉtnรญ tabulky. V tabulkรกch relaฤnรญ databรกze lze provรกdฤt funkce jako vklรกdรกnรญ, aktualizace a รบpravy.
รl je โSchรฉma pouze pro ฤtenรญโ. Takลพe funkce jako aktualizace, รบpravy atd. s tรญm nefungujรญ. Protoลพe dotaz Hive v typickรฉm clusteru bฤลพรญ na vรญce datovรฝch uzlech. Nenรญ tedy moลพnรฉ aktualizovat a upravovat data ve vรญce uzlech. (verze podregistru pod 0.13)
Hive takรฉ podporuje โPลEฤTฤTE MNOHO NAPIล TE JEDNOUโvzor. Coลพ znamenรก, ลพe po vloลพenรญ tabulky mลฏลพeme tabulku aktualizovat v nejnovฤjลกรญch verzรญch Hive.
POZNรMKA: Novรก verze Hive vลกak pลichรกzรญ s aktualizovanรฝmi funkcemi. Verze Hive (Hive 0.14) pลichรกzejรญ s moลพnostmi Aktualizovat a Smazat jako novรฉ funkce
รl Architecture
Vรฝลกe uvedenรฝ snรญmek obrazovky vysvฤtluje Apache Architektura รบlu v detailu
รl se sklรกdรก hlavnฤ ze 3 hlavnรญch ฤรกstรญ
- Klienti Hive
- รlovรฉ sluลพby
- รlovรฉ รบloลพiลกtฤ a vรฝpoฤetnรญ technika
Klienti Hive:
Hive poskytuje rลฏznรฉ ovladaฤe pro komunikaci s rลฏznรฝmi typy aplikacรญ. Pro aplikace zaloลพenรฉ na Thrift poskytne Thrift klienta pro komunikaci.
Pro Java souvisejรญcรญch aplikacรญ poskytuje ovladaฤe JDBC. Jinรฉ neลพ jakรฝkoli typ aplikacรญ poskytuje ovladaฤe ODBC. Tito klienti a ovladaฤe zase komunikujรญ se serverem Hive ve sluลพbรกch Hive.
Sluลพby รบlu:
Klientskรฉ interakce s Hive lze provรกdฤt prostลednictvรญm Hive Services. Pokud chce klient provรกdฤt jakรฉkoli operace souvisejรญcรญ s dotazem v Hive, musรญ komunikovat prostลednictvรญm Hive Services.
CLI je rozhranรญ pลรญkazovรฉho ลรกdku, kterรฉ funguje jako sluลพba Hive pro operace DDL (Data definition Language). Vลกechny ovladaฤe komunikujรญ se serverem Hive as hlavnรญm ovladaฤem ve sluลพbรกch Hive, jak je znรกzornฤno na vรฝลกe uvedenรฉm schรฉmatu architektury.
Ovladaฤ pลรญtomnรฝ ve sluลพbรกch Hive pลedstavuje hlavnรญ ovladaฤ a komunikuje vลกechny typy aplikacรญ JDBC, ODBC a dalลกรญ specifickรฉ klientskรฉ aplikace. Driver zpracuje tyto poลพadavky z rลฏznรฝch aplikacรญ na metaรบloลพnรฉ a terรฉnnรญ systรฉmy pro dalลกรญ zpracovรกnรญ.
รloลพiลกtฤ a vรฝpoฤetnรญ technika:
Sluลพby Hive jako Meta store, File system a Job Client zase komunikujรญ s รบloลพiลกtฤm Hive a provรกdฤjรญ nรกsledujรญcรญ akce
- Informace o metadatech tabulek vytvoลenรฝch v Hive jsou uloลพeny v Hive โMeta storage databaseโ.
- Vรฝsledky dotazลฏ a data naฤtenรก v tabulkรกch budou uloลพena v clusteru Hadoop na HDFS.
Prลฏbฤh realizace zakรกzky:
Z vรฝลกe uvedenรฉho snรญmku obrazovky mลฏลพeme pochopit tok provรกdฤnรญ รบlohy v Hive s Hadoopem
Datovรฝ tok v Hive se chovรก nรกsledujรญcรญm zpลฏsobem;
- Provรกdฤnรญ dotazu z uลพivatelskรฉho rozhranรญ (uลพivatelskรฉ rozhranรญ)
- Ovladaฤ spolupracuje s kompilรกtorem za รบฤelem zรญskรกnรญ plรกnu. (zde plรกn odkazuje na provรกdฤnรญ dotazu) proces a souvisejรญcรญ shromaลพฤovรกnรญ informacรญ o metadatech
- Kompilรกtor vytvoลรญ plรกn รบlohy, kterรก mรก bรฝt provedena. Kompilรกtor komunikujรญcรญ s รบloลพiลกtฤm Meta za รบฤelem zรญskรกnรญ poลพadavku na metadata
- Meta store odesรญlรก informace o metadatech zpฤt do kompilรกtoru
- Kompilรกtor komunikujรญcรญ s Driverem s navrลพenรฝm plรกnem provedenรญ dotazu
- Ovladaฤ Odesรญlรกnรญ plรกnลฏ provรกdฤnรญ do spouลกtฤcรญho jรกdra
- Execution Engine (EE) funguje jako most mezi Hive a Hadoop pro zpracovรกnรญ dotazu. Pro operace DFS.
- EE by mฤl nejprve kontaktovat Name Node a potรฉ Data nodes, aby zรญskal hodnoty uloลพenรฉ v tabulkรกch.
- EE se chystรก naฤรญst poลพadovanรฉ zรกznamy z datovรฝch uzlลฏ. Skuteฤnรก data tabulek jsou uloลพena pouze v datovรฉm uzlu. Zatรญmco z Name Node naฤรญtรก pouze metadata pro dotaz.
- Sbรญrรก aktuรกlnรญ data z datovรฝch uzlลฏ souvisejรญcรญch s uvedenรฝm dotazem
- Execution Engine (EE) komunikuje obousmฤrnฤ s รบloลพiลกtฤm Meta pลรญtomnรฝm v Hive za รบฤelem provรกdฤnรญ operacรญ DDL (Data Definition Language). Zde se provรกdฤjรญ operace DDL jako CREATE, DROP a ALTERING tabulek a databรกzรญ. Meta store bude uklรกdat pouze informace o nรกzvu databรกze, nรกzvech tabulek a nรกzvech sloupcลฏ. Naฤte data souvisejรญcรญ se zmรญnฤnรฝm dotazem.
- Execution Engine (EE) zase komunikuje s dรฉmony Hadoopu, jako jsou nรกzvy uzlลฏ, datovรฉ uzly a รบlohy. tracker pro spuลกtฤnรญ dotazu nad souborovรฝm systรฉmem Hadoop
- Naฤรญtรกnรญ vรฝsledkลฏ od ลidiฤe
- Odesรญlรกnรญ vรฝsledkลฏ do Execution engine. Jakmile jsou vรฝsledky naฤteny z datovรฝch uzlลฏ do EE, odeลกle vรฝsledky zpฤt do ovladaฤe a do uลพivatelskรฉho rozhranรญ (frontend)
Hive Nepลetrลพitฤ v kontaktu se souborovรฝm systรฉmem Hadoop a jeho dรฉmony pลes Execution engine. Teฤkovanรก ลกipka ve vรฝvojovรฉm diagramu รบlohy ukazuje komunikaci spouลกtฤcรญho jรกdra s dรฉmony Hadoop.
Rลฏznรฉ reลพimy รlu
Hive mลฏลพe fungovat ve dvou reลพimech v zรกvislosti na velikosti datovรฝch uzlลฏ v Hadoopu.
Tyto reลพimy jsou,
- Mรญstnรญ reลพim
- Reลพim zmenลกenรญ mapy
Kdy pouลพรญt mรญstnรญ reลพim:
- Pokud je Hadoop nainstalovรกn v pseudo reลพimu s jednรญm datovรฝm uzlem, pouลพijeme v tomto reลพimu Hive
- Pokud je velikost dat menลกรญ z hlediska omezenรญ na jeden lokรกlnรญ poฤรญtaฤ, mลฏลพeme pouลพรญt tento reลพim
- Zpracovรกnรญ bude velmi rychlรฉ na menลกรญch souborech dat pลรญtomnรฝch v mรญstnรญm poฤรญtaฤi
Kdy pouลพรญt reลพim zmenลกenรญ mapy:
- Pokud mรก Hadoop vรญce datovรฝch uzlลฏ a data jsou distribuovรกna napลรญฤ rลฏznรฝmi uzly, pouลพรญvรกme v tomto reลพimu Hive
- Bude pracovat na velkรฉm mnoลพstvรญ datovรฝch sad a dotazลฏ, kterรฉ se budou provรกdฤt paralelnฤ
- Prostลednictvรญm tohoto reลพimu lze dosรกhnout zpracovรกnรญ velkรฝch souborลฏ dat s lepลกรญm vรฝkonem
V Hive mลฏลพeme nastavit tuto vlastnost, abychom zmรญnili, jakรฝ reลพim mลฏลพe Hive fungovat? Ve vรฝchozรญm nastavenรญ funguje v reลพimu zmenลกenรญ mapy a pro mรญstnรญ reลพim mลฏลพete mรญt nรกsledujรญcรญ nastavenรญ.
รl pro prรกci v mรญstnรญm reลพimu nastaven
SET mapred.job.tracker=lokรกlnรญ;
Od verze Hive 0.7 podporuje reลพim automatickรฉho spouลกtฤnรญ รบloh zmenลกenรญ mapy v mรญstnรญm reลพimu.
Co je Hive Server2 (HS2)?
HiveServer2 (HS2) je serverovรฉ rozhranรญ, kterรฉ provรกdรญ nรกsledujรญcรญ funkce:
- Umoลพลuje vzdรกlenรฝm klientลฏm spouลกtฤt dotazy proti Hive
- Zรญskejte vรฝsledky uvedenรฝch dotazลฏ
Od nejnovฤjลกรญ verze mรก nฤkterรฉ pokroฤilรฉ funkce zaloลพenรฉ na Thrift RPC jako;
- Soubฤh vรญce klientลฏ
- Ovฤลovรกnรญ
Shrnutรญ
Hive je nรกstroj ETL a datovรฉho skladu nad ekosystรฉmem Hadoop a pouลพรญvรก se pro zpracovรกnรญ strukturovanรฝch a polostrukturovanรฝch dat.
- Hive je databรกze pลรญtomnรก v ekosystรฉmu Hadoop, kterรก provรกdรญ operace DDL a DML a poskytuje flexibilnรญ dotazovacรญ jazyk, jako je HQL pro lepลกรญ dotazovรกnรญ a zpracovรกnรญ dat.
- Poskytuje tolik funkcรญ ve srovnรกnรญ s RDMS, coลพ mรก urฤitรก omezenรญ.
Pro uลพivatelsky specifickou logiku pro splnฤnรญ poลพadavkลฏ klienta.
- Poskytuje moลพnost psanรญ a nasazenรญ vlastnรญch definovanรฝch skriptลฏ a funkcรญ definovanรฝch uลพivatelem.
- Kromฤ toho poskytuje oddรญly a buckety pro logiku specifickou pro รบloลพiลกtฤ.


