Programovanie

Prečo by ste mali používať Presto na analýzu ad hoc

Presto! Nejde len o zaklínadlo, ktoré nadchne vaše publikum po kúzelníckom triku, ale aj o to, aké meno sa čoraz viac používa pri diskusiách o tom, ako prekonať veľké dáta. Aj keď existuje veľa nasadení aplikácie Presto vo voľnej prírode, technológia - distribuovaný dotazovací stroj SQL, ktorý podporuje všetky druhy zdrojov údajov - zostáva neznáma pre mnohých vývojárov a analytikov údajov, ktorí by mohli mať prospech z ich používania.

V tomto článku sa budem zaoberať spoločnosťou Presto: čo to je, odkiaľ pochádza, v čom sa líši od iných riešení pre dátové sklady a prečo by ste to mali brať do úvahy pre svoje riešenia veľkých dát.

Presto vs. Úľ

Presto vzniklo na Facebooku už v roku 2012. Program otvorený od roku 2013, ktorý spravuje Nadácia Presto (súčasť nadácie Linux), zaznamenal v priebehu rokov neustály nárast popularity. Dnes niekoľko spoločností vybudovalo okolo Presta obchodný model, napríklad Ahana, s analytickými ponukami ad hoc založenými na PrestoDB.

Presto bolo postavené ako prostriedok poskytujúci koncovým používateľom prístup k obrovským súborom údajov na vykonávanie ad hoc analýz. Pred programom Presto použil Facebook na vykonanie tohto druhu analýzy program Hive (tiež vytvorený spoločnosťou Facebook a potom venovaný nadácii Apache Software Foundation). S pribúdajúcimi množinami dát Facebooku sa zistilo, že Hive nie je dostatočne interaktívny (čítanie: príliš pomalé). Bolo to do veľkej miery preto, že základom Hive je MapReduce, ktorý v tom čase vyžadoval pretrvávanie prechodných súborov údajov na HDFS. To znamenalo veľa I / O na disk pre dáta, ktoré boli nakoniec vyhodené.

Presto používa iný prístup k vykonávaniu týchto dotazov, aby šetril čas. Namiesto uchovávania prechodných údajov na HDFS vám Presto umožňuje vtiahnuť údaje do pamäte a vykonávať s nimi operácie, namiesto toho, aby ste všetky prechodné množiny údajov uchovali na disku. Ak to znie povedome, možno ste počuli o Apache Spark (alebo o akomkoľvek množstve ďalších technológií vonku), ktoré majú rovnaký základný koncept na efektívne nahradenie technológií založených na MapReduce. Pomocou aplikácie Presto budem uchovávať údaje tam, kde žijú (v Hadoope alebo, ako uvidíme, kdekoľvek) a vykonám spustenia v pamäti nášho distribuovaného systému a podľa potreby zamiešam údaje medzi servermi. Nedotýkam sa žiadneho disku, čo v konečnom dôsledku urýchľuje čas vykonania dotazu.

Ako funguje Presto

Na rozdiel od tradičného dátového skladu sa Presto označuje ako stroj na vykonávanie dotazov SQL. Dátové sklady riadia spôsob zápisu údajov, ich umiestnenie a spôsob čítania. Akonáhle dostanete dáta do svojho skladu, môže byť ťažké ich získať späť. Presto pristupuje iným spôsobom, keď oddelí ukladanie údajov od spracovania a zároveň poskytuje podporu pre rovnaký dotazovací jazyk ANSI SQL, na aký ste zvyknutí.

Vo svojom jadre Presto vykonáva dotazy na dátové súbory, ktoré sú poskytované najmä doplnkami Konektory. Konektor poskytuje prostriedku na čítanie (a dokonca aj zápis) údajov do externého dátového systému. Konektor Hive je jedným zo štandardných konektorov, ktorý používa rovnaké metadáta, aké by ste použili pri interakcii s HDFS alebo Amazon S3. Kvôli tejto konektivite je Presto náhradou pre organizácie, ktoré dnes používajú Hive. Je schopný načítať údaje z rovnakých schém a tabuliek pomocou rovnakých dátových formátov - ORC, Avro, Parquet, JSON a ďalších. Okrem konektora Hive nájdete konektory pre Cassandra, Elasticsearch, Kafka, MySQL, MongoDB, PostgreSQL a mnoho ďalších. Konektory sa do programu Presto neustále prispievajú, čo dáva spoločnosti Presto potenciál mať prístup k dátam kdekoľvek.

Výhodou tohto modelu oddeleného úložiska je, že Presto je schopný poskytnúť jediný federovaný pohľad na všetky vaše údaje - bez ohľadu na to, kde sa nachádzajú. To zvyšuje možnosti ad hoc dotazovania na úrovne, ktoré nikdy predtým nedosiahol, a zároveň poskytuje interaktívne časy dotazov na vaše veľké množiny údajov (ak máte infraštruktúru na ich zálohovanie, lokálne alebo v cloude).

Poďme sa pozrieť na to, ako je nasadené Presto a ako prebieha vykonávanie vašich dotazov. Presto je napísané v jazyku Java, a preto vyžaduje, aby bolo možné spustiť program JDK alebo JRE. Presto je nasadené ako dve hlavné služby, jedna Koordinátor a veľa Robotníci. Služba Koordinátor je v skutočnosti mozgom operácie, prijíma požiadavky na dotazy od klientov, analyzuje ich, zostavuje plán vykonávania a potom plánuje prácu, ktorá sa má vykonať v mnohých službách Worker. Každý pracovník spracuje časť celkového dotazu paralelne a vy môžete do svojho nasadenia Presto pridať služby pracovníkov, aby vyhovovali vašim požiadavkám. Každý zdroj údajov je nakonfigurovaný ako katalóg, a v každom dotaze môžete dopytovať toľko katalógov, koľko chcete.

Ahana

Presto je prístupné prostredníctvom ovládača JDBC a integruje sa s prakticky akýmkoľvek nástrojom, ktorý sa dá pripojiť k databázam pomocou JDBC. Rozhranie príkazového riadku Presto alebo CLI je často východiskovým bodom, keď začínate skúmať Presto. Tak či onak, klient sa spojí s koordinátorom, aby vydal dotaz SQL. Tento dopyt je analyzovaný a overený koordinátorom a zabudovaný do plánu vykonania dotazu. Tento plán podrobne popisuje, ako budú pracovníci Presto dotazu vykonávať. Plán dotazov (zvyčajne) sa začína jedným alebo viacerými prehľadaniami tabuľky, aby sa dali vytiahnuť údaje z vašich externých úložísk údajov. Potom existuje rad operátorov, ktorí vykonávajú projekcie, filtre, pripojenia, skupinové úlohy, objednávky a všetky druhy ďalších operácií. Plán končí tým, že konečný výsledok sa doručí klientovi prostredníctvom koordinátora. Tieto plány dotazov sú nevyhnutné pre pochopenie toho, ako Presto vykonáva vaše dotazy, ako aj pre schopnosť pitvať výkon dotazov a nájsť potenciálne úzke miesta.

Príklad dotazu Presto

Pozrime sa na dopyt a zodpovedajúci plán dotazov. Použijem dotaz TPC-H, bežný nástroj na porovnávanie používaný pre databázy SQL. Stručne povedané, TPC-H definuje štandardnú sadu tabuliek a dotazov na testovanie úplnosti jazyka SQL, ako aj prostriedok na porovnávanie rôznych databáz. Údaje sú určené pre prípady obchodného použitia a obsahujú zákazky odberateľa položiek, ktoré je možné poskytnúť veľkým počtom spotrebných materiálov. Presto poskytuje konektor TPC-H, ktorý generuje dáta za behu - veľmi užitočný nástroj pri kontrole Presto.

VYBERTE

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

Z riadkovej položky l

KDE

l.shipdate> = DÁTUM '01.01.1994'

AND l. Shipdate <DATE '01.01.1994' + INTERVAL '1' ROK

A l. Zľava MEDZI 0,06 - 0,01 A, 06 + 0,01

AND l. Množstvo <24;

Toto je dopyt číslo šesť, známy ako dopyt na zmenu predpovede výnosov. Citujúc dokumentáciu TPC-H, „tento dopyt kvantifikuje množstvo zvýšenia výnosov, ktoré by vyplynulo z eliminácie určitých celofiremných zliav v danom percentuálnom rozmedzí v danom roku.“

Presto rozdelí dopyt na jednu alebo viac fáz, ktoré sa tiež nazývajú fragmentya každá fáza obsahuje viac operátorov. Operátor je konkrétna funkcia plánu, ktorý sa vykonáva, a to buď skenovanie, filter, spojenie alebo výmena. Výmeny často rozbíjajú etapy. Výmena je časť plánu, kde sa údaje zasielajú cez sieť ďalším pracovníkom v klastri Presto. Takto sa spoločnosti Presto darí poskytovať svoju škálovateľnosť a výkon - rozdelením dotazu na niekoľko menších operácií, ktoré je možné vykonať paralelne, a umožňujú redistribúciu údajov v rámci klastra, aby bolo možné vykonať spojenie, zoskupenie a zoradenie súborov údajov. Pozrime sa na plán distribuovaných dotazov pre tento dopyt. Upozorňujeme, že plány dotazov sa čítajú zdola nahor.

 Fragment 0 [SINGLE]

- Výstup [výnosy] => [suma: dvojnásobok]

príjem: = suma

- Agregát (FINÁLNY) => [súčet: dvojnásobok]

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

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

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

Fragment 1

- Agregát (PARTIAL) => [sum_4: double]

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

- ScanFilterProject [table = TableHandle {connectorId = 'tpch', connectorHandle = "lineitem: sf1.0", layout = "voliteľný [lineitem: sf1.0]"}, grouped = false, filterPredicate = ((zľava MEDZI (DVOJNÁSOBKA 0,05 ) AND (DVOJNÁSOBNÝ 0,07)) AND ((množstvo) = (DÁTUM 01.01.1994)) AND ((shipdate) [expr: double]

expr: = (rozšírená cena) * (zľava)

extendedprice: = tpch: extendedprice

zľava: = tpch: zľava

shipdate: = tpch: shipdate

množstvo: = tpch: množstvo

Tento plán má dva fragmenty obsahujúce niekoľko operátorov. Fragment 1 obsahuje dvoch operátorov. ScanFilterProject skenuje údaje a vyberá potrebné stĺpce (tzv projektovanie), ktoré sú potrebné na splnenie predikátov, a vypočítajú stratu z dôvodu zľavy pre každú riadkovú položku. Potom operátor čiastočného agregátu vypočíta čiastočný súčet. Fragment 0 obsahuje operátor LocalExchange, ktorý prijíma čiastočné sumy z fragmentu 1, a potom konečný súhrn na výpočet konečnej sumy. Suma sa potom odošle klientovi.

Pri vykonávaní dotazu Presto paralelne skenuje údaje z externého zdroja údajov, vypočíta čiastočný súčet pre každé rozdelenie a potom výsledok tohto čiastkového súčtu odošle jednému pracovníkovi, aby mohol vykonať konečnú agregáciu. Pri spustení tohto dotazu dostanem stratu z dôvodu zliav asi 123 141 078,23 USD.

  príjem

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

1.2314107822830005E8

Keď budú dotazy zložitejšie, napríklad operátory spojenia a zoskupovania, plány dotazov môžu byť veľmi dlhé a komplikované. Vďaka tomu sa dotazy rozpadajú na sériu operátorov, ktoré je možné vykonávať paralelne s údajmi, ktoré sú uchovávané v pamäti po celú dobu životnosti dotazu.

Ako bude vaša množina údajov narastať, môžete rozširovať svoj klaster Presto, aby ste zachovali rovnaké očakávané doby chodu. Tento výkon v kombinácii s flexibilitou pri dopytovaní prakticky na akomkoľvek dátovom zdroji môže pomôcť vášmu podnikaniu získať väčšiu hodnotu z vašich dát ako kedykoľvek predtým - to všetko pri zachovaní dát tam, kde sú, a vyhnúť sa nákladným prenosom a technickému času na konsolidáciu vašich údajov do jedno miesto pre analýzu. Presto!

Ashish Tadose je spoluzakladateľom a hlavným softvérovým inžinierom v spoločnosti Ahana. Ashish, vášnivý pre distribuované systémy, sa pripojil k Ahane zo spoločnosti WalmartLabs, kde ako hlavný inžinier vybudoval službu multicloudovej akcelerácie dát poháňanú spoločnosťou Presto, pričom viedol a architektoval ďalšie produkty súvisiace s objavovaním údajov, federovanými dotazovacími strojmi a správou dát. Ashish predtým pôsobil ako senior dátový architekt v spoločnosti PubMatic, kde navrhol a dodal rozsiahlu dátovú platformu adtech pre reporting, analytiku a strojové učenie. Na začiatku svojej kariéry pracoval ako dátový inžinier vo spoločnosti VeriSign. Ashish je tiež prispievateľom do Apache a prispieva do projektov open source.

Nové technologické fórum poskytuje miesto na preskúmanie a diskusiu o vznikajúcich podnikových technológiách v nebývalej hĺbke a šírke. Výber je subjektívny, založený na našom výbere technológií, ktoré považujeme za dôležité a pre čitateľov najväčší záujem. neprijíma marketingové záruky na zverejnenie a vyhradzuje si právo upravovať všetok prispievaný obsah. Všetky otázky posielajte na adresu [email protected].

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