Dremio: Jednostavnija i brža analitika podataka

Jacques Nadeau je glavni tehnički direktor i suosnivač Dremija.

Sad je sjajno vrijeme da postanete programer. Tijekom posljednjeg desetljeća, odluke o tehnologiji prešle su iz dvorane u skupinu inovativnih programera koji grade s otvorenim kodom i donose odluke na temelju zasluga temeljnog projekta, a ne na osnovu komercijalnih odnosa koje pruža dobavljač. Pojavili su se novi projekti koji se usredotočuju na to da programeri postanu produktivniji i kojima je lakše upravljati i razmjeravati ih. To vrijedi za gotovo svaki sloj tehnološkog niza. Rezultat je to što programeri danas imaju gotovo neograničene mogućnosti za istraživanje novih tehnologija, novih arhitektura i novih modela implementacije.

Gledajući posebno podatkovni sloj, NoSQL sustavi poput MongoDB-a, Elasticsearch-a i Cassandre potisnuli su omotnicu u smislu okretnosti, skalabilnosti i performansi za operativne aplikacije, od kojih svaki ima drugačiji model podataka i pristup shemi. Putem su mnogi razvojni timovi prešli na model mikroservisa, šireći podatke o aplikacijama kroz mnogo različitih temeljnih sustava.

Što se tiče analitike, stari i novi izvori podataka našli su se u kombinaciji tradicionalnih skladišta podataka i jezera podataka, neki na Hadoopu, drugi na Amazonu S3. A uspon platforme za prijenos podataka Kafka stvara potpuno drugačiji način razmišljanja o kretanju podataka i analizi podataka u pokretu.

S podacima u toliko različitih tehnologija i osnovnih formata, analitika suvremenih podataka je teška. BI i analitički alati kao što su Tableau, Power BI, R, Python i modeli strojnog učenja dizajnirani su za svijet u kojem podaci žive u jedinstvenoj relacijskoj bazi podataka visokih performansi. Uz to, korisnici ovih alata - poslovni analitičari, znanstvenici podataka i modeli strojnog učenja - žele mogućnost samostalnog pristupa, istraživanja i analize, bez ikakve ovisnosti o IT-u.

Predstavljamo Dremio podatkovnu strukturu

BI alati, sustavi za znanost o podacima i modeli strojnog učenja najbolje rade kada podaci žive u jedinstvenoj relacijskoj bazi podataka visokih performansi. Nažalost, tamo danas ne žive podaci. Kao rezultat toga, IT nema drugog izbora nego premostiti taj jaz kombinacijom prilagođenog razvoja ETL-a i vlastitih proizvoda. U mnogim tvrtkama skup analitike uključuje sljedeće slojeve:

  • Koraci podataka . Podaci se premještaju iz različitih operativnih baza podataka u jedno pripremno područje, poput klastera Hadoop ili usluge pohrane u oblaku (npr. Amazon S3).
  • Skladište podataka . Iako je moguće izvršavati SQL upite izravno na Hadoopu i pohrani u oblaku, ti sustavi jednostavno nisu dizajnirani za pružanje interaktivnih performansi. Stoga se podskup podataka obično učitava u relacijsko skladište podataka ili MPP bazu podataka.
  • Kocke, tablice agregacije i BI ekstrakti . Da bi se pružila interaktivna izvedba na velikim skupovima podataka, podaci se moraju prethodno agregirati i / ili indeksirati izgradnjom kockica u OLAP sustavu ili materijaliziranim tablicama agregiranja u skladištu podataka.

Ova višeslojna arhitektura uvodi mnoge izazove. Složen je, krhak i spor i stvara okruženje u kojem potrošači podataka u potpunosti ovise o IT-u.

Dremio uvodi novu razinu u analitici podataka koju nazivamo samoposlužnim podatkovnim tkivom. Dremio je projekt otvorenog koda koji poslovnim analitičarima i znanstvenicima omogućuje istraživanje i analizu bilo kojih podataka u bilo kojem trenutku, bez obzira na njihovo mjesto, veličinu ili strukturu. Dremio kombinira arhitekturu smanjenja s stupčastim izvršavanjem i ubrzavanjem kako bi postigao interaktivne performanse na bilo kojem volumenu podataka, dok IT-u, znanstvenicima i poslovnim analitičarima omogućuje besprijekorno oblikovanje podataka prema potrebama poslovanja.

Izgrađeno na Apache Arrow, Apache Parketu i Apache Calcitu

Dremio koristi stupac za pohranu i izvršenje visokih performansi, a pokreću ga Apache Arrow (stupac u memoriji) i Apache Parket (stup na disku). Dremio također koristi Apache Calcite za raščlanjivanje SQL-a i optimizaciju upita, nadograđujući se na iste knjižnice kao i mnogi drugi motori temeljeni na SQL-u, kao što je Apache Hive.

Apache Arrow je projekt otvorenog koda koji omogućuje obradu i razmjenu podataka u memoriji u stupcima. Arrow je stvorio Dremio, a uključuje počinitelje iz različitih tvrtki, uključujući Cloudera, Databricks, Hortonworks, Intel, MapR i Two Sigma.

Dremio je prvi izvršni stroj izrađen od temelja na Apache Arrowu. Podaci se u memoriji interno održavaju izvan gomile u formatu Arrow i uskoro će se pojaviti API koji vraća rezultate upita kao Arrow memorijski međuspremnici.

Razni drugi projekti također su prihvatili Arrow. Python (Pandas) i R su među tim projektima, omogućujući znanstvenicima podataka učinkovitiji rad s podacima. Na primjer, Wes McKinney, tvorac popularne biblioteke Pandas, nedavno je pokazao kako Arrow omogućuje korisnicima Pythona čitanje podataka u Pande brzinom od preko 10 GB / s.

Kako Dremio omogućuje samoposlužne podatke

Osim mogućnosti interaktivnog rada sa svojim skupovima podataka, inženjeri podataka, poslovni analitičari i znanstvenici podataka trebaju i način za kuriranje podataka tako da odgovaraju potrebama određenog projekta. Ovo je temeljni pomak s IT-centric modela, gdje potrošači podataka pokreću zahtjev za skup podataka i čekaju da IT ispuni njihov zahtjev tjednima ili mjesecima kasnije. Dremio omogućuje model samoposluživanja, gdje potrošači podataka koriste Dremiove mogućnosti čuvanja podataka za zajedničko otkrivanje, kuriranje, ubrzavanje i dijeljenje podataka bez oslanjanja na IT.

Sve ove mogućnosti dostupne su putem modernog, intuitivnog, internetskog korisničkog sučelja:

  • Otkrijte . Dremio uključuje jedinstveni katalog podataka u kojem korisnici mogu otkrivati ​​i istraživati ​​fizičke i virtualne skupove podataka. Katalog podataka automatski se ažurira kad se dodaju novi izvori podataka, a kako se izvori podataka i virtualni skupovi podataka razvijaju. Svi se metapodaci indeksiraju u indeksu visokih performansi i mogu se pretraživati ​​i izloženi su korisnicima kroz Dremio sučelje.
  • Kurat . Dremio omogućuje korisnicima da upravljaju podacima stvaranjem virtualnih skupova podataka. Podržane su razne transformacije usmjeri i klikni, a napredni korisnici mogu koristiti SQL sintaksu za definiranje složenijih transformacija. Kako se upiti izvršavaju u sustavu, Dremio uči o podacima omogućujući mu da preporuči razne transformacije poput spajanja i pretvorbe tipova podataka.
  • Dremio je sposoban ubrzati skupove podataka do 1000 puta u odnosu na performanse izvornog sustava. Korisnici mogu glasati za skupove podataka za koje misle da bi trebali biti brži, a Dremiova heuristika razmotrit će te glasove pri određivanju koji će skupovi podataka ubrzati. Po želji, administratori sustava mogu ručno odrediti koje će skupove podataka ubrzati.
  • Dremio omogućuje korisnicima sigurnu razmjenu podataka s drugim korisnicima i skupinama. U ovom modelu skupina korisnika može surađivati ​​na virtualnom skupu podataka koji će se koristiti za određeni analitički posao. Korisnici također mogu prenijeti vlastite podatke, poput Excel proračunskih tablica, kako bi se pridružili ostalim skupovima podataka iz poslovnog kataloga. Stvoritelji virtualnih skupova podataka mogu odrediti koji korisnici mogu postavljati upite ili uređivati ​​njihove virtualne skupove podataka. To je poput Google dokumenata za vaše podatke.

Kako djeluje Dremio ubrzanje podataka

Dremio koristi visoko optimizirane fizičke prikaze izvornih podataka koji se nazivaju Data Reflections. Reflection Store može živjeti na HDFS-u, MapR-FS-u, pohrani u oblaku kao što je S3 ili izravno spojenoj pohrani (DAS). Veličina Spremišta odraza može premašiti veličinu fizičke memorije. Ova arhitektura omogućuje Dremiou da ubrza više podataka po nižoj cijeni, što rezultira mnogo većim omjerom pogođenih predmemorija u usporedbi s tradicionalnim arhitekturama samo s memorijom. Refleksije podataka automatski koristi troškovni optimizator u vrijeme upita.

Refleksije podataka su nevidljive za krajnje korisnike. Za razliku od OLAP kockica, agregacijskih tablica i BI ekstrakata, korisnik se izričito ne povezuje s Data Reflectionom. Umjesto toga, korisnici izdaju upite prema logičkom modelu, a Dremioov optimizator automatski ubrzava upit iskorištavanjem Data Reflections koji su prikladni za upit na temelju analize troškova optimizatora.

Kada optimizator ne može ubrzati upit, Dremio koristi svoj distribuirani pokretački mehanizam visokih performansi, koristeći stupčasta obrada u memoriji (putem Apache Arrow) i napredna guranja u osnovne izvore podataka (kada se radi o RDBMS ili NoSQL izvorima).

Kako Dremio obrađuje SQL upite

Klijentske aplikacije izdaju SQL upite Dremiou preko ODBC, JDBC ili REST. Upit može uključivati ​​jedan ili više skupova podataka koji potencijalno borave u različitim izvorima podataka. Na primjer, upit može biti spajanje tablice Hive, Elasticsearch i nekoliko Oracle tablica.

Dremio koristi dvije primarne tehnike za smanjenje količine obrade potrebne za upit:

  • Potiskivanja u osnovni izvor podataka . Optimizator će razmotriti mogućnosti osnovnog izvora podataka i relativne troškove. Zatim će generirati plan koji izvodi faze upita bilo u izvoru ili u Dremioovom distribuiranom okruženju izvršenja kako bi se postigao najučinkovitiji mogući ukupni plan.
  • Ubrzanje putem refleksija podataka . Optimizator će upotrijebiti Reflections podataka za dijelove upita kada ovo stvara najučinkovitiji ukupni plan. U mnogim se slučajevima cijeli upit može servisirati iz Reflections podataka jer mogu biti redovi veličine učinkovitiji od obrade upita u osnovnom izvoru podataka.

Upit za padove

Dremio je sposoban potisnuti obradu u relacijske i nerelacijske izvore podataka. Nerelacijski izvori podataka obično ne podržavaju SQL i imaju ograničene mogućnosti izvršenja. Datotečni sustav, na primjer, ne može primijeniti predikate ili agregacije. MongoDB, s druge strane, može primijeniti predikate i agregacije, ali ne podržava sva spajanja. Dremio optimizator razumije mogućnosti svakog izvora podataka. Kada je najučinkovitiji, Dremio će što više upita poslati osnovnom izvoru, a ostalo izvršava u vlastitom distribuiranom mehanizmu izvršavanja.

Iskrcavanje operativnih baza podataka

Većina operativnih baza podataka dizajnirana je za radno opterećenje optimizirano za pisanje. Nadalje, ove implementacije moraju se baviti strogim SLA-ima, jer svaki zastoj ili pogoršane performanse mogu značajno utjecati na poslovanje. Kao rezultat toga, operativni sustavi često su izolirani od obrade analitičkih upita. U tim slučajevima Dremio može izvršavati analitičke upite pomoću Reflections podataka, koji pružaju najučinkovitiju moguću obradu upita, a minimaliziraju utjecaj na operativni sustav. Refleksije podataka ažuriraju se povremeno na temelju pravila koja se mogu konfigurirati na osnovi tablice.

Faze izvršavanja upita

Život upita uključuje sljedeće faze:

  1. Klijent predaje upit koordinatoru putem ODBC / JDBC / REST
  2. Planiranje
    1. Koordinator raščlanjuje upit u Dremijevom univerzalnom relacijskom modelu
    2. Koordinator razmatra dostupne statistike o izvorima podataka kako bi razvio plan upita, kao i funkcionalne sposobnosti izvora
  3. Koordinator prepisuje plan upita koji će se koristiti
    1. dostupni odrazi podataka, uzimajući u obzir naručivanje, podjelu i distribuciju odraza podataka i
    2. dostupne mogućnosti izvora podataka
  4. Izvršenje
  1. Izvršitelji paralelno čitaju podatke u odbojnike Arrow iz izvora
    1. Izvršitelji izvršavaju prepisani plan upita.
    2. Jedan izvršitelj spaja rezultate jednog ili više izvršitelja i konačne rezultate prenosi koordinatoru
  1. Klijent dobiva rezultate od koordinatora

Napominjemo da podaci mogu potjecati iz Reflections Data ili temeljnih izvora podataka. Kada čita iz izvora podataka, izvršitelj predaje izvorne upite (npr. MongoDB MQL, Elasticsearch Query DSL, Microsoft Transact-SQL) kako ih je odredio optimizator u fazi planiranja.

Sve se radnje podataka izvode na izvršnom čvoru, omogućavajući sustav skaliranje do mnogih istodobnih klijenata koristeći samo nekoliko čvorova koordinatora.

Primjer pritiska na upit

Da bismo ilustrirali kako se Data Fabric uklapa u vašu podatkovnu arhitekturu, pogledajmo bliže izvođenje SQL upita na izvoru koji ne podržava SQL.

Jedan od popularnijih suvremenih izvora podataka je Elasticsearch. Elasticsearch ima mnogo toga za voljeti, ali u smislu analitike ne podržava SQL (uključujući SQL pridruživanja). To znači da se alati poput Tableau i Excel ne mogu koristiti za analizu podataka iz aplikacija izgrađenih na ovoj pohrani podataka. Postoji projekt vizualizacije pod nazivom Kibana koji je popularan za Elasticsearch, ali Kibana je dizajniran za programere. Nije zapravo za poslovne korisnike.

Dremio olakšava analizu podataka u Elasticsearchu bilo kojim alatom koji se temelji na SQL-u, uključujući Tableau. Uzmimo za primjer sljedeći SQL upit za Yelp poslovne podatke koji je pohranjen u JSON-u:

ODABERITE državu, grad, ime, pregled_broja

OD elastične.pomoć.poslovanje

GDJE

  stanje NOT IN ('TX', 'UT', 'NM', 'NJ') I

  broj pregleda> 100

NARUČITE po review_count DESC, država, grad

OGRANIČENJE 10

Dremio kompilira upit u izraz koji Elasticsearch može obraditi: