Udalosti riadené dáta s Apache Druid

1. Úvod

V tomto tutoriáli pochopíme, ako pracovať s údajmi o udalostiach a Apache Druid. Budeme sa venovať základom údajov o udalostiach a architektúre Druid. V rámci toho vytvoríme jednoduchý dátový kanál využívajúci rôzne funkcie Druidu, ktorý pokrýva rôzne režimy prijímania údajov a rôzne spôsoby dotazovania pripravených údajov.

2. Základné pojmy

Predtým, ako sa ponoríme do podrobností o prevádzke Apache Druid, najskôr si prejdime niektoré základné koncepty. Priestor, ktorý nás zaujíma, je rozsiahla analýza udalostí v reálnom čase.

Preto je nevyhnutné pochopiť, čo máme na mysli pod dátami udalostí a čo vyžaduje ich analýza v reálnom čase v mierke.

2.1. Čo sú údaje udalostí?

Údaje udalosti sa týkajú informácia o zmene, ku ktorej dôjde v konkrétnom časovom okamihu. Údaje o udalostiach sú v dnešných aplikáciách takmer všadeprítomné. Od klasických protokolov aplikácií až po moderné senzory generované vecami - je to prakticky všade. Často sú charakterizované strojovo čitateľnými informáciami generovanými v masívnom meradle.

Poskytujú napájanie z niekoľkých funkcií, ako je predikcia, automatizácia, komunikácia a integrácia. Ďalej majú význam v architektúre riadenej udalosťami.

2.2. Čo je Apache Druid?

Apache Druid je analytická databáza v reálnom čase určená na rýchlu analýzu údajov orientovaných na udalosti. Spoločnosť Druid bola založená v roku 2011, s otvoreným zdrojom pod licenciou GPL v roku 2012 a k licencii Apache License prešla v roku 2015. Spravuje ju nadácia Apache Foundation s prispením komunity od niekoľkých organizácií. Poskytuje príjem v reálnom čase, rýchly výkon dotazov a vysokú dostupnosť.

Názov Druid odkazuje na skutočnosť, že jeho architektúra sa môže posunúť pri riešení rôznych typov problémov s údajmi. Často sa využíva v aplikáciách business intelligence na analýzu veľkého množstva historických a historických údajov v reálnom čase.

3. Druidová architektúra

Druid je stĺpcovo orientovaný a distribuovaný zdroj údajov napísaný v Jave. Je schopný prijať veľké množstvo údajov o udalostiach a okrem týchto údajov ponúka aj dotazy s nízkou latenciou. Okrem toho ponúka možnosť ľubovoľného rozdelenia a rozdelenia údajov.

Je celkom zaujímavé pochopiť, ako architektúra Druid podporuje tieto funkcie. V tejto časti si prejdeme niektoré dôležité časti Druidovej architektúry.

3.1. Dizajn ukladania dát

Je dôležité pochopiť, ako Druid štruktúruje a ukladá svoje údaje, čo umožňuje rozdelenie a distribúciu. Druid pri spracovaní predvolene rozdelí údaje na segmenty a uloží ich do častí a segmenty:

Druid ukladá údaje do toho, čo poznáme ako „zdroj údajov“, čo je logicky podobné tabuľkám v relačných databázach. Klaster Druid dokáže súčasne spracovať viac zdrojov údajov, ktoré sú prijímané z rôznych zdrojov.

Každý zdroj údajov je rozdelený na oddiely - predvolene podľa času a podľa ďalších atribútov, ak je tak nakonfigurované. A časový rozsah údajov je známy ako „blok“ - napríklad hodinové údaje, ak sú údaje rozdelené podľa hodín.

Každý blok je ďalej rozdelený na jeden alebo viac „segmentov“, čo sú jednotlivé súbory pozostávajúce z mnohých riadkov údajov. Zdroj údajov môže mať kdekoľvek od niekoľkých segmentov po milióny segmentov.

3.2. Druidové procesy

Druid má multi-procesná a distribuovaná architektúra. Preto je možné každý proces škálovať nezávisle, čo nám umožňuje vytvárať flexibilné klastre. Poďme pochopiť dôležité procesy, ktoré sú súčasťou Druidu:

  • Koordinátor: Tento proces je zodpovedný hlavne za správu a distribúciu segmentov a komunikuje s historickými procesmi na načítanie alebo zrušenie segmentov na základe konfigurácií
  • Vládca: Toto je hlavný proces, ktorý je zodpovedný za prijímanie úloh, koordináciu distribúcie úloh, vytváranie zámkov okolo úloh a vrátenie stavu volajúcim
  • Sprostredkovateľ: Toto je proces, do ktorého sa odosielajú všetky dotazy, ktoré sa majú vykonať v distribuovanom klastri; zhromažďuje metadáta od Zookeeperu a smeruje dotazy k procesom, ktoré majú správne segmenty
  • Router: Toto je voliteľný proces, ktorý možno použiť na smerovanie dotazov do rôznych procesov sprostredkovateľa, čím sa zabezpečí izolácia dotazov na dotazy na dôležitejšie údaje.
  • Historické: Toto sú procesy, ktoré uchovávajú dopytovateľné údaje; udržiavajú neustále spojenie so Zookeeperom a sledujú informácie o segmentoch, ktoré musia načítať a obsluhovať
  • MiddleManager: Toto sú pracovné procesy, ktoré vykonávajú zadané úlohy; preposielajú úlohy Peónom bežiacim v samostatných JVM, čím poskytujú izoláciu zdrojov a protokolov

3.3. Externé závislosti

Okrem základných procesov, Druid závisí od niekoľkých externých závislostí jeho klastra, aby fungoval podľa očakávania.

Pozrime sa, ako vzniká klaster Druid spolu s hlavnými procesmi a vonkajšími závislosťami:

Druidové použitia hlboké úložisko na uloženie všetkých údajov, ktoré boli prijaté do systému. Nepoužívajú sa na odpovedanie na dotazy, ale slúžia ako záloha údajov a na prenos údajov medzi procesmi. Môže to byť čokoľvek, od lokálneho súborového systému po úložisko distribuovaných objektov, ako sú S3 a HDFS.

The úložisko metadát sa používa na uchovávanie zdieľaných systémových metadát napríklad informácie o použití segmentu a informácie o úlohe. Nikdy sa však nepoužíva na ukladanie skutočných údajov. Je to relačná databáza ako Apache Derby, PostgreSQL alebo MySQL.

Užívanie druhov Apache Zookeeper pre správu aktuálneho stavu klastra. Uľahčuje množstvo operácií v klastri Druidov, ako sú voľby koordinátora / vrchného vodcu, protokol publikovania segmentov a protokol načítania / vypúšťania segmentov.

4. Druid Setup

Druid je navrhnutý tak, aby bol nasadený ako škálovateľný cluster odolný voči chybám. Avšak zriadenie klastra Druid na vysokej úrovni výroby nie je triviálne. Ako sme už videli skôr, na nastavenie a konfiguráciu existuje veľa procesov a externých závislostí. Pretože je možné vytvoriť klaster flexibilným spôsobom, musíme venovať pozornosť našim požiadavkám na správne nastavenie jednotlivých procesov.

Tiež Druid je podporovaná iba v prostrediach podobných systému Unix, a nie v systéme Windows. Na spustenie procesov Druid je navyše nutná Java 8 alebo novšia. Existuje niekoľko konfigurácií pre jeden server, ktoré umožňujú nastavenie Druid na jednom stroji na vykonávanie tutoriálov a príkladov. Na spustenie produkčného pracovného zaťaženia sa však odporúča nastaviť plnohodnotný klaster Druid s viacerými strojmi.

Na účely tohto tutoriálu budeme postavil Druida na jednom stroji pomocou oficiálneho obrazu Dockeru zverejnené na Docker Hub. To nám umožňuje spúšťať Druid aj vo Windows, čo, ako sme už diskutovali, nie je inak podporované. K dispozícii je Dockerov komponovaný súbor, ktorý vytvára kontajner pre každý proces Druid a jeho externé závislosti.

Musíme poskytnúť konfiguračné hodnoty spoločnosti Druid ako premenné prostredia. Najjednoduchší spôsob, ako to dosiahnuť, je poskytnúť súbor s názvom „prostredie“ v rovnakom adresári ako súbor na zostavenie Docker.

Akonáhle máme zostavený Docker a súbor prostredia, spustenie Druidu je také jednoduché ako spustenie príkazu v rovnakom adresári:

ukotviť-zložiť

To vyvolá všetky kontajnery potrebné pre nastavenie Druid na jednom stroji. Musíme byť opatrní, aby sme stroju Docker poskytli dostatok pamäte, pretože Druid spotrebúva značné množstvo zdrojov.

5. Prijímanie údajov

Prvým krokom k vybudovaniu dátového toku pomocou Druidu je načítanie údajov do Druidu. Toto proces sa v architektúre Druid označuje ako príjem dát alebo indexácia. Aby sme mohli pokračovať v tomto výučbe, musíme nájsť vhodný súbor údajov.

Teraz, ako sme sa doteraz zhromaždili, musíme zbierať údaje, ktoré sú udalosťami a majú určitú časovú povahu, aby ste čo najlepšie využili druidskú infraštruktúru.

Oficiálny sprievodca pre Druid používa jednoduché a elegantné údaje obsahujúce úpravy stránok Wikipédie pre konkrétny dátum. To budeme ďalej používať pre náš tutoriál tu.

5.1. Dátový model

Začnime skúmaním štruktúry údajov, ktoré máme so sebou. Väčšina dátového potrubia, ktoré vytvoríme, je dosť citlivá na anomálie údajov, a preto je potrebné údaje čo najviac vyčistiť.

Aj keď existujú sofistikované spôsoby a nástroje na vykonávanie analýzy údajov, začneme vizuálnou kontrolou. Odhalí to rýchla analýza vstupné údaje majú udalosti zachytené vo formáte JSON s jednou udalosťou obsahujúcou typické atribúty:

{"time": "2015-09-12T02: 10: 26.679Z", "channel": "# pt.wikipedia", "cityName": null, "comment": "Houveram problemas na última edição e tive de refazê- las, junto com as atualizações da página. "," countryIsoCode ":" BR "," countryName ":" Brazil "," isAnonymous ": true," isMinor ": false," isNew ": false," isRobot ": false , "isUnpatrolled": true, "metroCode": null, "namespace": "Main", "page": "Catarina Muniz", "regionIsoCode": null, "regionName": null, "user": "181.213.37.148 "," delta ": 197," pridané ": 197," odstránené ": 0}

Aj keď túto udalosť definuje veľké množstvo atribútov, existuje niekoľko z nich, ktoré nás pri práci s Druidom obzvlášť zaujímajú:

  • Časová značka
  • Rozmery
  • Metriky

Druid vyžaduje konkrétny atribút, ktorý sa má identifikovať ako stĺpec časovej pečiatky. Vo väčšine situácií je analyzátor údajov spoločnosti Druid schopný automaticky zistiť najlepšieho kandidáta. Vždy však máme na výber, najmä ak v našich údajoch nemáme vhodný atribút.

Dimenzie sú atribúty, ktoré Druid ukladá také, aké sú. Môžeme ich použiť na akýkoľvek účel, ako je zoskupovanie, filtrovanie alebo použitie agregátorov. Máme na výber vybrať dimenzie v špecifikácii príjmu, o ktorých si ďalej povieme v tutoriále.

Metriky sú atribúty, ktoré sa na rozdiel od dimenzií ukladajú v agregovanej podobe predvolene. Môžeme zvoliť agregačnú funkciu, ktorú bude Druid aplikovať na tieto atribúty počas prijímania. Spolu s povoleným súhrnom môžu viesť k kompaktným dátovým reprezentáciám.

5.2. Metódy požitia

Teraz budeme diskutovať o rôznych spôsoboch, ako môžeme vykonať príjem údajov v Druide. Údaje založené na udalostiach zvyčajne prúdia v prírode, čo znamená, že sa časom generujú rôznym tempom, napríklad úpravy na Wikipédii.

Možno však budeme mať dáta dávkované po určitú dobu, aby sme prešli, kde sú dáta statickejšej povahy, ako všetky úpravy na Wikipédii, ktoré sa stali minulý rok.

Môžeme tiež vyriešiť rôzne prípady použitia údajov a Druid má pre väčšinu z nich fantastickú podporu. Poďme na dva z najbežnejších spôsobov použitia Druidu v dátovom potrubí:

  • Streamovanie príjmu
  • Dávkové požitie

The najbežnejším spôsobom, ako prijímať údaje v aplikácii Druid, je služba Apache Streaming, kde Druid môže čítať údaje priamo od Kafku. Druid podporuje aj ďalšie platformy, ako napríklad Kinesis. Musíme začať supervízorov nad procesom Preťaženie, ktorý vytvára a spravuje indexovacie úlohy Kafka. Môžeme spustiť supervízora zadaním supervíznej špecifikácie ako súboru JSON cez príkaz HTTP POST procesu preťaženia.

Prípadne môžeme hromadné prijímanie údajov - napríklad z lokálneho alebo vzdialeného súboru. Ponúka výber pre dávkové prijímanie založené na Hadoop na prijímanie údajov zo súborového systému Hadoop vo formáte súboru Hadoop. Častejšie si môžeme zvoliť natívne dávkové požitie buď sekvenčne, alebo paralelne. Je to pohodlnejší a jednoduchší prístup, pretože nemá žiadne externé závislosti.

5.3. Definovanie špecifikácie úlohy

Pre tento tutoriál budeme nastaviť pre vstupné údaje úlohu natívneho dávkového príjmu máme. Máme možnosť konfigurovať úlohu z konzoly Druid, čo nám poskytuje intuitívne grafické rozhranie. Striedavo my môže definovať špecifikáciu úlohy ako súbor JSON a odoslať ju nadradenému procesu pomocou skriptu alebo príkazového riadku.

Poďme si najskôr definovať jednoduchú špecifikáciu úlohy pre príjem našich údajov v súbore s názvom wikipedia-index.json:

{"type": "index_parallel", "spec": {"dataSchema": {"dataSource": "wikipedia", "DimensionsSpec": {"Dimensions": ["channel", "cityName", "comment", " countryIsoCode "," countryName "," isAnonymous "," isMinor "," isNew "," isRobot "," isUnpatrolled "," metroCode "," namespace "," page "," regionIsoCode "," regionName "," user " , {"name": "added", "type": "long"}, {"name": "deleted", "type": "long"}, {"name": "delta", "type": "long"}]}, "timestampSpec": {"stĺpec": "time", "format": "iso"}, "metricsSpec": [], "granularitySpec": {"type": "uniform", " segmentGranularity ":" day "," queryGranularity ":" none "," intervaly ": [" 2015-09-12 / 2015-09-13 "]," rollup ": false}}," ioConfig ": {" typ ":" index_parallel "," inputSource ": {" type ":" local "," baseDir ":" quickstart / tutorial / "," filter ":" wikiticker-2015-09-12-sampled.json.gz "} , "inputFormat": {"type": "json"}, "appendToExisting": false}, "tuningConfig": {"type": "index_parallel", "maxRowsPerSegment": 5000000, "maxRo wsInMemory ": 25000}}}

Poďme pochopiť túto špecifikáciu úlohy so zreteľom na základy, ktoré sme si prešli v predchádzajúcich podkapitolách:

  • Vybrali sme si index_parallel úloha, ktorá nám poskytuje paralelné natívne dávkové prijímanie
  • Zdroj údajov, ktorý použijeme v tejto úlohe, má názov „wikipedia “
  • Časová pečiatka našich údajov pochádza z atribútu „čas“
  • Ako dimenzie pridávame niekoľko atribútov údajov
  • V aktuálnej úlohe nepoužívame pre svoje údaje žiadne metriky
  • Zhrnutie, ktoré je predvolene povolené, by malo byť pre túto úlohu zakázané
  • Vstupným zdrojom pre úlohu je lokálny súbor s názvom wikiticker-2015-09-12-sampled.json.gz
  • Nepoužívame žiadny sekundárny oddiel, ktorý môžeme definovať v tuningConfig

Táto úloha špec predpokladá, že sme stiahli dátový súborwikiticker-2015-09-12-sampled.json.gz a uchoval to na miestnom stroji, kde beží Druid. To môže byť zložitejšie, keď prevádzkujeme Druid ako kontajner Dockera. Našťastie, Druid prichádza s týmito vzorovými údajmi, ktoré sú predvolene k dispozícii na danom mieste rýchly štart / návod.

5.4. Zadanie špecifikácie úlohy

Nakoniec môžeme túto úlohu zadať do procesu vrchnosti prostredníctvom príkazového riadku pomocou nástroja ako zvlnenie:

curl -X 'POST' -H 'Content-Type: application / json' -d @ wikipedia-index.json // localhost: 8081 / druid / indexer / v1 / task

Za normálnych okolností vyššie uvedený príkaz vráti ID úlohy ak je podanie úspešné. Stav našej úlohy príjmu môžeme overiť prostredníctvom konzoly Druid alebo vykonaním dotazov, ktoré prejdeme v nasledujúcej časti.

5.5. Pokročilé koncepcie príjmu

Druid sa najlepšie hodí, keď máme k dispozícii obrovský rozsah dát, s ktorými sa musíme vyrovnať - určite to nie je ten typ dát, ktorý sme videli v tomto tutoriále! Teraz, aby bolo možné povoliť funkcie v mierke, musí architektúra Druid poskytovať vhodné nástroje a triky.

Aj keď ich v tomto tutoriále nebudeme používať, poďme rýchlo diskutovať o súhrne a rozdelení disku.

Údaje udalostí sa môžu čoskoro zväčšiť na obrovské objemy, čo môže ovplyvniť výkon dotazov, ktorý môžeme dosiahnuť. V mnohých scenároch to tak môže byť je pre nás možné sumarizovať údaje v priebehu času. Toto je známe ako súhrn v Druidovi. Keď je povolená súhrnná ukážka, Druid sa snaží súhrnné riadky s rovnakými rozmermi a časovými pečiatkami počas prijímania. Aj keď to môže ušetriť miesto, súhrn vedie k strate presnosti dotazu, a preto ho musíme používať racionálne.

Ďalším potenciálnym spôsobom, ako dosiahnuť lepší výkon pri raste objemu dát, je distribúcia dát, a teda aj pracovná záťaž. Štandardne Druid rozdelí údaje na základe časových značiek na časové úseky obsahujúce jeden alebo viac segmentov. Ďalej sa môžeme rozhodnúť pre sekundárne rozdelenie pomocou prírodných dimenzií na zlepšenie lokalizácie údajov. Druid navyše triedi údaje v každom segmente najskôr podľa časovej pečiatky a potom podľa ďalších dimenzií, ktoré nakonfigurujeme.

6. Dopytovanie údajov

Po úspešnom vykonaní prijímania údajov by sme mali byť pripravení na dotaz. Existuje niekoľko spôsobov, ako vyhľadávať údaje v aplikácii Druid. The najjednoduchší spôsob, ako vykonať dopyt v aplikácii Druid, je konzola Druid. Môžeme však tiež vykonávať dotazy odosielaním príkazov HTTP alebo pomocou nástroja príkazového riadku.

Dva prominentné spôsoby, ako vytvoriť dotazy v Druide, sú natívne dotazy a dotazy podobné SQL. Ideme do zostaviť niektoré základné dotazy oboma týmito spôsobmi a odoslať ich cez HTTP použitím zvlnenie. Poďme zistiť, ako môžeme vytvoriť niekoľko jednoduchých dotazov na údaje, ktoré sme predtým prijali v Druide.

6.1. Natívne dotazy

Natívne dotazy v Druide používať objekty JSON, ktoré môžeme poslať na sprostredkovanie alebo smerovač na spracovanie. Môžeme posielať dotazy prostredníctvom príkazu HTTP POST, aby sme mohli urobiť to isté.

Vytvorme súbor JSON podľa názvu simple_query_native.json:

{"queryType": "topN", "dataSource": "wikipedia", "intervaly": ["2015-09-12 / 2015-09-13"], "granularity": "all", "dimension": " page "," metric ":" count "," threshold ": 10," agregations ": [{" type ":" count "," name ":" count "}]}

Toto je jednoduchý dopyt, ktorý načíta prvých desať stránok, ktoré dosiahli najväčší počet úprav stránok medzi 12. a 13. septembrom 2019.

Pošli to cez HTTP pomocou zvlnenie:

curl -X 'POST' -H 'Content-Type: application / json' -d @ simple_query_native.json // localhost: 8888 / druid / v2? pekný

Táto odpoveď obsahuje podrobnosti o prvých desiatich stránkach vo formáte JSON:

[{"timestamp": "2015-09-12T00: 46: 58.771Z", "result": [{"count": 33, "page": "Wikipedia: Vandalismusmeldung"}, {"count": 28, " page ":" Používateľ: Cyde / Zoznam kandidátov na rýchle odstránenie / podstránka "}, {" count ": 27," page ":" Jeremy Corbyn "}, {" count ": 21," page ":" Wikipedia: Nástenka / Incidenty správcov}}, {"count": 20, "page": "Flavia Pennetta"}, {"count": 18, "page": "Total Drama Presents: The Ridonculous Race"}, {"count ": 18," page ":" User talk: Dudeperson176123 "}, {" count ": 18," page ":" Wikipédia: Le Bistro / 12. septembra 2015 "}, {" count ": 17," page ": "Wikipedia: In the news / Candidates"}, {"count": 17, "page": "Wikipedia: Žádosti o ochranu stránky"}]}]

6.2. Druid SQL

Druid má a vstavaná vrstva SQL, ktorá nám ponúka slobodu vytvárať dotazy v známych konštrukciách podobných SQL. Využíva Apache Calcite na analýzu a plánovanie dotazov. Avšak Druid SQL prevádza dotazy SQL na natívne dotazy v sprostredkovateľovi dotazov pred ich odoslaním do dátových procesov.

Pozrime sa, ako môžeme vytvoriť rovnaký dotaz ako predtým, ale s použitím Druid SQL. Rovnako ako predtým, vytvoríme súbor JSON podľa názvu simple_query_sql.json:

{"query": "SELECT page, COUNT (*) AS counts / FROM wikipedia WHERE \" __ time \ "/ BETWEEN TIMESTAMP '2015-09-12 00:00:00' A TIMESTAMP '2015-09-13 00:00 : 00 '/ SKUPINA PODĽA stránok OBJEDNÁVKA PODMIENOK Úpravy DESC LIMIT 10 "}

Upozorňujeme, že dopyt bol kvôli čitateľnosti rozdelený na viac riadkov, mal by sa však zobraziť na jednom riadku. Opäť, rovnako ako predtým, zverejníme tento dotaz cez HTTP, ale na iný koncový bod:

curl -X 'POST' -H 'Content-Type: application / json' -d @ simple_query_sql.json // localhost: 8888 / druid / v2 / sql

Výstup by mal byť veľmi podobný tomu, čo sme dosiahli skôr pri natívnom dotaze.

6.3. Typy dotazov

V predchádzajúcej časti sme videli typ dotazu, kde sme na základe intervalu načítali prvých desať výsledkov metrického „počtu“. Toto je iba jeden typ dotazu, ktorý Druid podporuje, a je známy ako TopN dopyt. Samozrejme, môžeme to urobiť jednoduchým TopN oveľa zaujímavejšie dotazy pomocou filtrov a agregácií. Ale to nie je v rozsahu tohto tutoriálu. V spoločnosti Druid však existuje niekoľko ďalších otázok, ktoré by nás mohli zaujímať.

Medzi populárne patria Timeseries a GroupBy.

Timeseries dotazy vracajú pole objektov JSON, kde každý objekt predstavuje hodnotu opísanú v dotaze časových radov - napríklad denný priemer dimenzie za posledný mesiac.

GroupBy dotazy vracajú pole objektov JSON, kde každý objekt predstavuje zoskupenie, ako je popísané v dotaze na zoskupenie. Môžeme napríklad dopytovať denný priemer dimenzie za posledný mesiac zoskupený podľa inej dimenzie.

Existuje niekoľko ďalších typov dotazov, vrátane Skenovať, Vyhľadávanie, Časová hranica, SegmentMetadataa DatasourceMetadata.

6.4. Koncepty pokročilých dotazov

Druid nejaké ponúka komplexné metódy na vytváranie sofistikovaných dotazov na vytváranie zaujímavých dátových aplikácií. Patria sem rôzne spôsoby rozdelenia a rozdelenia údajov na kocky, zatiaľ čo stále dokážu poskytnúť neuveriteľný výkon dotazu.

Aj keď ich podrobná diskusia presahuje rámec tohto tutoriálu, poďme o nich diskutovať niektoré z dôležitých, ako sú Joins and Lookups, Multitenancy a Query Caching.

Druid podporuje dva spôsoby spojenia údajov. Prvý je operátor spojenia a druhý vyhľadáva v čase dotazu. Pre lepší výkon dotazu je však vhodné vyhnúť sa spojeniu v čase dotazu.

Multitenancy sa týka funkcie podpory viacerých nájomcov na rovnakej infraštruktúre Druid a zároveň im ponúka logickú izoláciu. Je to možné v aplikácii Druid dosiahnuť pomocou samostatných zdrojov údajov na jedného nájomcu alebo rozdelenia údajov podľa nájomcu.

A nakoniec, ukladanie dotazov do pamäti je kľúčom k výkonu v dátovo náročných aplikáciách. Druid podporuje ukladanie výsledkov dotazov do medzipamäte na úrovni segmentov a úrovní výsledkov dotazov. Ďalej môžu byť dáta medzipamäte uložené v pamäti alebo v externom trvalom úložisku.

7. Jazykové väzby

Aj keď má Druid vynikajúcu podporu pre vytváranie špecifikácií príjmu a definovanie dotazov v JSON, je môže byť niekedy náročné definovať tieto dotazy v JSON, najmä keď sa dotazy stávajú zložitými. Druid, bohužiaľ, neponúka knižnicu pre klientov v žiadnom konkrétnom jazyku, ktorá by nám v tomto ohľade pomohla. Ale existujú pomerne veľa jazykových väzieb, ktoré vyvinula komunita. Jedna takáto knižnica klientov je k dispozícii aj pre Javu.

Rýchlo uvidíme, ako môžeme postaviť TopN dotaz, ktorý sme použili skôr pri použití tejto klientskej knižnice v Jave.

Začnime definovaním požadovanej závislosti v Mavene:

 in.zapr.druid druidry 2.14 

Potom by sme mali byť schopní používať klientsku knižnicu a vytvárať si naše TopN dopyt:

DateTime startTime = nový DateTime (2015, 9, 12, 0, 0, 0, DateTimeZone.UTC); DateTime endTime = nový DateTime (2015, 9, 13, 0, 0, 0, DateTimeZone.UTC); Interval interval = new Interval (startTime, endTime); Granularity granularity = new SimpleGranularity (PredefinedGranularity.ALL); Dimenzia DruidDimension = nová SimpleDimension ("stránka"); TopNMetric metrika = nová SimpleMetric ("počet"); DruidTopNQuery query = DruidTopNQuery.builder () .dataSource ("wikipedia") .dimension (dimenzia) .threshold (10) .topNMetric (metrika) .granularity (granularity) .filter (filter) .aggregators (Arrays.asList (nový LongSumAggregator ( "count", "count"))) .intervals (Collections.singletonList (interval)). build ();

Potom môžeme jednoducho vygenerovať požadovanú štruktúru JSON, ktorú môžeme použiť pri volaní HTTP POST:

ObjectMapper mapovač = nový ObjectMapper (); Reťazec requiredJson = mapper.writeValueAsString (dopyt);

8. Záver

V tomto tutoriáli sme si prešli základy údajov o udalostiach a architektúry Apache Druid.

Ďalej sme nastavili primárny klaster Druidov pomocou kontajnerov Docker na našom lokálnom počítači. Potom sme tiež prešli procesom príjmu vzorovej množiny údajov v aplikácii Druid pomocou úlohy natívnej dávky. Potom sme videli rôzne spôsoby, ako musíme zisťovať údaje v aplikácii Druid. Nakoniec sme prešli klientskou knižnicou v Jave a vytvorili sme Druidove dotazy.

Práve sme poškriabali povrch funkcií, ktoré Druid ponúka. Existuje niekoľko možností, ako nám Druid môže pomôcť pri budovaní nášho dátového toku a vytváraní dátových aplikácií. Zrejmé ďalšie kroky, ktoré je potrebné sa naučiť, sú pokročilé funkcie prijímania a dotazovania, ktoré efektívne využívajú silu Druidu.

Cieľom by navyše malo byť vytvorenie vhodného klastra Druid, ktorý upraví jednotlivé procesy podľa potreby, aby sa maximalizovali výhody.


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