Programiranje

Zaženite obdelavo velikih podatkov z Apache Ignite

Apache Ignite je računalniška platforma v pomnilniku, ki jo je mogoče nemoteno vstaviti med uporabniško aplikacijsko plast in podatkovno plastjo. Apache Ignite naloži podatke iz obstoječega diskovnega pomnilniškega sloja v RAM in tako izboljša zmogljivost za šest zaporedij (1 milijon-krat).

Kapaciteto podatkov v pomnilniku je mogoče enostavno prilagoditi tako, da obdeluje petabajte podatkov, tako da v gručo dodate več vozlišč. Nadalje so podprte tako transakcije ACID kot poizvedbe SQL. Ignite prinaša zmogljivost, obseg in obsežne zmogljivosti, ki presegajo tiste, ki jih lahko ponudijo tradicionalne podatkovne baze v pomnilniku, podatkovne mreže v pomnilniku in druge točkovne rešitve na podlagi pomnilnika.

Apache Ignite od uporabnikov ne zahteva kopiranja in zamenjave obstoječih baz podatkov. Deluje z RDBMS, NoSQL in Hadoop shrambami podatkov. Apache Ignite omogoča visoko zmogljive transakcije, pretakanje v realnem času in hitro analitiko v enem, celovitem sloju za dostop in obdelavo podatkov. Za napajanje obstoječih ali novih aplikacij uporablja porazdeljeno, množično vzporedno arhitekturo na cenovno dostopni blagovni strojni opremi. Apache Ignite lahko deluje v prostorih, na oblačnih platformah, kot sta AWS in Microsoft Azure, ali v hibridnem okolju.

Poenoteni API Apache Ignite podpira SQL, C ++, .Net, Java, Scala, Groovy, PHP in Node.js. Enotni API povezuje aplikacije v oblaku z več shrambami podatkov, ki vsebujejo strukturirane, polstrukturirane in nestrukturirane podatke. Ponuja visoko zmogljivo podatkovno okolje, ki podjetjem omogoča obdelavo celotnih transakcij ACID in pridobivanje dragocenih vpogledov v realnem času, interaktivnih in paketnih poizvedbah.

Uporabniki lahko obdržijo obstoječe RDBMS in Apache Ignite uvedejo kot plast med njim in aplikacijskim slojem. Apache Ignite se samodejno integrira z Oracle, MySQL, Postgres, DB2, Microsoft SQL Server in drugimi RDBMS. Sistem samodejno generira model domene aplikacije na podlagi definicije sheme osnovne baze podatkov, nato pa naloži podatke. Podatkovne baze v pomnilniku običajno ponujajo samo vmesnik SQL, medtem ko Ignite poleg ANSI SQL podpira tudi širšo skupino paradigem dostopa in obdelave. Apache Ignite podpira shranjevanje ključev / vrednosti, dostop do SQL, MapReduce, obdelavo HPC / MPP, pretakanje / obdelavo CEP, združevanje v skupine in pospeševanje Hadoop v eni integrirani računalniški platformi v pomnilniku.

GridGain Systems je prvotno kodo za Apache Ignite podaril fundaciji Apache Software Foundation v drugi polovici leta 2014. Apache Ignite je bil leta 2015 hitro promoviran iz projekta inkubiranja v projekt Apache na najvišji ravni. V drugem četrtletju 2016 je bil Apache Ignite prenesli skoraj 200.000-krat. Uporabljajo ga organizacije po vsem svetu.

Arhitektura

Apache Ignite je distribuirana vmesna programska oprema na osnovi JVM, ki temelji na homogeni izvedbi topologije gruče, ki ne zahteva ločenih vozlišč strežnika in odjemalca. Vsa vozlišča v gruči Ignite so enaka in lahko igrajo katero koli logično vlogo na zahtevo izvajalne aplikacije.

Osnova vmesnika ponudnika storitev (SPI) je jedro Apache Ignite. Zasnova, ki temelji na SPI, omogoča, da je vsaka komponenta Ignite popolnoma prilagodljiva in vtičljiva. To omogoča izjemno prilagodljivost sistema s prilagodljivostjo kateri koli obstoječi ali prihodnji strežniški infrastrukturi.

Apache Ignite ponuja tudi neposredno podporo za paralelizacijo porazdeljenih izračunov, ki temeljijo na obdelavi v obliki vilic, MapReduce ali MPP. Ignite veliko uporablja porazdeljene vzporedne izračune in so na ravni API popolnoma izpostavljeni uporabniško določeni funkcionalnosti.

Ključne funkcije

Podatkovna mreža v pomnilniku. Apache Ignite vključuje podatkovno mrežo v pomnilniku, ki ureja upravljanje porazdeljenih podatkov v pomnilniku, vključno s transakcijami ACID, preusmeritvami, naprednim uravnoteženjem obremenitve in obsežno podporo za SQL. Podatkovna mreža Ignite je porazdeljena, objektno zasnovana, transakcijska ACID, shramba ključ-vrednost v pomnilniku. V nasprotju s tradicionalnimi sistemi za upravljanje baz podatkov, ki uporabljajo disk kot primarni mehanizem za shranjevanje, Ignite podatke shrani v pomnilnik. Z uporabo pomnilnika namesto diska je Apache Ignite do 1 milijon krat hitrejši od tradicionalnih baz podatkov.

Podpora za SQL. Apache Ignite podpira poizvedbe, skladne z ANSI SQL-99, praktično brez omejitev. Ignite lahko uporablja katero koli funkcijo SQL, združevanje ali združevanje v skupine in podpira porazdeljena, nekolocirana združevanja SQL in medpomnilniške združitve. Ignite podpira tudi koncept poizvedb na terenu, ki pomagajo zmanjšati obremenitve omrežja in serializacije.

Računska mreža v pomnilniku. Apache Ignite vključuje računalniško mrežo, ki omogoča vzporedno obdelavo v pomnilniku CPU-intenzivnih nalog ali drugih nalog, ki zahtevajo veliko virov, kot so tradicionalni HPC, MPP, fork-join in MapReduce. Podpora je na voljo tudi za standardno asinhrono obdelavo Java ExecutorService.

Rešitev storitve v pomnilniku. Servisna mreža Apache Ignite zagotavlja popoln nadzor nad storitvami, razporejenimi v gruči. Uporabniki lahko nadzorujejo, koliko primerkov storitev je treba razporediti na vsakem vozlišču gruče, s čimer se zagotovi ustrezna razmestitev in odpornost na napake. Servisna mreža zagotavlja neprekinjeno razpoložljivost vseh uvedenih storitev v primeru napak vozlišč. Podpira tudi samodejno razmestitev več primerkov storitve, storitve kot enojnega in storitev ob zagonu vozlišča.

Pretakanje v pomnilniku. Obdelava tokov v pomnilniku naslavlja veliko družino aplikacij, za katere tradicionalne metode obdelave in diskovno shranjevanje, kot so podatkovne zbirke ali datotečni sistemi, niso ustrezne. Te aplikacije razširjajo omejitve tradicionalnih infrastruktur za obdelavo podatkov.

Podpora za pretakanje uporabnikom omogoča poizvedovanje po tekočih oknih dohodnih podatkov. To omogoča uporabnikom, da odgovorijo na vprašanja, kot je "Katerih 10 najbolj priljubljenih izdelkov v zadnji uri?" ali "Kakšna je povprečna cena v določeni kategoriji izdelkov v zadnjih 12 urah?"

Drug pogost primer uporabe obdelave tokov je povezovanje poteka dela porazdeljenih dogodkov. Ker dogodki prihajajo v sistem z veliko hitrostjo, je obdelava dogodkov razdeljena na več stopenj, od katerih mora biti vsaka pravilno usmerjena znotraj grozda za obdelavo. Ti prilagodljivi delovni tokovi dogodkov podpirajo kompleksne programe za obdelavo dogodkov (CEP).

Hadoop pospešek v pomnilniku. Apache Ignite Accelerator for Hadoop omogoča hitro obdelavo podatkov v obstoječih okoljih Hadoop z orodji in tehnologijo, ki jih organizacija že uporablja.

Vžig v pomnilniku Hadoop pospešek temelji na prvem dvojnem načinu, visokozmogljivem datotečnem sistemu v pomnilniku, ki je stoodstotno združljiv s Hadoop HDFS in v pomnilniku optimizirani izvedbi MapReduce Zagotavljajo do 100-krat hitrejšo zmogljivost, HDFS v pomnilniku in MapReduce v pomnilniku zagotavljajo enostavne razširitve HDFS na osnovi diska in tradicionalne MapReduce. Ta funkcija plug-and-play zahteva minimalno in nikakršno integracijo. Deluje s katero koli odprtokodno ali komercialno različico Hadoop 1.x ali Hadoop 2.x, vključno s Cloudero, Hortonworks, MapR, Apache, Intel in AWS. Rezultat je do 100-krat hitrejša zmogljivost za opravila MapReduce in Hive.

Porazdeljen datotečni sistem v pomnilniku. Edinstvena značilnost Apache Ignite je datotečni sistem Ignite (IGFS), ki je vmesnik datotečnega sistema za podatke v pomnilniku. IGFS ponuja podobno funkcionalnost kot Hadoop HDFS. Vključuje zmožnost ustvarjanja popolnoma funkcionalnega datotečnega sistema v pomnilniku. IGFS je jedro Apache Ignite In-Memory Accelerator za Hadoop.

Podatki iz vsake datoteke so razdeljeni na ločene podatkovne bloke in shranjeni v predpomnilniku. Do podatkov v vsaki datoteki je mogoče dostopati s standardnim API-jem za pretakanje Java. Za vsak del datoteke lahko razvijalec izračuna afiniteto in obdela vsebino datoteke na ustreznih vozliščih, da se izogne ​​nepotrebnemu mreženju.

Poenoten API. Poenoteni API Apache Ignite podpira široko paleto pogostih protokolov za dostop do podatkov s pomočjo aplikacijskega sloja. Podprti protokoli vključujejo SQL, Java, C ++, .Net, PHP, MapReduce, Scala, Groovy in Node.js. Ignite podpira več protokolov za povezljivost odjemalca z grozdi Ignite, vključno z Ignite Native Clients, REST / HTTP, SSL / TLS in Memcached.SQL.

Napredno združevanje v skupine. Apache Ignite ponuja eno najsodobnejših tehnologij združevanja v skupine JVM. Vžigalna vozlišča se lahko samodejno odkrijejo, kar pomaga po potrebi prilagoditi gručo, ne da bi morali znova zagnati celotno gručo. Razvijalci lahko izkoristijo tudi podporo hibridnega oblaka Ignite, ki uporabnikom omogoča, da vzpostavijo povezave med zasebnimi oblaki in javnimi oblaki, kot sta AWS ali Microsoft Azure.

Dodatne lastnosti. Apache Ignite ponuja visoko zmogljivo funkcijo sporočanja po celotni skupini. Uporabnikom omogoča izmenjavo podatkov prek modelov za objavo-naročanje in neposredne komunikacije od točke do točke.

Funkcija porazdeljenih dogodkov v programu Ignite aplikacijam omogoča prejemanje obvestil o dogodkih v predpomnilniku, ki se pojavijo v okolju porazdeljene mreže. Razvijalci lahko to funkcijo uporabljajo za obveščanje o izvajanju oddaljenih nalog ali kakršnih koli spremembah podatkov predpomnilnika v gruči. Obvestila o dogodkih je mogoče razvrstiti v skupine in jih pošiljati v svežnjih in pravočasno. Obvestila o paketu pomagajo doseči visoko zmogljivost predpomnilnika in nizko zakasnitev.

Ignite omogoča, da se večina podatkovnih struktur iz ogrodja java.util.concurrent uporablja na porazdeljen način. Na primer, lahko dodate dvojno vrsto (java.util.concurrent.BlockingDeque) na enem vozlišču in ga anketirate iz drugega vozlišča. Lahko pa imate distribuiran generator primarnega ključa, ki zagotavlja edinstvenost vseh vozlišč.

Strukture porazdeljenih podatkov Ignite vključujejo podporo za te standardne Java API-je: sočasni zemljevid, porazdeljene čakalne vrste in nizi, AtomicLong, AtomicSequence, AtomicReference in CountDownLatch.

Ključne integracije

Apache Spark. Apache Spark je hiter, splošno uporaben motor za obsežno obdelavo podatkov. Ignite in Spark sta komplementarni računalniški rešitvi v pomnilniku. V mnogih primerih jih je mogoče uporabiti skupaj za doseganje vrhunske zmogljivosti in funkcionalnosti.

Apache Spark in Apache Ignite obravnavata nekoliko različna primera uporabe in redko tekmujeta za isto nalogo. Spodnja tabela opisuje nekatere ključne razlike.

 
 Apache SparkApache Ignite
Hramba podatkovNaloži podatke za obdelavo iz zunanjega pomnilnika, običajno na osnovi diska, in podatke zavrže, ko je obdelava končana. Ni shranjevanja podatkov.Ponuja porazdeljeno shrambo ključ-vrednost v pomnilniku (porazdeljeni predpomnilnik ali podatkovna mreža) s transakcijami ACID in zmožnostmi poizvedb SQL. Obdrži podatke v pomnilniku in lahko piše v osnovno bazo podatkov.
OLAP / OLTPZa netransakcijske podatke, ki so samo za branje, se uporabljajo za OLAP. Iskra odporni porazdeljeni nabori podatkov (RDD) ne podpirajo mutacije na mestu.Podpira bremenske obremenitve (OLAP), kot tudi transakcije, popolnoma skladne s kislinami (OLTP).
Vrste podatkovNa podlagi RDD-jev. Deluje samo na podatkovnih podatkih.Popolnoma podpira čisto računalniško koristno obremenitev (HPC / MPP), ki je lahko brez podatkov.

Apache Spark ne ponuja skupnega pomnilnika, zato je treba podatke iz HDFS ali drugega diskovnega pomnilnika naložiti v Spark za obdelavo. Stanje lahko prenesete iz opravila Spark v opravilo samo tako, da obdelane podatke shranite nazaj v zunanji pomnilnik. Ignite lahko deli stanje Spark neposredno v pomnilniku, ne da bi stanje shranil na disk.

Ena glavnih integracij za Ignite in Spark je API za skupno rabo Apache Ignite. Ignite RDD so v bistvu ovijalci okrog predpomnilnikov Ignite, ki jih je mogoče namestiti neposredno znotraj izvajanja opravil Spark. Ignetne RDD-je se lahko uporabljajo tudi z vzorcem predpomnilnika, kjer so gruče Ignite razmeščene ločeno od Sparka, vendar še vedno v pomnilniku. Do podatkov je še vedno mogoče dostopati z API-ji Spark RDD.

Spark podpira precej bogato sintakso SQL, vendar ne podpira indeksiranja podatkov, zato mora ves čas izvajati popolna skeniranja. Iskalne poizvedbe lahko trajajo minute tudi pri zmerno majhnih naborih podatkov. Ignite podpira indekse SQL, kar ima za posledico veliko hitrejše poizvedbe, zato lahko uporaba Spark z Ignite Spark SQL pospeši več kot 1000-krat. Rezultat, ki ga vrnejo Ignite Shared RDD, je tudi v skladu z API-jem Spark Dataframe, zato ga je mogoče nadalje analizirati s standardnimi podatkovnimi okviri Spark. Tako Spark kot Ignite se izvorno integrirata z Apache YARN in Apache Mesos, zato ju je lažje uporabljati skupaj.

Pri delu z datotekami namesto z RDD je še vedno mogoče deliti stanje med opravili Spark in aplikacijami z uporabo Ignite In-Memory File System (IGFS). IGFS implementira API Hadoop FileSystem in ga je mogoče namestiti kot izvorni datotečni sistem Hadoop, tako kot HDFS. Prižgite vtiče v katerem koli okolju Hadoop ali Spark. IGFS se lahko uporablja z ničelnimi spremembami kode v načinu plug-and-play.

Apache Cassandra. Apache Cassandra lahko služi kot visoko zmogljiva rešitev za strukturirane poizvedbe. Toda podatke v Cassandri je treba modelirati tako, da ima vsaka vnaprej določena poizvedba iskanje v eni vrstici. Zato morate pred modeliranjem podatkov vedeti, katere poizvedbe bodo potrebne.

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