Programmēšana

Dremio: Vienkāršāka un ātrāka datu analīze

Žaks Nado ir Dremio CTO un līdzdibinātājs.

Tagad ir lielisks laiks būt izstrādātājam. Pēdējās desmitgades laikā lēmumi par tehnoloģijām ir mainījušies no sēžu zāles uz novatoriskiem izstrādātājiem, kuri būvē ar atvērto avotu un pieņem lēmumus, pamatojoties uz pamatā esošā projekta nopelniem, nevis uz pārdevēja nodrošinātajām komerciālajām attiecībām. Ir parādījušies jauni projekti, kuru mērķis ir padarīt izstrādātājus produktīvākus un kurus ir vieglāk pārvaldīt un mērogot. Tas attiecas uz praktiski katru tehnoloģiju kaudzes slāni. Rezultāts ir tāds, ka izstrādātājiem šodien ir gandrīz neierobežotas iespējas izpētīt jaunas tehnoloģijas, jaunas arhitektūras un jaunus izvietošanas modeļus.

Īpaši aplūkojot datu slāni, tādas NoSQL sistēmas kā MongoDB, Elasticsearch un Cassandra ir virzījušas aploksni operatīvo lietojumu veiklības, mērogojamības un veiktspējas ziņā, katrai no tām ir atšķirīgs datu modelis un pieeja shēmai. Ceļā daudzas izstrādes komandas pārgāja uz mikropakalpojumu modeli, izplatot lietojumprogrammas datus daudzās dažādās pamatā esošajās sistēmās.

Runājot par analīzi, vecie un jaunie datu avoti ir nonākuši tradicionālo datu noliktavu un datu ezeru sajaukumā, daži - Hadoop, citi - Amazon S3. Un Kafka datu straumēšanas platformas pieaugums rada pavisam citu domāšanas veidu par datu kustību un kustībā esošu datu analīzi.

Tā kā dati ir tik dažādās tehnoloģijās un to pamatformātos, mūsdienu datu analīze ir sarežģīta. Tādi BI un analīzes rīki kā Tableau, Power BI, R, Python un mašīnmācīšanās modeļi tika izstrādāti pasaulei, kurā dati dzīvo vienā, augstas veiktspējas relāciju datu bāzē. Turklāt šo rīku lietotāji - biznesa analītiķi, datu zinātnieki un mašīnmācīšanās modeļi - vēlas iespēju patstāvīgi piekļūt datiem, tos izpētīt un analizēt bez jebkādas atkarības no IT.

Iepazīstinām ar Dremio datu struktūru

BI rīki, datu zinātnes sistēmas un mašīnmācīšanās modeļi vislabāk darbojas, ja dati dzīvo vienā, augstas veiktspējas relāciju datu bāzē. Diemžēl mūsdienās dati šeit nav. Rezultātā IT nav citas izvēles, kā mazināt šo plaisu, izmantojot pielāgotu ETL izstrādes un patentētu produktu kombināciju. Daudzos uzņēmumos analīzes kaudze ietver šādus slāņus:

  • Datu iestudēšana. Dati tiek pārvietoti no dažādām operatīvajām datu bāzēm uz vienu pieturvietu, piemēram, Hadoop kopu vai mākoņkrātuves pakalpojumu (piemēram, Amazon S3).
  • Datu noliktava. Lai gan SQL vaicājumus ir iespējams izpildīt tieši Hadoop un mākoņa krātuvē, šīs sistēmas vienkārši nav paredzētas interaktīvas veiktspējas nodrošināšanai. Tāpēc datu apakškopa parasti tiek ielādēta relāciju datu noliktavā vai MPP datu bāzē.
  • Kubi, apkopošanas tabulas un BI izvilkumi. Lai nodrošinātu interaktīvu veiktspēju lielās datu kopās, dati ir iepriekš jāapkopo un / vai jāindeksē, veidojot kubus OLAP sistēmā vai materializētas apkopošanas tabulas datu noliktavā.

Šī daudzslāņu arhitektūra rada daudz problēmu. Tas ir sarežģīts, trausls un lēns, un rada vidi, kur datu patērētāji ir pilnībā atkarīgi no IT.

Dremio ievieš jaunu datu analīzes līmeni, ko mēs saucam par pašapkalpošanās datu struktūru. Dremio ir atvērtā koda projekts, kas ļauj biznesa analītiķiem un datu zinātniekiem jebkurā laikā izpētīt un analizēt visus datus neatkarīgi no tā atrašanās vietas, lieluma vai struktūras. Dremio apvieno paplašinātu arhitektūru ar kolonnu izpildi un paātrinājumu, lai sasniegtu interaktīvu veiktspēju jebkurā datu apjomā, vienlaikus ļaujot IT, datu zinātniekiem un biznesa analītiķiem vienmērīgi veidot datus atbilstoši biznesa vajadzībām.

Uzbūvēta uz Apache Arrow, Apache Parketa un Apache Calcite

Dremio izmanto augstas veiktspējas kolonnu glabāšanu un izpildi, ko nodrošina Apache Arrow (kolonnveida atmiņā) un Apache Parkets (kolonnu diskā). Dremio arī izmanto Apache Calcite SQL parsēšanai un vaicājumu optimizēšanai, balstoties uz tām pašām bibliotēkām kā daudzas citas uz SQL balstītas programmas, piemēram, Apache Hive.

Apache Arrow ir atvērta pirmkoda projekts, kas nodrošina kolonnveida atmiņā esošu datu apstrādi un apmaiņu. Arrow izveidoja Dremio, un tajā ietilpst dažādu uzņēmumu, tostarp Cloudera, Databricks, Hortonworks, Intel, MapR un Two Sigma, saistības.

Dremio ir pirmais izpildes dzinējs, kas uzbūvēts no apakšas uz Apache Arrow. Iekšēji atmiņā esošie dati tiek uzturēti ar kaudzēm Arrow formātā, un drīz būs API, kas vaicājuma rezultātus atdod kā Arrow atmiņas buferus.

Arrow ir iesaistījušies arī dažādi citi projekti. Python (Pandas) un R ir vieni no šiem projektiem, kas ļauj datu zinātniekiem efektīvāk strādāt ar datiem. Piemēram, Wes McKinney, populārās Pandas bibliotēkas veidotājs, nesen parādīja, kā Arrow ļauj Python lietotājiem nolasīt datus pandās ar ātrumu virs 10 GB / s.

Kā Dremio iespējo pašapkalpošanās datus

Papildus spējai sadarboties interaktīvi ar savām datu kopām, datu inženieriem, biznesa analītiķiem un datu zinātniekiem ir nepieciešams arī veids, kā datus apstrādāt tā, lai tie būtu piemēroti konkrēta projekta vajadzībām. Šī ir būtiska pāreja no uz IT vērstā modeļa, kur datu patērētāji uzsāk pieprasījumu pēc datu kopas un gaida, kamēr IT izpildīs viņu pieprasījumu nedēļas vai mēnešus vēlāk. Dremio nodrošina pašapkalpošanās modeli, kurā datu patērētāji izmanto Dremio datu apstrādes iespējas, lai kopīgi atklātu, kurētu, paātrinātu un koplietotu datus, nepaļaujoties uz IT.

Visas šīs iespējas ir pieejamas, izmantojot modernu, intuitīvu, tīmekļa lietotāja saskarni:

  • Atklājiet. Dremio ietver vienotu datu katalogu, kurā lietotāji var atklāt un izpētīt fiziskās un virtuālās datu kopas. Datu katalogs tiek automātiski atjaunināts, pievienojot jaunus datu avotus un attīstoties datu avotiem un virtuālajām datu kopām. Visi metadati tiek indeksēti augstas veiktspējas, meklējamā rādītājā un tiek pakļauti lietotājiem visā Dremio saskarnē.
  • Kurēt. Dremio ļauj lietotājiem apstrādāt datus, izveidojot virtuālas datu kopas. Tiek atbalstītas dažādas punktu un klikšķu transformācijas, un pieredzējuši lietotāji var izmantot SQL sintaksi, lai definētu sarežģītākas transformācijas. Kad sistēmā tiek veikti vaicājumi, Dremio uzzina par datiem, ļaujot tam ieteikt dažādas transformācijas, piemēram, savienojumus un datu veida pārveidojumus.
  • Dremio spēj paātrināt datu kopas līdz pat 1000x, salīdzinot ar avota sistēmas veiktspēju. Lietotāji var balsot par datu kopām, kuras, viņuprāt, būtu ātrākas, un Dremio heiristika ņems vērā šos balsojumus, nosakot, kuras datu kopas paātrināt. Pēc izvēles sistēmas administratori var manuāli noteikt, kuras datu kopas paātrināt.
  • Dremio ļauj lietotājiem droši koplietot datus ar citiem lietotājiem un grupām. Šajā modelī lietotāju grupa var sadarboties virtuālā datu kopā, kas tiks izmantota konkrētam analītiskajam darbam. Kā alternatīvu lietotāji var augšupielādēt savus datus, piemēram, Excel izklājlapas, lai pievienotos citām datu kopām no uzņēmuma kataloga. Virtuālo datu kopu veidotāji var noteikt, kuri lietotāji var vaicāt vai rediģēt viņu virtuālās datu kopas. Jūsu datiem tas ir līdzīgs Google dokumentiem.

Kā darbojas Dremio datu paātrinājums

Dremio izmanto ļoti optimizētu avota datu fizisko attēlojumu, ko sauc par datu atspoguļojumiem. Reflection Store var dzīvot HDFS, MapR-FS, mākoņkrātuvēs, piemēram, S3, vai tieši pievienotā krātuvē (DAS). Reflection Store lielums var pārsniegt fiziskās atmiņas lielumu. Šī arhitektūra ļauj Dremio paātrināt vairāk datu par zemākām izmaksām, kā rezultātā ir daudz lielāks kešatmiņas trāpījumu koeficients salīdzinājumā ar tradicionālajām tikai atmiņā esošajām arhitektūrām. Datu refleksijas automātiski izmanto izmaksu optimizētājs vaicājuma laikā.

Datu refleksijas lietotājiem nav redzamas. Atšķirībā no OLAP kubiem, apkopošanas tabulām un BI izvilkumiem, lietotājs tieši nepieslēdzas datu atspoguļošanai. Tā vietā lietotāji izsniedz vaicājumus pēc loģiskā modeļa, un Dremio optimizētājs automātiski paātrina vaicājumu, izmantojot datu refleksijas, kas ir piemērotas vaicājumam, pamatojoties uz optimizētāja izmaksu analīzi.

Kad optimizētājs nevar paātrināt vaicājumu, Dremio izmanto savu augstas veiktspējas sadalītās izpildes motoru, izmantojot kolonnu atmiņas apstrādi (izmantojot Apache bultiņu) un uzlabotus nolaižamos datus pamatā esošajos datu avotos (ja tiek izmantoti RDBMS vai NoSQL avoti).

Kā Dremio apstrādā SQL vaicājumus

Klienta lietojumprogrammas izsniedz SQL vaicājumus Dremio, izmantojot ODBC, JDBC vai REST. Vaicājumā var būt iekļauta viena vai vairākas datu kopas, kas, iespējams, atrodas dažādos datu avotos. Piemēram, vaicājums var būt savienojums starp Hive tabulu, Elasticsearch un vairākām Oracle tabulām.

Lai samazinātu vaicājumam nepieciešamo apstrādi, Dremio izmanto divas galvenās metodes:

  • Atspiedumi uz pamatā esošo datu avotu. Optimizētājs ņems vērā pamata datu avota iespējas un relatīvās izmaksas. Pēc tam tā ģenerēs plānu, kas vaicājuma stadijas veic avotā vai Dremio izplatītās izpildes vidē, lai sasniegtu pēc iespējas efektīvāku kopējo plānu.
  • Paātrinājums, izmantojot datu atspoguļojumus. Optimizētājs vaicājuma daļām izmantos datu refleksijas, kad tas nodrošinās visefektīvāko kopējo plānu. Daudzos gadījumos visu vaicājumu var apkalpot, izmantojot datu refleksijas, jo tie var būt daudzkārt efektīvāki nekā vaicājumu apstrāde pamatā esošajā datu avotā.

Vaicājuma spiedieni

Dremio spēj virzīt apstrādi relāciju un citu datu avotos. Datu avoti, kas nav saistīti ar relāciju, parasti neatbalsta SQL un tiem ir ierobežotas izpildes iespējas. Piemēram, failu sistēma nevar izmantot predikātus vai apkopojumus. Savukārt MongoDB var pielietot predikātus un agregācijas, taču neatbalsta visus savienojumus. Dremio optimizētājs izprot katra datu avota iespējas. Kad tas ir visefektīvākais, Dremio virzīs pēc iespējas vairāk vaicājuma uz pamata avotu un pārējo veiks savā izplatītajā izpildes dzinējā.

Operatīvo datu bāzu izkraušana

Lielākā daļa operatīvo datu bāzu ir paredzētas rakstīšanai optimizētām slodzēm. Turklāt šīm izvietojumiem ir jārisina stingras SLA, jo jebkura dīkstāves vai pasliktināta veiktspēja var būtiski ietekmēt biznesu. Rezultātā operatīvās sistēmas bieži tiek izolētas no analītisko vaicājumu apstrādes. Šādos gadījumos Dremio var izpildīt analītiskos vaicājumus, izmantojot Data Reflections, kas nodrošina visefektīvāko iespējamo vaicājumu apstrādi, vienlaikus samazinot ietekmi uz operētājsistēmu. Datu refleksijas tiek periodiski atjauninātas, pamatojoties uz politikām, kuras var konfigurēt tabulā pēc tabulas.

Vaicājumu izpildes fāzes

Vaicājuma ilgums ietver šādas fāzes:

  1. Klients iesniedz vaicājumu koordinatoram, izmantojot ODBC / JDBC / REST
  2. Plānošana
    1. Koordinators parsē vaicājumu Dremio universālajā relāciju modelī
    2. Koordinators ņem vērā pieejamo statistiku par datu avotiem, lai izstrādātu vaicājumu plānu, kā arī avota funkcionālās spējas
  3. Koordinators pārraksta izmantojamo vaicājuma plānu
    1. pieejamās Datu refleksijas, ņemot vērā Datu refleksiju pasūtīšanu, sadalīšanu un izplatīšanu un
    2. datu avota pieejamās iespējas
  4. Izpilde
  1. Izpildītāji paralēli nolasa datus bultiņu buferos no avotiem
    1. Izpildītāji izpilda pārrakstīto vaicājumu plānu.
    2. Viens izpildītājs apvieno viena vai vairāku izpildītāju rezultātus un straumē gala rezultātus koordinatoram
  1. Rezultātus klients saņem no koordinatora

Ņemiet vērā, ka dati var būt iegūti no datu atspoguļojumiem vai pamatā esošajiem datu avotiem. Lasot no datu avota, izpildītājs iesniedz vietējos vaicājumus (piemēram, MongoDB MQL, Elasticsearch Query DSL, Microsoft Transact-SQL), ko plānošanas posmā noteicis optimizētājs.

Visas datu operācijas tiek veiktas izpildītāja mezglā, ļaujot sistēmai mērogot daudzus vienlaikus klientus, izmantojot tikai dažus koordinatora mezglus.

Nospiešanas piemērs vaicājumam

Lai ilustrētu, kā Data Fabric iekļaujas jūsu datu arhitektūrā, apskatīsim SQL vaicājuma palaišanu avotā, kas neatbalsta SQL.

Viens no populārākajiem mūsdienu datu avotiem ir Elasticsearch. Elasticsearch ir ļoti patīk, taču analītikas ziņā tas neatbalsta SQL (ieskaitot SQL pievienošanos). Tas nozīmē, ka tādus rīkus kā Tableau un Excel nevar izmantot, lai analizētu datus no lietojumprogrammām, kas izveidotas šajā datu krātuvē. Ir vizualizācijas projekts ar nosaukumu Kibana, kas ir populārs vietnē Elasticsearch, bet Kibana ir paredzēts izstrādātājiem. Tas nav īsti paredzēts biznesa lietotājiem.

Dremio ļauj ērti analizēt datus Elasticsearch ar jebkuru SQL balstītu rīku, ieskaitot Tableau. Piemēram, pieņemsim šādu SQL vaicājumu Yelp biznesa datiem, kas tiek glabāti JSON:

ATLASIET štatu, pilsētu, nosaukumu, atsauksmju skaitu

NO elastīga.palīdzība. Bizness

KUR

stāvoklis NAV IN (‘TX’, ’UT’, ’NM’, ’NJ’) UN

pārskata_skaits> 100

PASŪTĪT BY review_count DESC, štats, pilsēta

10. LIMITS

Dremio apkopo vaicājumu izteiksmē, kuru Elasticsearch var apstrādāt:

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