Tento blogový příspěvek byl publikován na Hortonworks.com před sloučením s Cloudera. Některé odkazy, zdroje nebo reference již nemusí být přesné.
Zvláštní poděkování patří Billu Preachukovi a Brandonu Wilsonovi za posouzení a poskytnutí jejich odborných znalostí
Úvod
Sloupcové úložiště je dnes často diskutovaným tématem ve světě zpracování a ukládání velkých dat – existují stovky formátů, struktur a optimalizací, do kterých můžete svá data ukládat, a ještě více způsobů, jak je získat v závislosti na tom, co plánujete dělat. s tím. Tato řada možností vznikla kvůli potřebě nejen rychle ingestovat data pomocí nástrojů OLTP (On-Line Transaction Processing), ale také kvůli potřebě efektivněji spotřebovávat a analyzovat data pomocí On-Line Analytical Processing (OLAP). nástroje. Tisíce různých případů použití má každý své vlastní specifické potřeby, a proto se objevilo mnoho možností. Například čtení burzovních burzovních dat vyžaduje úplně jiný způsob myšlení než analýza ukazatelů kvality na výrobní lince. Se všemi těmito možnostmi je snadné se ztratit při navigaci ke svému konečnému cíli:výběru nástroje, který vám vyhovuje.
HDP zahrnuje řadu úložných řešení, z nichž každé je šité na míru pro konkrétní případy použití. Tuto sérii blogů chceme začít tím, že si promluvíme o následujících třech nástrojích/enginech a jejich přidružených formátech úložiště:
- Apache Hive používá Apache ORC jako efektivní sloupcový formát úložiště, který umožňuje výkon pro zpracování dotazů OLAP i hlubokého SQL
- Apache Phoenix/Apache HBase společně tvoří databázi OLTP, která umožňuje dotazy v reálném čase na miliardy záznamů a nabízí rychlé náhodné vyhledávání na základě klíčů a také aktualizace
- Apache Druid je vysoce výkonné úložiště dat, které umožňuje analýzu časových řad v reálném čase na tocích událostí a analýzu OLAP nad historickými daty s extrémně nízkou latencí
V tomto článku máme v úmyslu formulovat, který nástroj je vhodný pro daný případ použití, porovnat a porovnat různé nástroje a poskytnout základní vodítko pro výběr vhodného nástroje nebo sady nástrojů pro řešení vašeho případu použití.
Je to podobné, jako když hrajete Tetris – každý kus má jiné místo, ale každý přidává jedinečnou hodnotu větší struktuře
Zpracování velkých dat a jeho podobnosti
Data jsou v úložišti seskupena podle sloupců, protože se často snažíme zúžit součty, průměry nebo jiné výpočty na konkrétním sloupci. Představte si, že jste letecká společnost, která se snaží pochopit, kolik paliva dát letadlu, když je v doku – možná budete chtít vypočítat průměrné míle nalétané každým letem z tabulky letových údajů. To by vyžadovalo provedení průměrné funkce na jednom sloupci. Tato data bychom ukládali ve sloupcovém formátu, protože sekvenční čtení na disku je rychlé a my chceme v tomto případě postupně načíst jeden celý sloupec z tabulky (a poté provést průměrný výpočet).
Mezi těmito motory je mnoho rozdílů, ale bez ohledu na to, který motor pro zpracování dat si vyberete, budete mít prospěch z několika společných rysů. Jedním z nich je sdílená funkce ukládání do mezipaměti. Každý z těchto tří enginů pracuje ruku v ruce s ukládáním do mezipaměti, aby zvýšil výkon svého zpracování, aniž by měnil formát backendového úložiště, a dosahuje doby odezvy pod sekundu. HBase má BlockCache, Hive má vrstvu LLAP IO a Druid má několik možností ukládání do mezipaměti. Často nákladná část obsluhy dotazu zahrnuje analýzu požadavku a přechod do trvalého úložiště, kde se načte podmnožina dat, o která má uživatel zájem. Tomuto celému kroku se však lze vyhnout při použití mechanismu ukládání do mezipaměti, protože mnoho formátů sloupcového úložiště použití, což umožňuje procesu dosáhnout do paměti pro dříve dotazovaná data ve zlomcích sekundy. Vraťme se k našemu příkladu výpočtu paliva:řekněme, že jsem právě požádal o průměrné míle nalétané pro všechny lety v mé společnosti, ale uvědomte si, že vnitrostátní lety budou mít požadavky na palivo, které se výrazně liší od mezinárodních letů. Poté budu chtít filtrovat svůj předchozí dotaz pomocí klauzule WHERE country=’US’ (nebo ekvivalentního kódu země). Tento vzor dotazu je velmi běžný pro průzkum dat. Vzhledem k tomu, že již máme v paměti data předchozího dotazu, lze výsledky tohoto dotazu vrátit, aniž bychom museli provádět drahé čtení disku.
Struktura vrstvy LLAP Hive – část jejího paměťového prostoru se používá pro ukládání do mezipaměti, zatímco dlouhodobé úložiště je na HDFS. HBase a Druid mají také podobný koncept mezipaměti a úložiště.
Další podobnost existuje v klávesových zkratkách, které každý z těchto motorů používá k vynulování konkrétních dat, která jsou dotazována. HBase má náhodný přístup O(1) založený na HashMap, Druid používá invertované bitmapové indexy k tomu, aby zjistil, které hodnoty sloupců jsou ve kterých řádcích, a tabulky Hive obsahují statistiky, indexy a rozdělení pro zkrácení přístupu k datům. Tyto funkce umožňují enginům kombinovat způsob, jakým jsou data uložena, se způsobem, jakým jsou k nim přistupována, což umožňuje rychlou analýzu a zároveň optimalizuje efektivitu hardwaru a maximálně využívá dostupný CPU a RAM.
Poslední podobností je podniková připravenost každého z těchto motorů. Na straně redundance dat všechny tři tyto motory používají HDFS jako svůj mechanismus hlubokého úložiště; faktor replikace HDFS 3x zajišťuje, že kopie dat existují jinde, i když dva uzly selžou současně. Data lze okamžitě znovu replikovat do zdravých uzlů, aby byla zachována redundance. Pokud jde o odolnost proti chybám v rámci klastru, každý nástroj nějakým způsobem zaplňuje mezeru. HBase nabízí replikaci regionů, Druid má duplikaci hlavních a pracovních komponent a také zvýšený replikační faktor na HDFS a Hive má HDFS vedle logiky odolné proti chybám rámce YARN. Podniková připravenost zajišťuje, že tyto motory jsou odolné vůči selhání a připraveny k provozu ve výrobě od prvního dne.
Rozdíly mezi našimi stroji pro zpracování velkých dat
Jaký je nejlepší způsob zpracování dat? Jakmile zpracujete svá data, jak z nich rychle vytáhnete statistiky? Pojďme se ponořit do toho, jak tyto tři velké nástroje pro zpracování dat podporují tuto sadu úloh zpracování dat
Tyto motory jsou někdy mentálně spojeny dohromady a přemýšlejí o nich podobně kvůli jejich schopnosti ukládat a zpracovávat velká data, ale jak zjistíme, jsou vybírány pro případy použití a účely, které jsou konkrétně vhodné pro jejich silné stránky. Uvidíte, že sbírka nástrojů, které Hortonworks Data Platform obsahuje, je vhodná pro jakoukoli velkou datovou zátěž, kterou na ni můžete vrhnout, zejména s HDP 3.0 a funkcemi databáze v reálném čase, které jsme představili.
Hive je OLAP engine, který reprezentuje nejširší škálu případů použití, nejčastěji využívající Hadoop Distributed File System (HDFS) jako úložnou vrstvu, která umožňuje ukládání téměř jakéhokoli typu dat. Dokáže dotazovat, zpracovávat a analyzovat nestrukturovaná textová data, soubory CSV, XML, semistrukturovaný JSON, sloupcový parket a řadu dalších formátů. Hive také podporuje alternativní paměťová média, jako je cloudové úložiště, Isilon a další. De facto standard úložiště pro Hive je ORC, který optimalizuje nejúčinněji a těží z výhod sloupcového úložiště. Po převedení na ORC jsou vaše data zkomprimována a sloupce ve vaší tabulce jsou postupně uloženy na disk, což umožňuje vrstvě mezipaměti Hive LLAP vytáhnout data z disku jednou a vícekrát je obsluhovat z paměti. Kombinace Hive+LLAP se používá pro ad-hoc analýzu, výpočet velkých agregátů a hlášení s nízkou latencí. Skvělým případem použití pro Hive je každodenní spouštění sady sestav dashboard pro uživatele; opakující se dotazy využívají nejenom mezipaměť LLAP, ale také funkci 'Query Results Cache' – která vrací téměř okamžité výsledky, pokud se data nezměnila. HDP 3.0). Kromě toho je datový sklad Hive skvělým využitím ad-hoc analýzy, kterou Hive dokáže; uživatelé mohou spojovat data, spouštět souběžné dotazy a spouštět transakce ACID. V tomto ohledu považujte Hive za SQL jack všech profesí, zatímco další dva motory poskytují extrémně rychlý výkon pro specifické případy použití.
Náš druhý engine, HBase, je distribuované úložiště klíč-hodnota, které má funkce náhodného čtení, zápisu, aktualizace a mazání. HBase (varianta NoSQL) je navržena jako OLTP engine umožňující architekturu velkoobjemových transakčních operací – představte si platformy pro zasílání zpráv s neustálými výměnami zpráv mezi uživateli nebo transakcemi generovanými ve finančním systému. HBase je extrémně efektivní při rychlém přenosu dat, jejich ukládání a zpětném poskytování – náhodné vkládání/aktualizace/odstranění s extrémně nízkou latencí. Není určeno pro agregaci a spojování dat – této funkce je dosaženo prostřednictvím Phoenix, vrstvy SQL a enginu nad HBase, ale nedoporučuje se pro větší objemy dat, protože data nejsou strukturována tak, aby bylo dosaženo optimální výkon (místo toho použijte Hive). Abych to shrnul, HBase je skvělý ve zpracování velkých objemů operací Create-Update-Delete, ale zaostává, když přijde čas prezentovat tato data uživatelům ve spotřebním formátu.
A konečně, Druid je třetím motorem a je vhodný pro pracovní zátěže OLAP s nízkou latencí a také pro indexování streamovaných dat v reálném čase. Druid poskytuje OLAP dotazování s rychlostí kostky pro váš cluster. Časově sériová povaha Druida je základním kamenem enginu; je navržen tímto způsobem, protože čas je primárním filtrem při analýze dat založených na čase. Přemýšlejte o tom, když analyzujete časy letů, abyste si zarezervovali cestu – chci znát nejlevnější let do Itálie v tomto konkrétním 2týdenním časovém rámci. Druid zapadá do výklenku velmi rychlého přijímání dat a jejich lokalizace na požádání. Na druhou stranu také umožňuje podnikovým uživatelům a analytikům dotazovat se na data a porozumět jim prostřednictvím Superset, vizualizační vrstvy úzce propojené s Druidem. Druid vyniká v určení hrstky řádků dat mezi stovkami milionů nebo miliardami za méně než sekundu a také vyniká extrémně rychlým výpočtem agregovaných hodnot ze stejného objemu dat. Neprovádí však spojování, a proto jej nelze použít pro kombinování datových sad za účelem analýzy. Pokud plánujete analyzovat kombinaci datových sad v Druidu, bylo by moudré data před vložením do Druidu předem spojit, nebo použít Hive (a tabulky Hive podporované Druidem) k provedení spojení. Jinými slovy, Druid se dobře hodí do role být poslední zastávkou pro vaše data poté, co byla zpracována a transformována do způsobu, jakým k nim budou přistupovat vaši firemní uživatelé. Druid je skvělý pro obchodní analytiky, protože se mohou přihlásit do Superset a vizualizovat metriky ve formě řídicího panelu, aniž by museli psát jakékoli dotazy; jednoduše používají GUI k výběru zdroje dat dotazu a filtrů. Je také skvělý jako záložní zdroj dat pro systémové dashboardy, ať už provozní nebo analytické, díky rychlé době dotazování.
Zde je jeden způsob, jak rozdělit rozhodování o tom, který nástroj použít pro svou pracovní zátěž:
HBase | Úl | Druid |
Náhodný přístup s extrémně nízkou latencí (vyhledávání na základě klíče) | ACID, databáze v reálném čase, EDW | OLAP s nízkou latencí, souběžné dotazy |
Velkoobjemové OLTP | Sjednocené rozhraní SQL, JDBC | Agregace, rozbory |
Aktualizace | Hlášení, dávka | Časové řady |
Smaže | Připojení, velké seskupení, ad-hoc | Zpracování v reálném čase |
Unified SQL
Dosud jsme diskutovali o několika systémech a každý z nich má svůj vlastní způsob přístupu ke svým datům. To je skvělé, když vaši uživatelé vědí, jak všechny tyto nástroje fungují, ale možná je čeká křivka učení, než budou moci dosáhnout plné produktivity, pokud pocházejí ze světa SQL, SQL a dalších SQL, jak to dělá většina analytiků. Proto jsme se snažili tuto interakci co nejvíce zjednodušit; s Hive 3.0 v HDP 3.0 můžete použít Hive syntaxi HQL podobnou SQL k interakci s tolika různými datovými úložišti v tomto prostoru. Hive lze použít jako portál pro přístup a úpravu Druid, HBase a čehokoli, co poskytuje rozhraní a ovladač JDBC. Hive lze použít ke správě úlohy příjmu Druidů, která naslouchá Kafkovi a poskytuje jednoduchý způsob příjmu v reálném čase. A konečně, Hive lze použít k tomu, aby to všechno spojilo – ukládejte svá data tam, kde to dávají největší smysl, a přistupujte k nim z jednoho místa. Spojte to dohromady, možná dokonce uložte nový výsledek na jiné místo. Možností je mnoho, ale rozhraní bylo výrazně zjednodušeno, takže vaše uživatelská základna může strávit méně času učením se jiného nástroje a více času přinášením hodnoty do podnikání.
Závěr
Hive, Druid a HBase mají různá místa v datové architektuře, jak jsme viděli z předchozí analýzy. Jsou to však doplňkové nástroje; můžete zpracovávat transakční data pomocí HBase s jeho rychlým vyhledáváním, přesouvat tato data do Druid pro rychlé rozbalení/agregaci a nechat Hive integrovat obě dohromady s vlastními daty spravovanými Hive, aby uživatelé mohli kombinovat data, kdekoli mohou sídlit. jediný pohled a množství poznatků. Díky tomuto přístupu Druid ukládá data, ke kterým lze přistupovat samostatně, ale tato funkce je rozšířena o Hive, který může stahovat data Druid a spojit je s dalšími daty. Přidejte k tomu hlavní vylepšení, která vstoupila do hry s Hive 3.0, v neposlední řadě jsou to zhmotněné pohledy, vylepšená integrace s Druidem a mnoha dalšími motory a rozšířené funkce jako datové sklady, a máte skupinu. nástrojů, které dokážou vyřešit téměř jakýkoli případ použití.
Architektury, jako je výše zmíněná, přinášejí to nejlepší z každého nástroje k optimalizaci vašeho pracovního postupu a zároveň abstrahují detaily pro uživatele, kteří se zabývají pouze daty. Architekti nastavili potrubí a umístili data tam, kam patří na základě případu použití. To pak vede k datovým analytikům, kteří používají Hive jako své jediné rozhraní k získávání znalostí a přehledů. Dokážou v datech najít zajímavé vzory, místo aby se starali o to, kde jsou data uložena, nebo se učili novou syntaxi pro přístup k nim – byli byste překvapeni, když zjistíte, jak často to ve světě vidíme.
V tomto bodě jsme demonstrovali silné a slabé stránky každého nástroje a osvědčené postupy; doufáme, že odejdete s lepším pochopením toho, co se kam hodí, a také s širším obrazem kombinace všech tří, abyste dosáhli nejlepších výsledků.