Programovanie

Dremio: Jednoduchšia a rýchlejšia analýza údajov

Jacques Nadeau je CTO a spoluzakladateľ spoločnosti Dremio.

Teraz je skvelý čas byť vývojárom. Za posledné desaťročie sa rozhodnutia o technológiách presunuli z rokovacej sály k inovatívnym vývojárom, ktorí stavajú na otvorenom zdroji a rozhodujú skôr na základe zásluh základného projektu, ako na základe obchodných vzťahov poskytovaných predajcom. Objavili sa nové projekty, ktoré sa zameriavajú na zvýšenie produktivity vývojárov a ich riadenie a škálovanie je jednoduchšie. Platí to pre takmer každú vrstvu technologického radu. Výsledkom je, že vývojári majú dnes takmer neobmedzené možnosti skúmať nové technológie, nové architektúry a nové modely nasadenia.

Ak sa pozrieme najmä na dátovú vrstvu, systémy NoSQL, ako sú MongoDB, Elasticsearch a Cassandra, posunuli obálku z hľadiska agility, škálovateľnosti a výkonu pre operačné aplikácie, každý s iným dátovým modelom a prístupom k schéme. Na ceste prešlo veľa vývojových tímov k modelu mikroslužieb, ktoré šírili údaje aplikácií medzi rôznymi rôznymi základnými systémami.

Pokiaľ ide o analytiku, staré a nové zdroje údajov si našli cestu do zmesi tradičných dátových skladov a dátových jazier, niektoré na serveroch Hadoop, iné na Amazone S3. A vzostup platformy na streamovanie údajov Kafka vytvára úplne iný spôsob uvažovania o pohybe údajov a analýze údajov v pohybe.

Vďaka údajom v toľkých rôznych technológiách a základných formátoch je analýza moderných údajov ťažká. BI a analytické nástroje, ako sú Tableau, Power BI, R, Python a modely strojového učenia, boli navrhnuté pre svet, v ktorom dáta žijú v jednej výkonnej relačnej databáze. Používatelia týchto nástrojov - obchodní analytici, vedci v oblasti údajov a modely strojového učenia - navyše požadujú možnosť samostatného prístupu, skúmania a analýzy údajov bez akejkoľvek závislosti od IT.

Predstavujeme dátovú štruktúru Dremio

Nástroje BI, systémy dátovej vedy a modely strojového učenia fungujú najlepšie, keď údaje žijú v jednej výkonnej relačnej databáze. Bohužiaľ, to nie je miesto, kde dnes dáta žijú. Výsledkom je, že IT nezostáva nič iné, ako túto priepasť preklenúť kombináciou vývoja vlastného ETL a proprietárnych produktov. V mnohých spoločnostiach analytický zásobník obsahuje nasledujúce vrstvy:

  • Stupňovanie údajov. Údaje sa presúvajú z rôznych prevádzkových databáz do jednej pracovnej oblasti, ako je napríklad klaster Hadoop alebo služba cloudového úložiska (napr. Amazon S3).
  • Dátový sklad. Aj keď je možné dotazy SQL vykonávať priamo na úložisku Hadoop a cloudovom úložisku, tieto systémy jednoducho nie sú navrhnuté tak, aby poskytovali interaktívny výkon. Preto sa podmnožina údajov zvyčajne načítava do relačného dátového skladu alebo databázy MPP.
  • Kocky, agregačné tabuľky a extrakty BI. Aby bolo možné poskytovať interaktívny výkon na veľkých množinách údajov, musia byť údaje predbežne agregované a / alebo indexované vytváraním kociek v systéme OLAP alebo materializovanými agregačnými tabuľkami v dátovom sklade.

Táto viacvrstvová architektúra predstavuje veľa výziev. Je zložitý, krehký a pomalý a vytvára prostredie, v ktorom sú spotrebitelia dát úplne závislí od IT.

Dremio predstavuje novú vrstvu v oblasti dátovej analýzy, ktorú nazývame samoobslužná dátová štruktúra. Dremio je projekt s otvoreným zdrojom, ktorý umožňuje obchodným analytikom a dátovým vedcom preskúmať a analyzovať akékoľvek údaje kedykoľvek, bez ohľadu na ich umiestnenie, veľkosť alebo štruktúru. Dremio kombinuje škálovateľnú architektúru so stĺpcovým vykonávaním a akceleráciou s cieľom dosiahnuť interaktívny výkon na akomkoľvek objeme dát a zároveň umožňuje IT, dátovým vedcom a obchodným analytikom plynulo formovať údaje podľa obchodných potrieb.

Postavené na šípkach Apache, Apache Parket a Apache Calcite

Dremio využíva vysokovýkonné stĺpcové ukladanie a vykonávanie dát, ktoré využívajú technológie Apache Arrow (stĺpcové v pamäti) a Apache Parquet (stĺpcové na disku). Dremio tiež používa Apache Calcite na analýzu SQL a optimalizáciu dotazov, pričom stavia na rovnakých knižniciach ako mnoho iných strojov založených na SQL, ako je napríklad Apache Hive.

Apache Arrow je projekt s otvoreným zdrojom, ktorý umožňuje stĺpcové spracovanie a výmenu údajov v pamäti. Arrow vytvoril Dremio. Zahŕňa správcov z rôznych spoločností vrátane spoločností Cloudera, Databricks, Hortonworks, Intel, MapR a Two Sigma.

Dremio je prvý vykonávací stroj zostavený od základu na Apache Arrow. Interne sa údaje v pamäti uchovávajú mimo haldy vo formáte Arrow a čoskoro bude k dispozícii rozhranie API, ktoré vráti výsledky dotazu ako vyrovnávacie pamäte Arrow.

Arrow sa ujal aj celý rad ďalších projektov. Medzi tieto projekty patria Python (Pandas) a R, ktoré umožňujú vedeckým pracovníkom v oblasti údajov efektívnejšie pracovať s údajmi. Napríklad Wes McKinney, tvorca populárnej knižnice Pandas, nedávno demonštroval, ako Arrow umožňuje používateľom Pythonu čítať dáta do Pandas rýchlosťou viac ako 10 GB / s.

Ako Dremio umožňuje samoobslužné údaje

Okrem schopnosti interaktívne pracovať s ich súbormi údajov, inžinieri údajov, obchodní analytici a vedci v oblasti údajov tiež potrebujú spôsob, ako údaje upraviť tak, aby vyhovovali potrebám konkrétneho projektu. Jedná sa o zásadný posun od modelu zameraného na IT, keď spotrebitelia dát iniciujú žiadosť o súbor údajov a čakajú, kým IT splní svoju žiadosť o týždne alebo mesiace neskôr. Dremio umožňuje samoobslužný model, v ktorom spotrebitelia dát využívajú možnosti korekcie dát Dremio na spoločné objavovanie, spravovanie, akceleráciu a zdieľanie dát bez toho, aby sa museli spoliehať na IT.

Všetky tieto funkcie sú prístupné prostredníctvom moderného, ​​intuitívneho webového používateľského rozhrania:

  • Objavte. Dremio obsahuje jednotný katalóg údajov, kde môžu používatelia objavovať a skúmať fyzické a virtuálne súbory údajov. Katalóg údajov sa automaticky aktualizuje pri pridávaní nových zdrojov údajov a pri vývoji zdrojov údajov a virtuálnych súborov údajov. Všetky metaúdaje sú indexované vo vysoko výkonnom prehľadateľnom indexe a sú prístupné používateľom v celom rozhraní Dremio.
  • Kurátor. Dremio umožňuje používateľom spravovať údaje vytváraním virtuálnych súborov údajov. Podporované sú rôzne transformácie typu point-and-click a pokročilí používatelia môžu na definovanie zložitejších transformácií využiť syntax SQL. Keď sa dotazy spúšťajú v systéme, Dremio sa dozvie o dátach, čo mu umožní odporučiť rôzne transformácie, ako sú spojenia a konverzie dátových typov.
  • Dremio je schopný zrýchliť dátové súbory až 1000-krát nad výkonnosť zdrojového systému. Používatelia môžu hlasovať za súbory údajov, ktoré by podľa nich mali byť rýchlejšie, a heuristika spoločnosti Dremio tieto hlasy zohľadní pri určovaní toho, ktoré súbory údajov sa majú zrýchliť. Správcovia systému môžu voliteľne ručne určiť, ktoré súbory údajov sa majú zrýchliť.
  • Dremio umožňuje používateľom bezpečne zdieľať údaje s ostatnými používateľmi a skupinami. V tomto modeli môže skupina používateľov spolupracovať na virtuálnom súbore údajov, ktorý sa použije pre konkrétnu analytickú úlohu. Používatelia môžu tiež nahrať svoje vlastné údaje, napríklad tabuľky programu Excel, a pripojiť sa k ďalším súborom údajov z podnikového katalógu. Tvorcovia virtuálnych súborov údajov môžu určiť, ktorí používatelia môžu dopytovať alebo upravovať ich súbory virtuálnych údajov. Pre vaše dáta je to ako Dokumenty Google.

Ako funguje akcelerácia dát Dremio

Dremio využíva vysoko optimalizované fyzické znázornenia zdrojových údajov s názvom Data Reflections. Reflection Store môže žiť na HDFS, MapR-FS, cloudovom úložisku ako S3 alebo priamo pripojenom úložisku (DAS). Veľkosť úložiska odrazov môže presiahnuť veľkosť fyzickej pamäte. Táto architektúra umožňuje spoločnosti Dremio akcelerovať viac údajov pri nižších nákladoch, čo má za následok oveľa vyšší pomer prístupov do pamäte cache v porovnaní s tradičnými architektúrami iba s pamäťou. Odrazy údajov automaticky využíva optimalizátor založený na nákladoch v čase dopytovania.

Odrazy údajov sú pre koncových používateľov neviditeľné. Na rozdiel od kociek OLAP, agregačných tabuliek a extraktov BI sa používateľ výslovne nepripojí k reflexii údajov. Namiesto toho používatelia zadávajú dotazy proti logickému modelu a optimalizátor spoločnosti Dremio automaticky zrýchľuje dopyt pomocou výhod reflexov údajov, ktoré sú vhodné pre dopyt na základe analýzy nákladov optimalizátora.

Keď optimalizátor nedokáže zrýchliť dopyt, Dremio využíva svoj vysoko výkonný distribuovaný procesor spúšťania, ktorý využíva stĺpcové spracovanie v pamäti (cez Apache Arrow) a pokročilé push-downy do podkladových zdrojov údajov (pri práci so zdrojmi RDBMS alebo NoSQL).

Ako Dremio spracováva dotazy SQL

Klientske aplikácie vydávajú dotazy typu SQL na server Dremio cez ODBC, JDBC alebo REST. Dotaz môže zahŕňať jeden alebo viac súborov údajov, ktoré sa potenciálne nachádzajú v rôznych zdrojoch údajov. Napríklad dotazom môže byť spojenie medzi tabuľkou Hive, Elasticsearch a niekoľkými tabuľkami Oracle.

Dremio využíva dve primárne techniky na zníženie množstva spracovania potrebného na vykonanie dotazu:

  • Push-downs do podkladového zdroja dát. Optimalizátor zohľadní možnosti základného zdroja údajov a relatívne náklady. Potom vygeneruje plán, ktorý vykoná fázy dotazu buď v zdrojovom, alebo v distribuovanom prostredí vykonávania Dremio, aby sa dosiahol čo najefektívnejší celkový plán.
  • Zrýchlenie pomocou odrazov údajov. Optimalizátor použije odrazy údajov pre časti dotazu, keď vznikne najefektívnejší celkový plán. V mnohých prípadoch je možné celý dotaz obsluhovať z údajov Reflections, pretože môžu byť rádovo efektívnejšie ako spracovanie dotazov v podkladovom zdroji údajov.

Dotaz na stlačenie nadol

Dremio je schopný presunúť spracovanie nadol do relačných a nerelačných zdrojov údajov. Nerelačné zdroje údajov zvyčajne nepodporujú SQL a majú obmedzené možnosti vykonávania. Napríklad súborový systém nemôže použiť predikáty alebo agregácie. MongoDB môže na druhej strane použiť predikáty a agregácie, ale nepodporuje všetky spojenia. Optimalizátor Dremio chápe možnosti každého zdroja údajov. Keď je to najefektívnejšie, program Dremio presunie čo najviac dotazu na podkladový zdroj, ako je to možné, a zvyšok vykoná vo svojom vlastnom distribuovanom exekučnom stroji.

Uvoľnenie prevádzkových databáz

Väčšina operačných databáz je navrhnutá pre pracovné zaťaženie optimalizované na zápis. Ďalej tieto nasadenia musia riešiť prísne dohody SLA, pretože akýkoľvek výpadok alebo znížený výkon môžu významne ovplyvniť podnik. Výsledkom je, že operačné systémy sú často izolované od spracovania analytických otázok. V týchto prípadoch môže Dremio vykonávať analytické dotazy pomocou Data Reflections, ktoré poskytujú čo najefektívnejšie spracovanie dotazov pri minimálnom dopade na operačný systém. Úvahy o údajoch sa pravidelne aktualizujú na základe zásad, ktoré je možné konfigurovať pre jednotlivé tabuľky.

Fázy vykonávania dotazov

Životnosť dotazu zahŕňa nasledujúce fázy:

  1. Klient zadá dopyt koordinátorovi prostredníctvom ODBC / JDBC / REST
  2. Plánovanie
    1. Koordinátor analyzuje dopyt do univerzálneho relačného modelu Dremio
    2. Koordinátor berie do úvahy dostupné štatistické údaje o zdrojoch údajov na vypracovanie plánu dotazov, ako aj funkčné schopnosti zdroja
  3. Koordinátor prepisuje plán dotazov, ktorý sa má použiť
    1. dostupné údaje o odrazoch, s ohľadom na usporiadanie, rozdelenie a distribúciu údajov o odrazoch a
    2. dostupné možnosti zdroja údajov
  4. Exekúcia
  1. Exekútori paralelne načítajú údaje do vyrovnávacích pamätí Arrow zo zdrojov
    1. Exekútori vykonajú prepísaný dotazovací plán.
    2. Jeden exekútor zlúči výsledky od jedného alebo viacerých exekútorov a konečné výsledky odovzdá koordinátorovi
  1. Výsledky dostane klient od koordinátora

Upozorňujeme, že údaje môžu pochádzať z údajov alebo z podkladových zdrojov údajov. Pri čítaní zo zdroja údajov zadá exekútor natívne dotazy (napr. MongoDB MQL, Elasticsearch Query DSL, Microsoft Transact-SQL) určené optimalizátorom vo fáze plánovania.

Všetky dátové operácie sa vykonávajú na uzle vykonávateľa, čo umožňuje systému škálovať na veľa súbežných klientov pomocou iba niekoľkých koordinátorských uzlov.

Príklad vysunutia dopytu

Na ilustráciu toho, ako Data Fabric zapadá do vašej dátovej architektúry, sa pozrime podrobnejšie na spustenie dotazu SQL na zdroji, ktorý nepodporuje SQL.

Jedným z najpopulárnejších moderných zdrojov údajov je Elasticsearch. Elasticsearchu sa môže páčiť veľa, ale z hľadiska analýzy nepodporuje SQL (vrátane SQL spojení). To znamená, že nástroje ako Tableau a Excel nemožno použiť na analýzu údajov z aplikácií vytvorených v tomto úložisku dát. Existuje vizualizačný projekt s názvom Kibana, ktorý je obľúbený pre Elasticsearch, ale Kibana je určený pre vývojárov. Nie je to naozaj pre podnikových používateľov.

Dremio uľahčuje analýzu dát v Elasticsearch pomocou ľubovoľného nástroja založeného na SQL, vrátane Tableau. Zoberme si napríklad nasledujúci dotaz SQL pre obchodné údaje spoločnosti Yelp, ktorý je uložený v JSON:

VYBERTE štát, mesto, meno, počet_kontroly

Z elastického.opelpodnikania

KDE

uveďte NOT IN („TX“, „UT“, „NM“, „NJ“) A

počet_kontroly> 100

OBJEDNAŤ PODĽA review_count DESC, štát, mesto

OBMEDZENIE 10

Dremio skompiluje dopyt do výrazu, ktorý dokáže elasticsearch spracovať:

$config[zx-auto] not found$config[zx-overlay] not found