Programování

Dremio: Jednodušší a rychlejší analýza dat

Jacques Nadeau je technický ředitel a spoluzakladatel společnosti Dremio.

Nyní je skvělá doba být vývojářem. V uplynulém desetiletí se rozhodnutí o technologii přesunula z zasedací místnosti k inovativním vývojářům, kteří staví na otevřeném zdroji a rozhodují spíše na základě výhod základního projektu než na základě obchodních vztahů poskytovaných prodejcem. Objevily se nové projekty, které se zaměřují na zvýšení produktivity vývojářů a které se snadněji spravují a rozšiřují. To platí pro prakticky každou vrstvu technologického zásobníku. Výsledkem je, že vývojáři mají dnes téměř neomezené možnosti zkoumat nové technologie, nové architektury a nové modely nasazení.

Podíváme-li se zejména na datovou vrstvu, systémy NoSQL, jako jsou MongoDB, Elasticsearch a Cassandra, posunuly obálku z hlediska agility, škálovatelnosti a výkonu pro operační aplikace, každý s jiným datovým modelem a přístupem ke schématu. Po cestě se mnoho vývojových týmů přesunulo k modelu mikroslužeb a šíří data aplikací napříč mnoha různými základními systémy.

Pokud jde o analytiku, staré i nové zdroje dat si našly cestu do kombinace tradičních datových skladů a datových jezer, některé na Hadoopu, jiné na Amazonu S3. A vzestup platformy pro streamování dat Kafka vytváří zcela odlišný způsob myšlení o pohybu dat a analýze dat v pohybu.

S daty v tolika různých technologiích a základních formátech je analýza moderních dat těžká. BI a analytické nástroje, jako jsou Tableau, Power BI, R, Python a modely strojového učení, byly navrženy pro svět, ve kterém data žijí v jedné vysoce výkonné relační databázi. Kromě toho uživatelé těchto nástrojů - obchodní analytici, datoví vědci a modely strojového učení - chtějí schopnost samostatně přistupovat, prozkoumávat a analyzovat data bez jakékoli závislosti na IT.

Představujeme datovou strukturu Dremio

Nástroje BI, systémy datové vědy a modely strojového učení fungují nejlépe, když data žijí v jediné vysoce výkonné relační databázi. Bohužel dnes to není místo, kde data žijí. Výsledkem je, že IT nezbývá než překlenout tuto propast kombinací vlastního vývoje ETL a proprietárních produktů. V mnoha společnostech analytický zásobník zahrnuje následující vrstvy:

  • Staging dat. Data se přesouvají z různých provozních databází do jediné pracovní oblasti, jako je cluster Hadoop nebo služba cloudového úložiště (např. Amazon S3).
  • Datový sklad. I když je možné spouštět dotazy SQL přímo na Hadoop a cloudovém úložišti, tyto systémy prostě nejsou navrženy tak, aby poskytovaly interaktivní výkon. Proto se podmnožina dat obvykle načte do relačního datového skladu nebo databáze MPP.
  • Kostky, agregační tabulky a výtažky BI. Aby bylo možné poskytovat interaktivní výkon na velkých datových sadách, musí být data předem agregována a / nebo indexována vytvořením krychlí v systému OLAP nebo materializovanými agregačními tabulkami v datovém skladu.

Tato vícevrstvá architektura přináší mnoho výzev. Je složitý, křehký a pomalý a vytváří prostředí, kde jsou spotřebitelé dat zcela závislí na IT.

Dremio představuje novou úroveň v oblasti datové analýzy, kterou nazýváme samoobslužná datová struktura. Dremio je projekt s otevřeným zdrojovým kódem, který umožňuje obchodním analytikům a datovým vědcům prozkoumat a analyzovat libovolná data kdykoli, bez ohledu na jejich umístění, velikost nebo strukturu. Dremio kombinuje škálovatelnou architekturu se sloupcovým prováděním a akcelerací k dosažení interaktivního výkonu na jakémkoli datovém objemu a zároveň umožňuje IT, datovým vědcům a obchodním analytikům bezproblémově utvářet data podle potřeb podnikání.

Postaveno na Apache Arrow, Apache Parket a Apache Calcite

Dremio využívá vysoce výkonné sloupcové úložiště a provádění, které využívá technologie Apache Arrow (sloupcová v paměti) a Apache Parquet (sloupcová na disku). Dremio také používá Apache Calcite pro analýzu SQL a optimalizaci dotazů, přičemž staví na stejných knihovnách jako mnoho jiných motorů založených na SQL, jako je Apache Hive.

Apache Arrow je projekt s otevřeným zdrojovým kódem, který umožňuje sloupcové zpracování a výměnu dat v paměti. Arrow vytvořil Dremio a zahrnuje zadavatele z různých společností, včetně Cloudera, Databricks, Hortonworks, Intel, MapR a Two Sigma.

Dremio je první spouštěcí stroj postavený od základu na Apache Arrow. Interně jsou data v paměti udržována mimo haldu ve formátu Arrow a brzy bude k dispozici rozhraní API, které vrátí výsledky dotazu jako vyrovnávací paměti Arrow.

Arrow přijala také řada dalších projektů. Mezi tyto projekty patří Python (Pandas) a R. Umožňují vědcům v oblasti dat efektivněji pracovat s daty. Například Wes McKinney, tvůrce populární knihovny Pandas, nedávno demonstroval, jak Arrow umožňuje uživatelům Pythonu číst data do Pandas rychlostí přes 10 GB / s.

Jak Dremio umožňuje samoobslužná data

Kromě schopnosti interaktivně pracovat se svými datovými sadami potřebují datoví inženýři, obchodní analytici a datoví vědci také způsob, jak data upravit tak, aby byla vhodná pro potřeby konkrétního projektu. Jedná se o zásadní posun od modelu zaměřeného na IT, kdy spotřebitelé dat iniciují požadavek na datovou sadu a čekají na IT, aby splnili svůj požadavek o týdny nebo měsíce později. Dremio umožňuje samoobslužný model, kde spotřebitelé dat využívají schopnosti Dremio pro správu dat ke společnému objevování, správě, zrychlování a sdílení dat, aniž by se museli spoléhat na IT.

Všechny tyto funkce jsou přístupné prostřednictvím moderního, intuitivního webového uživatelského rozhraní:

  • Objevit. Dremio obsahuje jednotný datový katalog, kde mohou uživatelé objevovat a prozkoumávat fyzické a virtuální datové sady. Katalog dat se automaticky aktualizuje, když se přidají nové zdroje dat a jak se budou vyvíjet zdroje dat a virtuální datové sady. Všechna metadata jsou indexována ve vysoce výkonném prohledávatelném indexu a vystavena uživatelům v celém rozhraní Dremio.
  • Kaplan. Dremio umožňuje uživatelům spravovat data vytvářením virtuálních datových sad. Jsou podporovány různé transformace typu point-and-click a pokročilí uživatelé mohou k definování složitějších transformací využít syntaxi SQL. Při provádění dotazů v systému se Dremio dozví o datech a umožní mu doporučit různé transformace, jako jsou spojení a převody datových typů.
  • Dremio je schopen zrychlit datové sady až 1000x nad výkonnost zdrojového systému. Uživatelé mohou hlasovat pro datové sady, o kterých si myslí, že by měly být rychlejší, a heuristika společnosti Dremio tyto hlasy zohlední při určování, které datové sady se mají zrychlit. Správci systému mohou volitelně ručně určit, které datové sady se mají zrychlit.
  • Dremio umožňuje uživatelům bezpečně sdílet data s ostatními uživateli a skupinami. V tomto modelu může skupina uživatelů spolupracovat na virtuální datové sadě, která se použije pro konkrétní analytickou úlohu. Uživatelé mohou také nahrát svá vlastní data, například tabulky aplikace Excel, a připojit se k dalším datovým sadám z podnikového katalogu. Tvůrci virtuálních datových sad mohou určit, kteří uživatelé mohou zadávat dotazy nebo upravovat jejich virtuální datové sady. Pro vaše data je to jako Dokumenty Google.

Jak funguje akcelerace dat Dremio

Dremio využívá vysoce optimalizované fyzické reprezentace zdrojových dat s názvem Data Reflections. Reflection Store může fungovat na HDFS, MapR-FS, cloudovém úložišti, jako je S3, nebo přímo připojeném úložišti (DAS). Velikost úložiště odrazů může překročit velikost fyzické paměti. Tato architektura umožňuje Dremio zrychlit více dat za nižší cenu, což má za následek mnohem vyšší poměr zásahů do mezipaměti ve srovnání s tradičními architekturami pouze s pamětí. Reflexe dat jsou automaticky využívány optimalizátorem nákladů v době dotazu.

Odrazy dat jsou pro koncové uživatele neviditelné. Na rozdíl od kostek OLAP, agregačních tabulek a výtažků BI se uživatel výslovně nepřipojuje k reflexi dat. Místo toho uživatelé zadávají dotazy proti logickému modelu a optimalizátor Dremio automaticky zrychluje dotaz využitím výhod datových odrazů, které jsou vhodné pro dotaz na základě analýzy nákladů optimalizátoru.

Když optimalizátor nedokáže zrychlit dotaz, Dremio využívá svůj vysoce výkonný distribuovaný spouštěcí modul, který využívá sloupcové zpracování v paměti (přes Apache Arrow) a pokročilé push-downy do podkladových zdrojů dat (při řešení zdrojů RDBMS nebo NoSQL).

Jak Dremio zpracovává dotazy SQL

Klientské aplikace vydávají dotazy SQL společnosti Dremio přes ODBC, JDBC nebo REST. Dotaz může zahrnovat jednu nebo více datových sad, potenciálně umístěných v různých zdrojích dat. Například dotazem může být spojení mezi tabulkou Hive, Elasticsearch a několika tabulkami Oracle.

Dremio využívá dvě primární techniky ke snížení množství zpracování požadovaného pro dotaz:

  • Push-downs do podkladového zdroje dat. Optimalizátor zváží možnosti podkladového zdroje dat a relativní náklady. Poté vygeneruje plán, který provede fáze dotazu buď ve zdroji, nebo v prostředí distribuovaného spuštění Dremio, aby dosáhl co nejefektivnějšího celkového plánu.
  • Zrychlení pomocí datových odrazů. Optimalizátor použije datové odrazy pro části dotazu, když to vytvoří nejefektivnější celkový plán. V mnoha případech lze celý dotaz obsluhovat z datových odrazů, protože mohou být řádově efektivnější než zpracování dotazů v podkladovém zdroji dat.

Dotaz na down-down

Dremio dokáže posunout zpracování dolů do relačních a nerelačních zdrojů dat. Nerelační zdroje dat obvykle nepodporují SQL a mají omezené možnosti provádění. Souborový systém například nemůže použít predikáty nebo agregace. MongoDB na druhé straně může použít predikáty a agregace, ale nepodporuje všechna spojení. Optimalizátor Dremio rozumí schopnostem každého zdroje dat. Když je to nejefektivnější, Dremio posune co nejvíce dotazu na podkladový zdroj, jak je to možné, a zbytek provede ve svém vlastním distribuovaném spouštěcím stroji.

Vykládání provozních databází

Většina provozních databází je navržena pro úlohy optimalizované pro zápis. Kromě toho musí tato nasazení řešit přísné smlouvy SLA, protože jakýkoli výpadek nebo snížený výkon může mít na podnik významný dopad. Výsledkem je, že operační systémy jsou často izolovány od zpracování analytických dotazů. V těchto případech může Dremio provádět analytické dotazy pomocí datových odrazů, které poskytují nejúčinnější možné zpracování dotazů při minimalizaci dopadu na operační systém. Reflexe dat jsou pravidelně aktualizovány na základě zásad, které lze konfigurovat pro jednotlivé tabulky.

Fáze provádění dotazů

Životnost dotazu zahrnuje následující fáze:

  1. Klient zadá dotaz koordinátorovi prostřednictvím ODBC / JDBC / REST
  2. Plánování
    1. Koordinátor analyzuje dotaz do univerzálního relačního modelu Dremio
    2. Koordinátor bere v úvahu dostupné statistiky o zdrojích dat, aby vytvořil plán dotazů, stejně jako funkční schopnosti zdroje
  3. Koordinátor přepíše plán dotazů, který se má použít
    1. dostupné datové odrazy, s ohledem na uspořádání, rozdělení a distribuci datových odrazů a
    2. dostupné možnosti zdroje dat
  4. Provedení
  1. Exekutoři čtou data do vyrovnávacích pamětí šipek ze zdrojů paralelně
    1. Exekutoři provádějí přepsaný plán dotazů.
    2. Jeden exekutor sloučí výsledky od jednoho nebo více exekutorů a vysílá konečné výsledky koordinátorovi
  1. Výsledky obdrží klient od koordinátora

Upozorňujeme, že data mohou pocházet z datových odrazů nebo podkladových zdrojů dat. Při čtení ze zdroje dat zadá exekutor nativní dotazy (např. MongoDB MQL, Elasticsearch Query DSL, Microsoft Transact-SQL), jak je určil optimalizátor ve fázi plánování.

Všechny datové operace se provádějí na uzlu exekutora, což umožňuje systému škálovat na mnoho souběžných klientů pomocí pouze několika uzlů koordinátora.

Ukázková nabídka dolů

Abychom ilustrovali, jak Data Fabric zapadá do vaší datové architektury, pojďme se blíže podívat na spuštění dotazu SQL na zdroji, který nepodporuje SQL.

Jedním z nejpopulárnějších moderních zdrojů dat je Elasticsearch. Elasticsearch se může hodně líbit, ale z hlediska analytiky nepodporuje SQL (včetně připojení SQL). To znamená, že nástroje jako Tableau a Excel nelze použít k analýze dat z aplikací postavených v tomto úložišti dat. Existuje vizualizační projekt s názvem Kibana, který je populární pro Elasticsearch, ale Kibana je určen pro vývojáře. Není to opravdu pro podnikové uživatele.

Dremio usnadňuje analýzu dat v Elasticsearch pomocí jakéhokoli nástroje založeného na SQL, včetně Tableau. Vezměme si například následující dotaz SQL pro obchodní data Yelpu, který je uložen v JSON:

VYBERTE stát, město, jméno, počet_kontroly

Z elastické.yelp. Podnikání

KDE

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

počet recenzí> 100

OBJEDNAT PODLE review_count DESC, stát, město

LIMIT 10

Dremio zkompiluje dotaz do výrazu, který dokáže Elasticsearch zpracovat: