Programování

Proč byste měli používat Presto pro analýzu ad hoc

Rychle! Není to jen zaklínadlo, které nadchne vaše publikum po kouzelnickém triku, ale také jméno, které se stále více používá při diskusích o tom, jak proměnit velká data. I když existuje mnoho nasazení Presto ve volné přírodě, technologie - distribuovaný dotazovací stroj SQL, který podporuje všechny druhy zdrojů dat - zůstává neznámý mnoha vývojářům a datovým analytikům, kteří by z jeho používání mohli těžit.

V tomto článku budu diskutovat o Presto: co to je, odkud pochází, jak se liší od jiných řešení pro datové sklady a proč byste to měli zvážit pro vaše řešení pro velká data.

Presto vs. Úl

Presto vzniklo na Facebooku v roce 2012. Otevřeno v roce 2013 a spravováno Nadací Presto (součást nadace Linux), zaznamenává Presto v průběhu let stálý nárůst popularity. Dnes několik společností vytvořilo obchodní model kolem Presto, jako je Ahana, s nabídkami ad hoc analytiky založenými na PrestoDB.

Presto bylo vytvořeno jako prostředek k poskytování přístupu koncových uživatelů k obrovským souborům dat pro provádění ad hoc analýz. Před Presto by Facebook k provedení tohoto druhu analýzy používal Hive (také vytvořený Facebookem a poté darovaný Apache Software Foundation). Jak rostly datové soubory Facebooku, bylo zjištěno, že Hive není dostatečně interaktivní (číst: příliš pomalu). To bylo z velké části proto, že základem Hive je MapReduce, který v té době vyžadoval trvalé přechodné datové sady na HDFS. To znamenalo hodně I / O na disk pro data, která byla nakonec vyhozena.

Presto používá jiný přístup k provádění těchto dotazů, aby ušetřil čas. Místo uchovávání mezilehlých dat na HDFS vám Presto umožňuje vytáhnout data do paměti a provádět s nimi operace namísto zachování všech mezilehlých datových sad na disk. Pokud to zní povědomě, možná jste slyšeli o Apache Spark (nebo o celé řadě dalších technologií), které mají stejný základní koncept pro efektivní nahrazení technologií založených na MapReduce. Pomocí Presto uchovám data tam, kde žijí (v Hadoopu nebo, jak uvidíme, kdekoli) a provedu spouštění v paměti v našem distribuovaném systému a podle potřeby zamíchám data mezi servery. Nedotýkám se žádného disku, což nakonec zrychluje dobu provádění dotazu.

Jak Presto funguje

Na rozdíl od tradičního datového skladu se Presto označuje jako stroj pro provádění dotazů SQL. Datové sklady řídí, jak jsou data zapisována, kde jsou uložena a jak jsou čtena. Jakmile získáte data do skladu, může být obtížné je získat zpět. Společnost Presto zaujímá jiný přístup tím, že odděluje úložiště dat od zpracování a poskytuje podporu pro stejný dotazovací jazyk ANSI SQL, na který jste zvyklí.

V jádru Presto provádí dotazy na datové sady, které jsou poskytovány konkrétně zásuvnými moduly Konektory. Konektor poskytuje nástroji Presto možnost číst (a dokonce i zapisovat) data do externího datového systému. Konektor Hive je jedním ze standardních konektorů a používá stejná metadata, která byste použili k interakci s HDFS nebo Amazon S3. Kvůli této konektivitě je Presto náhradou pro organizace, které dnes používají Hive. Je schopen číst data ze stejných schémat a tabulek pomocí stejných datových formátů - ORC, Avro, Parquet, JSON a dalších. Kromě konektoru Hive najdete konektory pro Cassandra, Elasticsearch, Kafka, MySQL, MongoDB, PostgreSQL a mnoho dalších. Do společnosti Presto se neustále přispívají konektory, které dávají společnosti Presto potenciál mít přístup k datům kdekoli.

Výhodou tohoto modelu odděleného úložiště je, že Presto je schopen poskytnout jediný federovaný pohled na všechna vaše data - bez ohledu na to, kde se nachází. To zvyšuje možnosti ad hoc dotazování na úrovně, které nikdy předtím nedosáhlo, a zároveň poskytuje časy interaktivních dotazů na vaše velké datové sady (pokud máte infrastrukturu pro jejich zálohování, místní nebo cloudovou).

Pojďme se podívat na to, jak je Presto nasazen a jak probíhá provádění vašich dotazů. Presto je napsáno v Javě, a proto vyžaduje, aby bylo možné spustit JDK nebo JRE. Presto je nasazeno jako dvě hlavní služby, jedna Koordinátor a mnoho Pracovníci. Služba Koordinátor je efektivním mozkem operace, přijímá požadavky na dotazy od klientů, analyzuje dotaz, sestavuje plán provádění a poté plánuje práci, která má být provedena napříč mnoha službami Worker. Každý pracovník paralelně zpracovává část celkového dotazu a můžete do svého nasazení aplikace Presto přidat služby Worker, aby vyhovovaly vašim požadavkům. Každý zdroj dat je nakonfigurován jako katalog, a v každém dotazu můžete dotazovat tolik katalogů, kolik chcete.

Ahana

K aplikaci Presto se přistupuje prostřednictvím ovladače JDBC a integruje se prakticky s jakýmkoli nástrojem, který se může připojit k databázím pomocí JDBC. Rozhraní příkazového řádku Presto nebo CLI je často výchozím bodem, když začínáte zkoumat Presto. Ať tak či onak, klient se připojí ke koordinátorovi a vydá dotaz SQL. Tento dotaz je analyzován a ověřen koordinátorem a zabudován do plánu provádění dotazu. Tento plán podrobně popisuje, jak budou pracovníci Presto prováděni dotaz. Plán dotazů (obvykle) začíná jedním nebo více prohledáváními tabulky, aby bylo možné vytáhnout data z vašich externích úložišť dat. Pak existuje řada operátorů, kteří provádějí projekce, filtry, spojení, seskupení, objednávky a všechny druhy dalších operací. Plán končí doručením sady konečných výsledků klientovi prostřednictvím koordinátora. Tyto plány dotazů jsou zásadní pro pochopení toho, jak Presto provádí vaše dotazy, stejně jako pro schopnost pitvat výkon dotazu a najít potenciální úzká místa.

Příklad dotazu Presto

Podívejme se na dotaz a odpovídající plán dotazů. Použiji dotaz TPC-H, běžný srovnávací nástroj používaný pro databáze SQL. Stručně řečeno, TPC-H definuje standardní sadu tabulek a dotazů, aby bylo možné otestovat úplnost jazyka SQL, jakož i prostředek pro srovnání různých databází. Data jsou určena pro případy obchodního použití, které obsahují prodejní objednávky položek, které mohou být poskytnuty velkým množstvím spotřebního materiálu. Společnost Presto poskytuje konektor TPC-H, který generuje data za běhu - velmi užitečný nástroj při kontrole Presto.

VYBRAT

SUM (l.extendedprice * l.discount) AS výnosy

Z řádkové položky l

KDE

l.shipdate> = DATUM '01.01.1994'

A l. Shipdate <DATUM '01.01.1994' + INTERVAL '1' ROK

A l. Sleva MEZI 0,06 - 0,01 A 0,06 + 0,01

AND l. Množství <24;

Toto je dotaz číslo šest, známý jako Dotaz na změnu příjmu prognózy. Cituji dokumentaci TPC-H, „tento dotaz kvantifikuje částku zvýšení tržeb, která by vyplynula z eliminace určitých celopodnikových slev v daném procentním rozmezí v daném roce.“

Presto rozdělí dotaz na jednu nebo více fází, nazývaných také fragmentya každá fáze obsahuje více operátory. Operátor je konkrétní funkce plánu, který se provádí, buď skenování, filtr, spojení nebo výměna. Výměny často rozbíjejí etapy. Výměna je část plánu, kde jsou data zasílána přes síť dalším pracovníkům v klastru Presto. Takto se Presto dokáže postarat o svoji škálovatelnost a výkon - rozdělením dotazu na několik menších operací, které lze provádět paralelně a umožňují redistribuci dat v klastru za účelem provádění spojení, seskupování a řazení datových sad. Podívejme se na plán distribuovaných dotazů pro tento dotaz. Pamatujte, že plány dotazů se čtou zdola nahoru.

 Fragment 0 [JEDEN]

- Výstup [výnosy] => [součet: dvojnásobek]

příjem: = součet

- Agregát (FINÁLNÍ) => [součet: dvojnásobek]

sum: = "presto.default.sum" ((sum_4))

- LocalExchange [SINGLE] () => [sum_4: double]

- RemoteSource [1] => [sum_4: double]

Fragment 1

- Agregate (PARTIAL) => [sum_4: double]

sum_4: = "presto.default.sum" ((expr))

- ScanFilterProject [table = TableHandle {connectorId = 'tpch', connectorHandle = "lineitem: sf1.0", layout = "volitelně [lineitem: sf1.0]"}, grouped = false, filterPredicate = ((sleva MEZI (DVOJNÁSOBKA 0,05 ) AND (DVOJNÁSOBKA 0,07)) AND ((množství) = (DATUM 1. 1. 1994)) AND ((datum dodání) [expr: double]

expr: = (rozšířená cena) * (sleva)

extendedprice: = tpch: extendedprice

sleva: = tpch: sleva

shipdate: = tpch: shipdate

množství: = tpch: množství

Tento plán má dva fragmenty obsahující několik operátorů. Fragment 1 obsahuje dva operátory. ScanFilterProject skenuje data a vybírá potřebné sloupce (tzv promítání) potřebné k uspokojení predikátů a vypočítá ztrátu z důvodu slevy pro každou řádkovou položku. Poté částečný operátor agregace vypočítá částečný součet. Fragment 0 obsahuje operátor LocalExchange, který přijímá částečné částky z Fragmentu 1, a poté konečnou agregaci pro výpočet konečné částky. Součet se poté odešle klientovi.

Při provádění dotazu Presto paralelně skenuje data z externího zdroje dat, vypočítá částečný součet pro každé rozdělení a poté odešle výsledek tohoto částečného součtu jednomu pracovníkovi, aby mohl provést konečnou agregaci. Po spuštění tohoto dotazu dostanu kvůli slevám ztrátu ve výši 123 141 078,23 $.

  příjmy

----------------------

1.2314107822830005E8

Jak se dotazy stávají složitějšími, jako jsou operátory připojení a seskupování, plány dotazů mohou být velmi dlouhé a komplikované. Díky tomu se dotazy rozpadají na řadu operátorů, které lze provádět paralelně s daty, která jsou držena v paměti po celou dobu životnosti dotazu.

Jak vaše datová sada roste, můžete svůj cluster Presto rozšiřovat, abyste zachovali stejné očekávané doby běhu. Tento výkon v kombinaci s flexibilitou dotazovat se prakticky na jakýkoli zdroj dat může pomoci vašemu podnikání získat z vašich dat větší hodnotu než kdykoli předtím - to vše při zachování dat tam, kde jsou, a vyhnutí se nákladným přenosům a technickému času na konsolidaci dat do jedno místo pro analýzu. Rychle!

Ashish Tadose je spoluzakladatel a hlavní softwarový inženýr ve společnosti Ahana. Ashish, vášnivý pro distribuované systémy, se připojil k Ahaně ze společnosti WalmartLabs, kde jako hlavní inženýr vybudoval službu multicloudové akcelerace dat poháněnou společností Presto a současně vedl a vytvářel další produkty související s objevováním dat, federovanými dotazovacími stroji a správou dat. Ashish předtím působil jako senior datový architekt ve společnosti PubMatic, kde navrhoval a dodával rozsáhlou datovou platformu adtech pro reporting, analytiku a strojové učení. Na začátku své kariéry pracoval jako datový inženýr ve společnosti VeriSign. Ashish je také účastníkem Apache a přispívá k projektům open source.

Nové technologické fórum poskytuje místo, kde můžete prozkoumat a diskutovat o nově vznikajících podnikových technologiích v nebývalé hloubce a šíři. Výběr je subjektivní, založený na našem výběru technologií, které považujeme za důležité a pro čtenáře nejzajímavější. nepřijímá marketingové materiály ke zveřejnění a vyhrazuje si právo upravovat veškerý přispěný obsah. Všechny dotazy zasílejte na [email protected].

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