Programavimas

Suaktyvinkite didelių duomenų apdorojimą naudodami „Apache Ignite“

„Apache Ignite“ yra atmintyje esanti skaičiavimo platforma, kurią galima sklandžiai įterpti tarp vartotojo programų sluoksnio ir duomenų sluoksnio. „Apache Ignite“ įkelia duomenis iš esamo diske saugomo sluoksnio į RAM, pagerindama našumą net šešiais laipsniais (milijoną kartų).

Duomenų talpą atmintyje galima lengvai keisti, kad būtų galima tvarkyti petabaitus duomenų, paprasčiausiai pridedant daugiau mazgų į grupę. Be to, palaikomos ir ACID operacijos, ir SQL užklausos. „Ignite“ teikia našumą, mastą ir visapusiškas galimybes, viršijančias tradicines atmintyje esančias duomenų bazes, atminties duomenų tinklelius ir kitus atmintyje esančius taškų sprendimus.

„Apache Ignite“ nereikalauja, kad vartotojai plėštų ir pakeistų esamas duomenų bazes. Jis veikia su RDBMS, NoSQL ir Hadoop duomenų saugyklomis. „Apache Ignite“ įgalina didelio našumo operacijas, srautą realiuoju laiku ir greitą analizę viename visapusiškame duomenų prieigos ir apdorojimo sluoksnyje. Jis naudoja paskirstytą, masiškai lygiagrečią architektūrą prieinamoje prekių aparatinėje įrangoje, kad valdytų esamas ar naujas programas. „Apache Ignite“ gali veikti patalpose, debesų platformose, tokiose kaip AWS ir „Microsoft Azure“, arba hibridinėje aplinkoje.

„Apache Ignite“ vieninga API palaiko SQL, C ++, .Net, Java, Scala, Groovy, PHP ir Node.js. Vieninga API sujungia debesies masto programas su daugeliu duomenų saugyklų, kuriose yra struktūrizuoti, pusiau struktūruoti ir nestruktūruoti duomenys. Tai siūlo didelio našumo duomenų aplinką, kuri leidžia įmonėms apdoroti visas ACID operacijas ir generuoti vertingas įžvalgas iš realaus laiko, interaktyvių ir paketinių užklausų.

Vartotojai gali išlaikyti esamą RDBMS ir įdiegti „Apache Ignite“ kaip sluoksnį tarp jo ir programos sluoksnio. „Apache Ignite“ automatiškai integruojasi su „Oracle“, „MySQL“, „Postgres“, DB2, „Microsoft SQL Server“ ir kitomis RDBMS. Sistema automatiškai sukuria programos domeno modelį pagal pagrindinės duomenų bazės schemos apibrėžimą, tada įkelia duomenis. Atminties duomenų bazės paprastai teikia tik SQL sąsają, o „Ignite“ palaiko platesnę prieigos ir apdorojimo paradigmų grupę, be ANSI SQL. „Apache Ignite“ palaiko raktų / reikšmių saugyklas, SQL prieigą, „MapReduce“, HPC / MPP apdorojimą, srautinį / CEP apdorojimą, grupavimą ir „Hadoop“ pagreitį vienoje integruotoje atminties kompiuterio platformoje.

„GridGain Systems“ padovanojo originalų „Apache Ignite“ kodą „Apache“ programinės įrangos fondui 2014 m. Antroje pusėje. „Apache Ignite“ 2015 m. Buvo greitai perkelta iš inkubacinio projekto į aukščiausio lygio „Apache“ projektą. 2016 m. Antrąjį ketvirtį „Apache Ignite“ buvo atsisiųsta beveik 200 000 kartų. Jį naudoja organizacijos visame pasaulyje.

Architektūra

„Apache Ignite“ yra JVM pagrindu sukurta paskirstyta tarpinė programinė įranga, pagrįsta homogenišku klasterio topologijos įgyvendinimu, kuriam nereikia atskirų serverio ir kliento mazgų. Visi „Ignite“ sankaupos mazgai yra vienodi ir jie gali atlikti bet kokį loginį vaidmenį vykdymo metu.

Paslaugų teikėjo sąsajos (SPI) dizainas yra „Apache Ignite“ pagrindas. SPI pagrindu kiekvienas „Ignite“ vidinis komponentas yra visiškai pritaikomas ir prijungiamas. Tai leidžia nepaprastai sukonfigūruoti sistemą ir pritaikyti ją bet kuriai ar būsimai serverio infrastruktūrai.

„Apache Ignite“ taip pat teikia tiesioginę paramą paskirstytų skaičiavimų lygiagretumui, pagrįstam šakės sujungimo, „MapReduce“ ar MPP stiliaus apdorojimu. „Ignite“ plačiai naudoja platinamus lygiagrečius skaičiavimus ir jie yra visiškai veikiami API lygiu, kad būtų galima nustatyti vartotojo nustatytą funkcionalumą.

Pagrindiniai bruožai

Duomenų tinklelis atmintyje. „Apache Ignite“ apima atminties duomenų tinklelį, kuris tvarko paskirstytą atminties duomenų valdymą, įskaitant ACID operacijas, perjungimą, išplėstinį apkrovos balansavimą ir platų SQL palaikymą. „Ignite“ duomenų tinklelis yra paskirstytoji, objektu pagrįsta, ACID operacinė, atmintyje esanti raktų reikšmių saugykla. Priešingai nei tradicinėse duomenų bazių valdymo sistemose, kuriose pagrindinis diskų panaudojimo būdas yra diskas, „Ignite“ saugo duomenis atmintyje. Naudodama atmintį, o ne diską, „Apache Ignite“ yra iki 1 milijono kartų greitesnė nei tradicinės duomenų bazės.

SQL palaikymas. „Apache Ignite“ palaiko laisvos formos ANSI SQL-99 suderinamas užklausas praktiškai be jokių apribojimų. „Ignite“ gali naudoti bet kokią SQL funkciją, kaupimą ar grupavimą, be to, ji palaiko paskirstytus, nesuderintus SQL sujungimus ir kryžminius talpyklos sujungimus. „Ignite“ taip pat palaiko lauko užklausų sąvoką, kad būtų sumažinta tinklo ir nuoseklių pridėtinių išlaidų.

Atminties skaičiavimo tinklelis. „Apache Ignite“ yra skaičiavimo tinklelis, leidžiantis lygiagrečiai, atmintyje apdoroti daug procesoriaus reikalaujančias ar kitas daug išteklių reikalaujančias užduotis, tokias kaip tradicinis HPC, MPP, šakės sujungimas ir „MapReduce“ apdorojimas. Palaikymas taip pat teikiamas standartiniam „Java ExecutorService“ asinchroniniam apdorojimui.

Atminties paslaugų tinklelis. „Apache Ignite“ paslaugų tinklelis suteikia visišką klasteryje įdiegtų paslaugų valdymą. Vartotojai gali kontroliuoti, kiek paslaugų egzempliorių turėtų būti įdiegta kiekviename sankaupos mazge, užtikrinant tinkamą diegimą ir gedimų toleranciją. Paslaugų tinklas užtikrina nenutrūkstamą visų diegiamų paslaugų prieinamumą mazgų gedimų atveju. Jis taip pat palaiko automatinį kelių paslaugų, paslaugų kaip pavienio atvejo ir paslaugų diegimą mazgų paleidimo metu.

Perdavimas atmintyje. Srauto apdorojimas atmintyje skirtas didelei programų grupei, kuriai tradiciniai apdorojimo metodai ir diske saugoma laikmena, pvz., Diskų duomenų bazės ar failų sistemos, yra nepakankami. Šios programos praplečia tradicinių duomenų apdorojimo infrastruktūrų ribas.

Srautinio perdavimo palaikymas leidžia vartotojams pateikti užklausas apie gaunamų duomenų langus. Tai leidžia vartotojams atsakyti į tokius klausimus kaip „Kokie yra 10 populiariausių produktų per pastarąją valandą?“ arba „Kokia vidutinė tam tikrų produktų kategorijos kaina per pastarąsias 12 valandų?“

Kitas įprastas srauto apdorojimo naudojimo atvejis yra paskirstyto įvykio darbo eigos parengimas. Kadangi įvykiai į sistemą patenka dideliu greičiu, įvykių apdorojimas yra padalintas į kelis etapus, iš kurių kiekvienas turi būti tinkamai nukreiptas į klasterį apdoroti. Šios pritaikomos įvykių darbo eigos palaiko sudėtingas įvykių apdorojimo (CEP) programas.

„Hadoop“ pagreitis atmintyje. „Apache Ignite Accelerator for Hadoop“ leidžia greitai apdoroti duomenis esamoje „Hadoop“ aplinkoje naudojant organizacijos jau naudojamus įrankius ir technologijas.

Uždekite atmintyje „Hadoop“ pagreitis pagrįstas pirmąja dvigubo režimo, didelio našumo atminties failų sistema, kuri 100 proc. Suderinama su „Hadoop HDFS“, ir atmintyje optimizuotą „MapReduce“ diegimą. Pateikdami iki 100 kartų greitesnį našumą, atmintyje esantys HDFS ir atmintyje esantys „MapReduce“ suteikia lengvai naudojamus disko HDFS ir tradicinių „MapReduce“ plėtinius. Šiai „plug-and-play“ funkcijai reikia minimalios integracijos. Jis veikia su bet kuria atvirojo kodo ar komercine „Hadoop 1.x“ arba „Hadoop 2.x“ versija, įskaitant „Cloudera“, „Hortonworks“, „MapR“, „Apache“, „Intel“ ir AWS. Rezultatas - iki 100 kartų greitesnis MapReduce ir Hive darbų našumas.

Paskirstyta atminties failų sistema. Unikali „Apache Ignite“ funkcija yra „Ignite File System“ (IGFS), kuri yra failų sistemos sąsaja atminties duomenims. IGFS teikia panašias funkcijas kaip „Hadoop HDFS“. Tai apima galimybę sukurti visiškai veikiančią failų sistemą atmintyje. IGFS yra „Apache Ignite In-Memory Accelerator for Hadoop“ pagrindas.

Kiekvieno failo duomenys yra padalijami į atskirus duomenų blokus ir saugomi talpykloje. Kiekvieno failo duomenis galima pasiekti naudojant standartinę „Java“ srautinio perdavimo API. Kiekvienai failo daliai kūrėjas gali apskaičiuoti giminingumą ir apdoroti failo turinį atitinkamuose mazguose, kad būtų išvengta nereikalingo tinklo.

Unified API. „Apache Ignite“ suvienodinta API palaiko įvairius įprastus programų sluoksnio protokolus, kad būtų galima pasiekti duomenis. Palaikomi protokolai apima SQL, Java, C ++, .Net, PHP, MapReduce, Scala, Groovy ir Node.js. „Ignite“ palaiko kelis klientų prisijungimo prie „Ignite“ grupių protokolus, įskaitant „Ignite“ vietinius klientus, REST / HTTP, SSL / TLS ir „Memcached.SQL“.

Pažangus grupavimas. „Apache Ignite“ teikia vieną iš moderniausių JVM grupavimo technologijų. Uždegę mazgai gali automatiškai atrasti vienas kitą, o tai prireikus padeda išplėsti sankaupą, nereikia iš naujo paleisti viso klasterio. Kūrėjai taip pat gali pasinaudoti „Ignite“ hibridinių debesų palaikymu, kuris leidžia vartotojams užmegzti ryšius tarp privačių debesų ir viešų debesų, tokių kaip AWS ar „Microsoft Azure“.

Papildomos funkcijos. „Apache Ignite“ teikia didelio našumo, visos grupės pranešimų siuntimo funkciją. Tai leidžia vartotojams keistis duomenimis per paskelbimo-prenumeratos ir tiesioginio taško į tašką komunikacijos modelius.

„Ignite“ paskirstytų įvykių funkcionalumas leidžia programoms gauti pranešimus apie talpyklos įvykius, vykstančius paskirstytoje tinklo aplinkoje. Kūrėjai gali naudoti šią funkciją norėdami būti informuoti apie nuotolinių užduočių vykdymą ar bet kokius talpyklos duomenų pakeitimus klasteryje. Pranešimai apie įvykius gali būti grupuojami ir siunčiami paketais ir laiku. Paketiniai pranešimai padeda pasiekti aukštą talpyklos našumą ir mažą vėlavimą.

„Ignite“ leidžia daugumą duomenų struktūrų iš „java.util.concurrent“ sistemos naudoti paskirstytu būdu. Pvz., Galite pridėti prie dvipusio eilės (java.util.concurrent.BlockingDeque) viename mazge ir apklausti jį iš kito mazgo. Arba galite turėti paskirstytą pirminio rakto generatorių, kuris garantuotų unikalumą visuose mazguose.

„Ignite“ paskirstytose duomenų struktūrose yra šių standartinių „Java“ API palaikymas: lygiagretusis žemėlapis, paskirstytos eilės ir rinkiniai, „AtomicLong“, „AtomicSequence“, „AtomicReference“ ir „CountDownLatch“.

Pagrindinės integracijos

„Apache Spark“. „Apache Spark“ yra greitas, bendros paskirties variklis, skirtas didelio masto duomenims apdoroti. „Ignite“ ir „Spark“ yra papildomi atminties kompiuterijos sprendimai. Jie gali būti naudojami kartu daugeliu atvejų, norint pasiekti geresnį našumą ir funkcionalumą.

„Apache Spark“ ir „Apache Ignite“ naudoja skirtingus naudojimo atvejus ir retai varžosi dėl tos pačios užduoties. Žemiau esančioje lentelėje pateikiami keli pagrindiniai skirtumai.

 
 „Apache Spark“Apache Ignite
Duomenų saugojimasDuomenis apdoroti įkelia iš išorinės atminties, paprastai pagrįstos disku, ir atmeta duomenis, kai apdorojimas yra baigtas. Nėra duomenų saugyklos.Pateikia paskirstytą atminties raktų vertės saugyklą (paskirstytą talpyklą arba duomenų tinklelį) su ACID operacijomis ir SQL užklausų teikimo galimybėmis. Išlaiko duomenis atmintyje ir gali rašyti į pagrindinę duomenų bazę.
OLAP / OLTPNetransakciniams, tik skaitomiems duomenims, todėl jie naudojami OLAP. Kibirkščių atsparūs paskirstyti duomenų rinkiniai (RDD) nepalaiko mutacijos vietoje.Palaiko netransakcines (OLAP) naudingas apkrovas, taip pat visiškai su ACID suderinamas operacijas (OLTP).
Duomenų tipaiRemiantis RDD. Veikia tik su duomenimis pagrįstomis naudingomis apkrovomis.Visiškai palaiko grynas skaičiavimo naudingąsias apkrovas (HPC / MPP), kurios gali būti „be duomenų“.

„Apache Spark“ neteikia bendros saugyklos vietos, todėl duomenys iš HDFS ar kitos disko saugyklos turi būti įkelti į „Spark“, kad juos būtų galima apdoroti. Būsena gali būti perkelta iš „Spark“ darbo į darbą tik išsaugant apdorotus duomenis atgal į išorinę saugyklą. „Ignite“ gali bendrai naudoti „Spark“ būseną tiesiogiai atmintyje, nesaugant būsenos į diską.

Viena pagrindinių „Ignite“ ir „Spark“ integracijų yra „Apache Ignite Shared RDD“ API. „Ignite RDD“ iš esmės yra „Ignite“ talpyklos, kurias galima naudoti tiesiai vykdant „Spark“ užduotis. „Ignite“ RDD taip pat gali būti naudojami su laikinosios atminties šablonu, kai „Ignite“ grupės yra išdėstytos atskirai nuo „Spark“, bet vis tiek atmintyje. Duomenys vis dar pasiekiami naudojant „Spark RDD“ API.

„Spark“ palaiko gana turtingą SQL sintaksę, tačiau nepalaiko duomenų indeksavimo, todėl visą laiką turi atlikti pilną nuskaitymą. Kibirkšties užklausos gali užtrukti keletą minučių net ir vidutiniškai mažuose duomenų rinkiniuose. „Ignite“ palaiko SQL indeksus, todėl užklausos būna daug greitesnės, todėl naudojant „Spark“ su „Ignite“, „Spark SQL“ gali paspartėti daugiau nei 1 000 kartų. Rezultatų rinkinys, kurį grąžino „Ignite Shared RDD“, taip pat atitinka „Spark Dataframe“ API, todėl jį galima toliau analizuoti naudojant standartinius „Spark“ duomenų rėmus. Tiek „Spark“, tiek „Ignite“ natūraliai integruojasi į „Apache YARN“ ir „Apache Mesos“, todėl juos lengviau naudoti kartu.

Dirbant su failais, o ne su RDD, vis tiek galima dalytis būsena tarp „Spark“ užduočių ir programų naudojant „Ignite In-Memory File System“ (IGFS). IGFS įdiegia „Hadoop FileSystem“ API ir gali būti įdiegta kaip vietinė „Hadoop“ failų sistema, lygiai taip pat, kaip ir HDFS. Uždekite kištukus bet kurioje „Hadoop“ ar „Spark“ aplinkoje. IGFS gali būti naudojamas be jokio „plug-and-play“ kodo pakeitimo.

Apache Cassandra. „Apache Cassandra“ gali būti naudojamas kaip efektyvus sprendimas struktūrinėms užklausoms. Tačiau „Cassandra“ duomenys turėtų būti sumodeliuoti taip, kad kiekviena iš anksto nustatyta užklausa gautų vieną eilę. Taigi, prieš modeliuodami duomenis, turite žinoti, kokių užklausų reikės.

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