Apache Hive vs Apache Impala: Hlavní rozdíly

Pokud jste nováčkem v analýze velkých dat, může být na vašem radaru řada nástrojů Apache; ale množství různých nástrojů může být matoucí a občas ohromující.

Tento příspěvek vyřeší tento zmatek a vysvětlí, co jsou Apache Hive a Impala a čím se od sebe liší!

Apache Hive

Apache Hive je rozhraní pro přístup k datům SQL pro platformu Apache Hadoop. Hive vám umožňuje dotazovat se, agregovat a analyzovat data pomocí syntaxe SQL.

Pro data v souborovém systému HDFS se používá schéma přístupu pro čtení, které vám umožňuje zacházet s daty jako s běžnou tabulkou nebo relačním DBMS. Dotazy HiveQL jsou překládány do kódu Java pro úlohy MapReduce.

Hive dotazy jsou psány v dotazovacím jazyce HiveQL, který je založen na jazyku SQL, ale nemá plnou podporu pro standard SQL-92.

Tento jazyk však umožňuje programátorům používat jejich dotazy, když je použití funkcí HiveQL nepohodlné nebo neefektivní. HiveQL lze rozšířit o uživatelem definované skalární funkce (UDF), agregace (kódy UDAF) a tabulkové funkce (UDTF).

Jak Apache Hive funguje

Apache Hive překládá programy napsané v jazyce HiveQL (blízko SQL) do jedné nebo více úloh MapReduce, Apache Tez nebo Apache Spark. Jedná se o tři spouštěcí motory, které lze spustit na Hadoop. Potom Apache Hive uspořádá data do pole pro soubor HDFS (Hadoop Distributed File System), aby spustil úlohy v clusteru a vytvořil odpověď.

Tabulky Apache Hive jsou podobné relačním databázím a datové jednotky jsou organizovány od nejvýznamnější jednotky po nejpodrobnější. Databáze jsou pole složená z oddílů, které lze opět rozdělit na „kbelíky“.

Data jsou dostupná přes HiveQL. V každé databázi jsou data očíslována a každá tabulka odpovídá adresáři HDFS.

V rámci architektury Apache Hive je k dispozici více rozhraní, jako je webové rozhraní, CLI nebo externí klienti.

Server „Apache Hive Thrift“ skutečně umožňuje vzdáleným klientům zadávat příkazy a požadavky Apache Hive pomocí různých programovacích jazyků. Centrální adresář Apache Hive je „metastore“ obsahující všechny informace.

Motor, díky kterému Hive funguje, se nazývá „řidič“. Obsahuje kompilátor a optimalizátor pro určení optimálního plánu provádění.

Konečně, bezpečnost zajišťuje Hadoop. Proto se při vzájemné autentizaci mezi klientem a serverem spoléhá na Kerberos. Oprávnění pro nově vytvořené soubory v Apache Hive je diktováno HDFS, což umožňuje uživateli, skupině nebo jinou autorizaci.

  Jak skrýt kanály v Discordu

Vlastnosti Hive

  • Podporuje výpočetní engine Hadoop i Spark
  • Využívá HDFS a funguje jako datový sklad.
  • Používá MapReduce a podporuje ETL
  • Díky HDFS má odolnost proti chybám podobnou Hadoopu

Apache Hive: Výhody

Apache Hive je ideálním řešením pro dotazy a analýzu dat. Umožňuje získat kvalitativní poznatky, poskytuje konkurenční výhodu a usnadňuje reakci na poptávku trhu.

Mezi hlavní výhody Apache Hive můžeme zmínit snadné použití spojené s jeho „SQL-friendly“ jazykem. Navíc urychluje počáteční vkládání dat, protože data není nutné číst ani číslovat z disku ve formátu interní databáze.

S vědomím, že data jsou uložena v HDFS, je možné ukládat velké datové sady až stovky petabajtů dat na Apache Hive. Toto řešení je mnohem škálovatelnější než tradiční databáze. S vědomím, že se jedná o cloudovou službu, umožňuje Apache Hive uživatelům rychle spouštět virtuální servery na základě kolísání pracovního zatížení (tj. úkolů).

Zabezpečení je také aspektem, kde Hive funguje lépe, a to díky své schopnosti replikovat zátěže kritické pro obnovu v případě problému. A konečně, pracovní kapacita nemá obdoby, protože může provést až 100 000 požadavků za hodinu.

Apache Impala

Apache Impala je masivně paralelní SQL dotazovací stroj pro interaktivní provádění SQL dotazů na data uložená v Apache Hadoop, napsaný v C++ a distribuovaný pod licencí Apache 2.0.

Impala se také nazývá engine MPP (Massively Parallel Processing), distribuovaný DBMS a dokonce i SQL-on-Hadoop stack databáze.

Impala funguje v distribuovaném režimu, kde instance procesů běží na různých uzlech clusteru a přijímají, plánují a koordinují požadavky klientů. V tomto případě je možné paralelní provádění fragmentů SQL dotazu.

Klienti jsou uživatelé a aplikace, které odesílají SQL dotazy na data uložená v Apache Hadoop (HBase a HDFS) nebo Amazon S3. Interakce s Impala probíhá prostřednictvím webového rozhraní HUE (Hadoop User Experience), ODBC, JDBC a prostředí příkazového řádku Impala Shell.

Impala infrastrukturně závisí na dalším populárním nástroji SQL-on-Hadoop, Apache Hive, který využívá úložiště metadat. Zejména Hive Metastore informuje Impala o dostupnosti a struktuře databází.

Při vytváření, úpravách a odstraňování objektů schématu nebo načítání dat do tabulek pomocí příkazů SQL se odpovídající změny metadat automaticky šíří do všech uzlů Impala pomocí specializované adresářové služby.

Klíčové součásti Impala jsou následující spustitelné soubory:

  • Impalad nebo Impala daemon je systémová služba, která plánuje a provádí dotazy na data HDFS, HBase a Amazon S3. Na každém uzlu clusteru běží jeden proces impalad.
  • Statestore je názvová služba, která sleduje umístění a stav všech instancí impalad v clusteru. Na každém uzlu a hlavním serveru (Name Node) běží jedna instance této systémové služby.
  • Katalog je služba koordinace metadat, která šíří změny z příkazů Impala DDL a DML do všech dotčených uzlů Impala, takže nové tabulky nebo nově načtená data jsou okamžitě viditelné pro jakýkoli uzel v clusteru. Doporučuje se, aby jedna instance katalogu běžela na stejném hostiteli klastru jako démon Statetored.
  Jak nastavit omezení obsahu na Xbox One

Jak funguje Apache Impala

Impala, stejně jako Apache Hive, používá místo SQL podobný deklarativní dotazovací jazyk, Hive Query Language (HiveQL), který je podmnožinou SQL92.

Skutečné provedení žádosti v Impala je následující:

Klientská aplikace odešle dotaz SQL připojením k libovolnému impaladu prostřednictvím standardizovaných rozhraní ovladače ODBC nebo JDBC. Připojený impalad se stává koordinátorem aktuální žádosti.

Dotaz SQL je analyzován za účelem určení úloh pro instance impalad v klastru; poté je vytvořen optimální plán provádění dotazů.

Impalad přímo přistupuje k HDFS a HBase pomocí místních instancí systémových služeb k poskytování dat. Na rozdíl od Apache Hive taková přímá interakce výrazně šetří čas provádění dotazu, protože mezivýsledky se neukládají.

V reakci na to každý démon vrací data koordinačnímu impaladu a posílá výsledky zpět klientovi.

Vlastnosti Impala

  • Podpora pro zpracování v paměti v reálném čase
  • SQL přátelské
  • Podporuje úložné systémy jako HDFS, Apache HBase a Amazon S3
  • Podporuje integraci s nástroji BI, jako jsou Pentaho a Tableau
  • Používá syntaxi HiveQL

Apache Impala: Výhody

Impala se vyhýbá možné režii při spouštění, protože všechny procesy systémového démona se spouštějí přímo při bootování. Výrazně šetří čas provádění dotazu. Další zvýšení rychlosti Impala je, protože tento nástroj SQL pro Hadoop, na rozdíl od Hive, neukládá mezivýsledky a přistupuje přímo k HDFS nebo HBase.

Kromě toho Impala generuje programový kód za běhu a ne při kompilaci, jak to dělá Hive. Vedlejším efektem vysokorychlostního výkonu Impala je však snížená spolehlivost.

Konkrétně, pokud datový uzel selže během provádění dotazu SQL, instance Impala se restartuje a Hive bude nadále udržovat připojení ke zdroji dat, což zajišťuje odolnost proti chybám.

Mezi další výhody Impala patří vestavěná podpora zabezpečeného síťového autentizačního protokolu Kerberos, stanovení priorit a možnost spravovat frontu požadavků a podpora oblíbených formátů Big Data, jako jsou LZO, Avro, RCFile, Parquet a Sequence.

Hive vs Impala: Podobnosti

Hive a Impala jsou volně distribuovány pod licencí Apache Software Foundation a odkazují na nástroje SQL pro práci s daty uloženými v clusteru Hadoop. Kromě toho také používají distribuovaný systém souborů HDFS.

Impala a Hive implementují různé úlohy se společným zaměřením na SQL zpracování velkých dat uložených v clusteru Apache Hadoop. Impala poskytuje rozhraní podobné SQL, které vám umožňuje číst a zapisovat tabulky Hive, což umožňuje snadnou výměnu dat.

Zároveň Impala dělá operace SQL na Hadoopu poměrně rychlé a efektivní, což umožňuje použití tohoto DBMS ve výzkumných projektech analýzy velkých dat. Kdykoli je to možné, Impala pracuje s existující infrastrukturou Apache Hive, která se již používá k provádění dlouhodobých dávkových dotazů SQL.

  Jak přidat tlačítko Shazam do ovládacího centra iPhone

Impala také ukládá své definice tabulek v metastore, tradiční databázi MySQL nebo PostgreSQL, tj. na stejném místě, kde Hive ukládá podobná data. Umožňuje Impala přístup k úlovým tabulkám, pokud všechny sloupce používají Impala podporované datové typy, formáty souborů a kompresní kodeky.

Hive vs Impala: Rozdíly

Programovací jazyk

Hive je napsán v Javě, zatímco Impala je napsán v C++. Impala však také používá některá Hive UDF založená na Javě.

Případy užití

Datoví inženýři používají Hive v procesech ETL (Extract, Transform, Load), například pro dlouhodobé dávkové úlohy na velkých souborech dat, například v cestovních agregátorech a letištních informačních systémech. Impala je zase určena hlavně pro analytiky a datové vědce a používá se hlavně v úkolech, jako je business intelligence.

Výkon

Impala provádí SQL dotazy v reálném čase, zatímco Hive se vyznačuje nízkou rychlostí zpracování dat. S jednoduchými SQL dotazy může Impala běžet 6-69krát rychleji než Hive. Hive však lépe zpracovává složité dotazy.

Latence/propustnost

Propustnost Hive je výrazně vyšší než u Impala. Funkce LLAP (Live Long and Process), která umožňuje ukládání dotazů do mezipaměti v paměti, poskytuje Hive dobrý výkon na nízké úrovni.

LLAP zahrnuje dlouhodobé systémové služby (démony), které umožňují přímou interakci s datovými uzly HDFS a nahrazují úzce integrovanou strukturu dotazů DAG (Directed acyclic graph) – grafový model aktivně používaný v Big Data computingu.

Odolnost proti chybám

Hive je systém odolný proti chybám, který zachovává všechny mezivýsledky. To také pozitivně ovlivňuje škálovatelnost, ale vede ke snížení rychlosti zpracování dat. Impala zase nelze nazvat platformou odolnou vůči chybám, protože je více vázána na paměť.

Převod kódu

Hive generuje výrazy dotazu v době kompilace, zatímco Impala je generuje za běhu. Hive se vyznačuje problémem „studeného startu“ při prvním spuštění aplikace; dotazy jsou konvertovány pomalu kvůli nutnosti vytvořit připojení ke zdroji dat.

Impala nemá tento druh spouštění nad hlavou. Potřebné systémové služby (démony) pro zpracování SQL dotazů se spouštějí při bootu, což urychluje práci.

Podpora úložiště

Impala podporuje formáty LZO, Avro a Parquet, zatímco Hive pracuje s prostým textem a ORC. Oba však podporují formáty RCFIle a Sequence.

Apache HiveApache ImpalaLanguage JavaC++ Případy použití Data EngineeringAnalýza a analytikaVýkonVysoký pro jednoduché dotazy Poměrně nízká LatenceVětší latence díky ukládání do mezipamětiMéně latentní Tolerance chybTolerantnější díky MapReduceLess tolerantní díky MPC Textové konverzi a Parstera ORCLpodpora díky studenému startu, AvroFZOP

Závěrečná slova

Hive a Impala si nekonkurují, ale spíše se účinně doplňují. I když mezi nimi existují značné rozdíly, existuje také poměrně mnoho společného a výběr jednoho před druhým závisí na datech a konkrétních požadavcích projektu.

Můžete také prozkoumat přímé srovnání mezi Hadoopem a Sparkem.

.