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

รš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รญ

  1. Klienti Hive
  2. รšlovรฉ sluลพby
  3. รš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:

Tok provรกdฤ›nรญ รบlohy

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;

  1. Provรกdฤ›nรญ dotazu z uลพivatelskรฉho rozhranรญ (uลพivatelskรฉ rozhranรญ)
  2. 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
  3. 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
  4. Meta store odesรญlรก informace o metadatech zpฤ›t do kompilรกtoru
  5. Kompilรกtor komunikujรญcรญ s Driverem s navrลพenรฝm plรกnem provedenรญ dotazu
  6. Ovladaฤ Odesรญlรกnรญ plรกnลฏ provรกdฤ›nรญ do spouลกtฤ›cรญho jรกdra
  7. 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
  1. Naฤรญtรกnรญ vรฝsledkลฏ od ล™idiฤe
  2. 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ฤ›.

Shrลˆte tento pล™รญspฤ›vek takto: