Programmēšana

Lai aktivizētu lielu datu apstrādi, izmantojot Apache Ignite

Apache Ignite ir atmiņā esoša skaitļošanas platforma, kuru var ērti ievietot starp lietotāja lietojumprogrammu slāni un datu slāni. Apache Ignite ielādē datus no esošā uz diska glabājamā slāņa RAM, uzlabojot veiktspēju pat par sešām pakāpēm (1 miljonu reižu).

Datu ietilpību atmiņā var viegli pielāgot, lai apstrādātu petabaitus datu, vienkārši pievienojot kopai vairāk mezglu. Turklāt tiek atbalstīti gan ACID darījumi, gan SQL vaicājumi. Ignite nodrošina veiktspēju, mērogu un visaptverošas iespējas, kas pārsniedz un pārsniedz tradicionālo atmiņā esošo datu bāzu, atmiņas datu režģu un citu atmiņā balstītu punktu risinājumu iespējas.

Apache Ignite neprasa lietotājiem kopēt un aizstāt esošās datu bāzes. Tas darbojas ar RDBMS, NoSQL un Hadoop datu krātuvēm. Apache Ignite nodrošina augstas veiktspējas darījumus, reāllaika straumēšanu un ātru analīzi vienā, visaptverošā datu piekļuves un apstrādes slānī. Lai izmantotu esošās vai jaunās lietojumprogrammas, tā izmanto izplatītu, masveidīgi paralēlu arhitektūru uz pieejamu preču aparatūru. Apache Ignite var darboties telpās, mākoņu platformās, piemēram, AWS un Microsoft Azure, vai hibrīdā vidē.

Apache Ignite vienotais API atbalsta SQL, C ++, .Net, Java, Scala, Groovy, PHP un Node.js. Vienotais API savieno mākoņa mēroga lietojumprogrammas ar vairākiem datu krājumiem, kuros ir strukturēti, daļēji strukturēti un nestrukturēti dati. Tas piedāvā augstas veiktspējas datu vidi, kas ļauj uzņēmumiem apstrādāt pilnus ACID darījumus un ģenerēt vērtīgu ieskatu no reāllaika, interaktīviem un pakešu vaicājumiem.

Lietotāji var saglabāt esošo RDBMS vietā un izvietot Apache Ignite kā slāni starp to un lietojumprogrammas slāni. Apache Ignite automātiski integrējas ar Oracle, MySQL, Postgres, DB2, Microsoft SQL Server un citām RDBMS. Sistēma automātiski ģenerē lietojumprogrammas domēna modeli, pamatojoties uz pamatā esošās datu bāzes shēmas definīciju, pēc tam ielādē datus. Atmiņā esošās datu bāzes parasti nodrošina tikai SQL saskarni, savukārt Ignite papildus ANSI SQL atbalsta plašāku piekļuves un apstrādes paradigmu grupu. Apache Ignite atbalsta atslēgu / vērtību krātuves, SQL piekļuvi, MapReduce, HPC / MPP apstrādi, straumēšanu / CEP apstrādi, kopu veidošanu un Hadoop paātrinājumu vienā integrētā atmiņas skaitļošanas platformā.

GridGain Systems 2014. gada otrajā pusē Apache Ignite oriģinālo kodu nodeva Apache programmatūras fondam. Apache Ignite 2015. gadā ātri tika paaugstināts no inkubācijas projekta uz augstākā līmeņa Apache projektu. 2016. gada otrajā ceturksnī Apache Ignite tika lejupielādēts gandrīz 200 000 reižu. To izmanto organizācijas visā pasaulē.

Arhitektūra

Apache Ignite ir uz JVM balstīta izplatīta starpprogrammatūra, kuras pamatā ir viendabīga klastera topoloģijas ieviešana, kurai nav nepieciešami atsevišķi servera un klienta mezgli. Visi Ignite klastera mezgli ir vienādi, un tie var izpildīt jebkuru loģisko lomu katrā izpildlaika lietojuma prasībā.

Apache Ignite pamatā ir pakalpojumu sniedzēja saskarnes (SPI) dizains. Uz SPI balstīts dizains padara katru Ignite iekšējo komponentu pilnībā pielāgojamu un pievienojamu. Tas ļauj ārkārtīgi konfigurēt sistēmu, pielāgojoties jebkurai esošai vai nākotnes serveru infrastruktūrai.

Apache Ignite nodrošina arī tiešu atbalstu izplatīto aprēķinu paralēlošanai, pamatojoties uz dakšu savienošanu, MapReduce vai MPP stila apstrādi. Ignite plaši izmanto izplatītus paralēlus aprēķinus, un tie ir pilnībā pakļauti API noteiktai lietotāja definētai funkcionalitātei.

Galvenās iezīmes

Datu režģis atmiņā. Apache Ignite ietver atmiņā esošo datu režģi, kas apstrādā sadalītu atmiņā esošu datu pārvaldību, ieskaitot ACID transakcijas, kļūmjpārlēci, uzlabotu slodzes līdzsvarošanu un plašu SQL atbalstu. Ignite datu režģis ir sadalīts, objektu bāzes, ACID darījumu, atmiņā ievietotu atslēgu vērtību krājums. Atšķirībā no tradicionālajām datu bāzu pārvaldības sistēmām, kuras kā galveno atmiņas mehānismu izmanto disku, Ignite datus glabā atmiņā. Izmantojot atmiņu, nevis disku, Apache Ignite ir līdz pat 1 miljonam reižu ātrāks nekā tradicionālās datu bāzes.

SQL atbalsts. Apache Ignite atbalsta brīvas formas ANSI SQL-99 atbilstošus vaicājumus praktiski bez ierobežojumiem. Ignite var izmantot jebkuru SQL funkciju, apkopošanu vai grupēšanu, un tā atbalsta sadalītās, nekokotētās SQL un starpatmiņas savienojumus. Ignite atbalsta arī lauku vaicājumu jēdzienu, lai palīdzētu samazināt tīkla un sērijas izmaksas.

Atmiņā esošais aprēķināšanas režģis. Apache Ignite ietver skaitļošanas režģi, kas ļauj paralēli apstrādāt atmiņā procesorietilpīgus vai citus resursus ietilpīgus uzdevumus, piemēram, tradicionālo HPC, MPP, dakšu pievienošanu un MapReduce apstrādi. Atbalsts tiek sniegts arī standarta Java ExecutorService asinhronajai apstrādei.

Atmiņas pakalpojumu režģis. Apache Ignite pakalpojumu režģis nodrošina pilnīgu kontroli pār klasterī izvietotajiem pakalpojumiem. Lietotāji var kontrolēt, cik daudz pakalpojumu gadījumu būtu jāizvieto katrā klastera mezglā, nodrošinot pareizu izvietošanu un kļūdu toleranci. Pakalpojumu tīkls nodrošina visu izvietoto pakalpojumu nepārtrauktu pieejamību mezglu kļūmju gadījumā. Tas arī atbalsta automātisku vairāku pakalpojuma gadījumu, pakalpojuma kā atsevišķa vienuma un pakalpojumu izvietošanu mezglu startēšanas laikā.

Straumēšana atmiņā. Straumēšanas atmiņā apstrāde attiecas uz lielu lietojumprogrammu saimi, kurai tradicionālās apstrādes metodes un uz diska balstīta krātuve, piemēram, uz diska balstītas datu bāzes vai failu sistēmas, nav pietiekamas. Šīs lietojumprogrammas paplašina tradicionālās datu apstrādes infrastruktūras robežas.

Straumēšanas atbalsts ļauj lietotājiem vaicāt ienākošo datu ritošos logus. Tas ļauj lietotājiem atbildēt uz tādiem jautājumiem kā “Kādi ir 10 populārākie produkti pēdējās stundas laikā?” vai “Kāda ir vidējā cena noteiktā produktu kategorijā pēdējo 12 stundu laikā?”

Vēl viens izplatīts straumes apstrādes izmantošanas gadījums ir izplatīto notikumu darbplūsmas sagatavošana. Tā kā notikumi sistēmā ienāk ar lielu ātrumu, notikumu apstrāde tiek sadalīta vairākos posmos, un katrs no tiem apstrādei ir pareizi jānovirza kopā. Šīs pielāgojamās notikumu darbplūsmas atbalsta sarežģītas notikumu apstrādes (CEP) lietojumprogrammas.

Atmiņā esošais Hadoop paātrinājums. Apache Ignite Accelerator for Hadoop ļauj ātri apstrādāt datus esošajās Hadoop vidēs, izmantojot rīkus un tehnoloģijas, kuras organizācija jau izmanto.

Aizdedzināt atmiņā Hadoop paātrinājums ir balstīts uz pirmo divējāda režīma, augstas veiktspējas atmiņas failu sistēmu, kas ir 100% saderīga ar Hadoop HDFS, un atmiņā optimizētu MapReduce ieviešanu. Nodrošinot līdz pat 100 reižu ātrāku veiktspēju, atmiņā esošie HDFS un atmiņā esošie MapReduce nodrošina ērti lietojamus paplašinājumus uz diska balstītai HDFS un tradicionālajai MapReduce. Šai plug-and-play funkcijai ir nepieciešama minimāla integrācija. Tas darbojas ar jebkuru atvērtā koda vai Hadoop 1.x vai Hadoop 2.x komerciālo versiju, ieskaitot Cloudera, Hortonworks, MapR, Apache, Intel un AWS. Rezultāts ir līdz pat 100 reižu ātrāka MapReduce un Hive darbu veiktspēja.

Izplatīta atmiņas failu sistēma. Unikāla Apache Ignite iezīme ir Ignite File System (IGFS), kas ir failu sistēmas saskarne atmiņas datiem. IGFS nodrošina līdzīgu funkcionalitāti kā Hadoop HDFS. Tas ietver iespēju atmiņā izveidot pilnībā funkcionējošu failu sistēmu. IGFS ir Hadoop apache Ignite atmiņas paātrinātāja pamatā.

Katra faila dati tiek sadalīti atsevišķos datu blokos un saglabāti kešatmiņā. Katra faila datiem var piekļūt, izmantojot standarta Java straumēšanas API. Katrai faila daļai izstrādātājs var aprēķināt afinitāti un apstrādāt faila saturu attiecīgajos mezglos, lai izvairītos no nevajadzīgas tīkla izveidošanas.

Vienotais API. Apache Ignite vienotais API atbalsta plašu lietojumprogrammu slāņa kopēju protokolu piekļuvi datiem. Atbalstītie protokoli ietver SQL, Java, C ++, .Net, PHP, MapReduce, Scala, Groovy un Node.js. Ignite atbalsta vairākus klienta savienojamības ar Ignite kopām protokolus, tostarp vietējos klientus, REST / HTTP, SSL / TLS un Memcached.SQL.

Uzlabota kopu veidošana. Apache Ignite nodrošina vienu no vismodernākajām JVM klasteru tehnoloģijām. Aizdedzes mezgli var automātiski atrast viens otru, kas vajadzības gadījumā palīdz mērogot kopu, nerestartējot visu kopu. Izstrādātāji var arī izmantot Ignite hibrīda mākoņu atbalsta priekšrocības, kas lietotājiem ļauj izveidot savienojumus starp privātiem mākoņiem un publiskiem mākoņiem, piemēram, AWS vai Microsoft Azure.

Papildus iespējas. Apache Ignite nodrošina augstas veiktspējas, klastera mēroga ziņojumapmaiņas funkcionalitāti. Tas ļauj lietotājiem apmainīties ar datiem, izmantojot publicēšanas-abonēšanas un tiešas punkta-punkta komunikācijas modeļus.

Izplatīto notikumu funkcionalitāte programmā Ignite ļauj lietojumprogrammām saņemt paziņojumus par kešatmiņas notikumiem izplatītā tīkla vidē. Izstrādātāji var izmantot šo funkcionalitāti, lai saņemtu paziņojumus par attālo uzdevumu izpildi vai visām kešatmiņas datu izmaiņām klasterī. Paziņojumus par notikumiem var sagrupēt un nosūtīt pa partijām un savlaicīgi. Sērijveida paziņojumi palīdz sasniegt augstu kešatmiņas veiktspēju un zemu latentumu.

Ignite ļauj lielāko daļu datu struktūru no java.util.concurrent ietvara izmantot sadalītā veidā. Piemēram, vienā mezglā varat pievienot divkāršu rindu (java.util.concurrent.BlockingDeque) un aptaujāt to no cita mezgla. Vai arī jums varētu būt izplatīts primārās atslēgas ģenerators, kas garantētu visu mezglu unikalitāti.

Aizdedzes sadalītās datu struktūras ietver atbalstu šīm standarta Java API: Vienlaicīga karte, sadalītās rindas un kopas, AtomicLong, AtomicSequence, AtomicReference un CountDownLatch.

Galvenās integrācijas

Apache Spark. Apache Spark ir ātrs, universāls dzinējs liela mēroga datu apstrādei. Ignite un Spark ir papildu atmiņas skaitļošanas risinājumi. Daudzos gadījumos tos var izmantot kopā, lai sasniegtu izcilu veiktspēju un funkcionalitāti.

Apache Spark un Apache Ignite adresē nedaudz atšķirīgus lietošanas gadījumus un reti sacenšas par vienu un to pašu uzdevumu. Zemāk esošajā tabulā ir norādītas dažas galvenās atšķirības.

 
 Apache SparkApache Ignite
Datu saglabāšanaDati apstrādei tiek ielādēti no ārējās atmiņas, parasti balstītas uz disku, un pēc apstrādes tiek izmesti dati. Nav datu glabāšanas.Nodrošina sadalītu atmiņā atslēgu vērtību krātuvi (sadalīto kešatmiņu vai datu režģi) ar ACID transakcijām un SQL vaicājumu iespējām. Saglabā datus atmiņā un var ierakstīt pamatā esošajā datu bāzē.
OLAP / OLTPDatoriem, kas nav darījumi, tikai lasīšanai, tāpēc tos izmanto OLAP. Dzirksteles izturīgas izplatītās datu kopas (RDD) neatbalsta mutāciju uz vietas.Atbalsta netransakciju (OLAP) lietderīgās slodzes, kā arī pilnībā ACID saderīgus darījumus (OLTP).
Datu tipiPamatojoties uz RDD. Darbojas tikai ar datu vadītu lietderīgo slodzi.Pilnībā atbalsta tīras skaitļošanas lietderīgās slodzes (HPC / MPP), kas var būt bez datiem.

Apache Spark nenodrošina koplietojamu krātuvi, tāpēc dati no HDFS vai citas diska krātuves jāielādē Spark apstrādei. Stāvokli no Spark darba var pārcelt uz citu, saglabājot apstrādātos datus atpakaļ ārējā atmiņā. Ignite var koplietot Spark stāvokli tieši atmiņā, nesaglabājot stāvokli diskā.

Viena no galvenajām Ignite un Spark integrācijām ir Apache Ignite Shared RDD API. Ignite RDD būtībā ir Ignite kešatmiņu ietinēji, kurus var izvietot tieši Spark darbu izpildes iekšpusē. Ignite RDD var izmantot arī ar kešatmiņā atstāto modeli, kur Ignite kopas tiek izvietotas atsevišķi no Spark, bet joprojām atmiņā. Dati joprojām tiek piekļūti, izmantojot Spark RDD API.

Spark atbalsta diezgan bagātīgu SQL sintaksi, taču neatbalsta datu indeksēšanu, tāpēc tai visu laiku jāveic pilnas pārbaudes. Dzirksteles vaicājumi var aizņemt minūtes pat ar vidēji mazām datu kopām. Ignite atbalsta SQL indeksus, kā rezultātā rodas daudz ātrāki vaicājumi, tāpēc, izmantojot Spark ar Ignite, Spark SQL var paātrināties vairāk nekā 1000 reizes. Ignite Shared RDD atgrieztais rezultātu kopums arī atbilst Spark Dataframe API, tāpēc to var tālāk analizēt, izmantojot standarta Spark datu ietvarus. Gan Spark, gan Ignite dabiski integrējas ar Apache YARN un Apache Mesos, tāpēc tos ir vieglāk izmantot kopā.

Strādājot ar failiem, nevis RDD, joprojām ir iespējams kopīgot stāvokli starp Spark darbiem un lietojumprogrammām, izmantojot Ignite atmiņas failu sistēmu (IGFS). IGFS ievieš Hadoop FileSystem API, un to var izvietot kā vietējo Hadoop failu sistēmu, tieši tāpat kā HDFS. Aizdedziniet kontaktdakšas jebkurā Hadoop vai Spark vidē. IGFS var izmantot ar nulles koda izmaiņām plug-and-play veidā.

Apache Kasandra. Apache Cassandra var kalpot kā augstas veiktspējas risinājums strukturētiem vaicājumiem. Bet Cassandra dati būtu jāmodelē tā, lai katrs iepriekš definētais vaicājums iegūtu vienu rindu. Tādējādi pirms datu modelēšanas jums jāzina, kādi vaicājumi būs nepieciešami.

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