Programovanie

Spusťte spracovanie veľkých dát pomocou Apache Ignite

Apache Ignite je počítačová platforma v pamäti, ktorú je možné plynulo vložiť medzi aplikačnú vrstvu používateľa a dátovú vrstvu. Apache Ignite načítava údaje z existujúcej diskovej úložnej vrstvy do RAM, čím zvyšuje výkon až o šesť rádov (miliónkrát).

Kapacitu dát v pamäti je možné ľahko škálovať tak, aby zvládla petabajty dát, jednoducho pridaním ďalších uzlov do klastra. Ďalej sú podporované transakcie ACID aj dotazy SQL. Program Ignite poskytuje výkon, rozsah a komplexné možnosti ďaleko nad rámec toho, čo môžu sami ponúknuť tradičné pamäťové databázy, dátové mriežky v pamäti a ďalšie riešenia založené na pamäti v pamäti.

Apache Ignite nevyžaduje, aby používatelia konvertovali a nahradili svoje existujúce databázy. Funguje s dátovými úložiskami RDBMS, NoSQL a Hadoop. Apache Ignite umožňuje vysoko výkonné transakcie, streamovanie v reálnom čase a rýchlu analýzu v jednej komplexnej vrstve prístupu a spracovania údajov. Na napájanie existujúcich alebo nových aplikácií využíva distribuovanú masívne paralelnú architektúru na cenovo dostupnom komoditnom hardvéri. Apache Ignite môže bežať v priestoroch, na cloudových platformách, ako sú AWS a Microsoft Azure, alebo v hybridnom prostredí.

Zjednotené API Apache Ignite podporuje SQL, C ++, .Net, Java, Scala, Groovy, PHP a Node.js. Unified API spája cloudové aplikácie s viacerými dátovými skladmi obsahujúcimi štruktúrované, pološtruktúrované a neštruktúrované dáta. Ponúka vysoko výkonné dátové prostredie, ktoré umožňuje spoločnostiam spracovávať úplné transakcie s kyselinami a vytvárať cenné poznatky z interaktívnych a dávkových dotazov v reálnom čase.

Používatelia môžu udržiavať svoje existujúce RDBMS na mieste a nasadiť Apache Ignite ako vrstvu medzi ním a aplikačnou vrstvou. Apache Ignite sa automaticky integruje do systémov Oracle, MySQL, Postgres, DB2, Microsoft SQL Server a ďalších RDBMS. Systém automaticky generuje model aplikačnej domény na základe definície schémy základnej databázy a potom načíta údaje. Pamäťové databázy zvyčajne poskytujú iba rozhranie SQL, zatiaľ čo program Ignite podporuje okrem ANSI SQL aj širšiu skupinu paradigiem prístupu a spracovania. Apache Ignite podporuje ukladanie kľúčov / hodnôt, prístup SQL, MapReduce, spracovanie HPC / MPP, streamovanie / spracovanie CEP, klastrovanie a akceleráciu Hadoop v jednej integrovanej výpočtovej platforme v pamäti.

GridGain Systems daroval pôvodný kód pre Apache Ignite nadácii Apache Software Foundation v druhej polovici roku 2014. Apache Ignite bol rýchlo povýšený z inkubačného projektu na špičkový projekt Apache v roku 2015. V druhom štvrťroku 2016 bol Apache Ignite stiahnuté takmer 200 000 krát. Používajú ho organizácie po celom svete.

Architektúra

Apache Ignite je distribuovaný middleware založený na JVM založený na homogénnej implementácii klastrovej topológie, ktorá nevyžaduje samostatné uzly servera a klienta. Všetky uzly v klastri Ignite sú si rovnaké a môžu hrať akúkoľvek logickú rolu za každých požiadaviek runtime aplikácie.

Návrh rozhrania poskytovateľa služieb (SPI) je jadrom Apache Ignite. Dizajn založený na SPI umožňuje, aby boli všetky interné komponenty Ignite plne prispôsobiteľné a pripojiteľné. To umožňuje obrovskú konfigurovateľnosť systému s možnosťou adaptácie na akúkoľvek existujúcu alebo budúcu serverovú infraštruktúru.

Apache Ignite tiež poskytuje priamu podporu pre paralelizáciu distribuovaných výpočtov založených na spracovaní typu fork-join, MapReduce alebo MPP. Ignite vo veľkej miere využíva distribuované paralelné výpočty a na úrovni API sú plne prístupné pre užívateľom definované funkcie.

Kľúčové vlastnosti

Pamäťová mriežka v pamäti. Apache Ignite obsahuje mriežku dát v pamäti, ktorá sa stará o správu distribuovaných údajov v pamäti vrátane transakcií ACID, failover, pokročilého vyrovnávania záťaže a rozsiahlej podpory SQL. Dátová mriežka Ignite je distribuované, objektovo založené, ACID transakčné, úložisko kľúč - hodnota v pamäti. Na rozdiel od tradičných systémov na správu databáz, ktoré využívajú disk ako svoj primárny úložný mechanizmus, Ignite ukladá údaje do pamäte. Vďaka využitiu pamäte namiesto disku je Apache Ignite až miliónkrát rýchlejší ako tradičné databázy.

Podpora SQL. Apache Ignite podporuje voľné dotazy vyhovujúce požiadavkám ANSI SQL-99 bez prakticky akýchkoľvek obmedzení. Ignite môže používať ľubovoľnú funkciu SQL, agregáciu alebo zoskupenie a podporuje distribuované, nezafarbené spojenia SQL a spojenia medzi cache. Ignite tiež podporuje koncept poľných dotazov, ktoré pomáhajú minimalizovať réžiu siete a serializácie.

Výpočtová mriežka v pamäti. Apache Ignite obsahuje výpočtovú mriežku, ktorá umožňuje paralelné spracovanie v pamäti procesorov náročných na procesor alebo iných úloh náročných na zdroje, ako sú tradičné procesy HPC, MPP, fork-join a MapReduce. Poskytuje sa podpora aj pre štandardné asynchrónne spracovanie Java ExecutorService.

Servisná mriežka v pamäti. Mriežka služby Apache Ignite poskytuje úplnú kontrolu nad službami nasadenými v klastri. Používatelia môžu kontrolovať, koľko inštancií služieb by sa malo nasadiť na každý uzol klastra, a zabezpečiť tak správne nasadenie a odolnosť voči chybám. Servisná mriežka zaručuje nepretržitú dostupnosť všetkých nasadených služieb v prípade zlyhania uzla. Podporuje tiež automatické nasadenie viacerých inštancií služby, služby ako samostatnej služby a služieb pri spustení uzla.

Streamovanie v pamäti. Spracovanie toku v pamäti adresuje veľkú skupinu aplikácií, pre ktoré tradičné metódy spracovania a diskové úložisko, ako napríklad diskové databázy alebo súborové systémy, nie sú dostatočné. Tieto aplikácie rozširujú limity tradičných infraštruktúr na spracovanie údajov.

Podpora streamovania umožňuje používateľom dopytovať rolovacie okná prichádzajúcich údajov. To umožňuje používateľom odpovedať na otázky typu „Čo je 10 najobľúbenejších produktov za poslednú hodinu?“ alebo „Aká je priemerná cena v určitej kategórii výrobkov za posledných 12 hodín?“

Ďalším bežným prípadom použitia spracovania prúdu je zavedenie pracovného toku distribuovaných udalostí. Pretože udalosti prichádzajú do systému vysokou rýchlosťou, je spracovanie udalostí rozdelené do niekoľkých etáp, pričom každá z nich musí byť na spracovanie správne smerovaná v rámci klastra. Tieto prispôsobiteľné pracovné toky udalostí podporujú aplikácie na spracovanie zložitých udalostí (CEP).

Akcelerácia Hadoop v pamäti. Apache Ignite Accelerator pre Hadoop umožňuje rýchle spracovanie údajov v existujúcich prostrediach Hadoop pomocou nástrojov a technológií, ktoré organizácia už používa.

Akcelerácia Hadoop v pamäti je založená na prvom vysoko výkonnom systéme súborov v pamäti s duálnym režimom, ktorý je stopercentne kompatibilný s Hadoop HDFS a implementáciou MapReduce optimalizovanou v pamäti. HDFS v pamäti a MapReduce v pamäti, ktoré poskytujú až 100-krát rýchlejší výkon, poskytujú ľahko použiteľné rozšírenia o diskový HDFS a tradičné MapReduce. Táto funkcia plug-and-play vyžaduje minimálnu alebo žiadnu integráciu. Funguje s ľubovoľnou otvorenou alebo komerčnou verziou Hadoop 1.x alebo Hadoop 2.x, vrátane Cloudera, Hortonworks, MapR, Apache, Intel a AWS. Výsledkom je až 100-násobne rýchlejší výkon úloh MapReduce a Hive.

Distribuovaný systém súborov v pamäti. Unikátnou vlastnosťou Apache Ignite je Ignite File System (IGFS), čo je rozhranie súborového systému s údajmi v pamäti. IGFS poskytuje podobné funkcie ako Hadoop HDFS. Zahŕňa schopnosť vytvoriť v pamäti plne funkčný súborový systém. IGFS je jadrom Apache Ignite In-Memory Accelerator pre Hadoop.

Údaje z každého súboru sú rozdelené na samostatné dátové bloky a uložené v pamäti cache. K dátam v každom súbore je možné pristupovať pomocou štandardného rozhrania API na streamovanie Java. Pre každú časť súboru môže vývojár vypočítať afinitu a spracovať obsah súboru na zodpovedajúcich uzloch, aby sa predišlo zbytočnému vytváraniu sietí.

Zjednotené API. Zjednotené API Apache Ignite podporuje širokú škálu bežných protokolov pre prístup aplikačnej vrstvy k dátam. Podporované protokoly zahŕňajú SQL, Java, C ++, .Net, PHP, MapReduce, Scala, Groovy a Node.js. Ignite podporuje niekoľko protokolov pre pripojenie klientov k klastrom Ignite, vrátane Ignite Native Clients, REST / HTTP, SSL / TLS a Memcached.SQL.

Pokročilé klastrovanie. Apache Ignite poskytuje jednu z najsofistikovanejších technológií klastrovania na JVM. Uzly Ignite sa môžu navzájom automaticky objavovať, čo v prípade potreby pomáha škálovať klaster bez nutnosti reštartovať celý klaster. Vývojári môžu tiež využiť výhody hybridnej cloudovej podpory Ignite, ktorá umožňuje používateľom nadviazať spojenie medzi súkromnými cloudmi a verejnými cloudmi, ako sú AWS alebo Microsoft Azure.

Pridané vlastnosti. Apache Ignite poskytuje vysoko výkonnú funkciu zasielania správ v rámci klastra. Umožňuje používateľom vymieňať si údaje prostredníctvom komunikačných modelov „publikovať-predplatiť“ a „priame spojenie medzi dvoma bodmi“.

Funkcia distribuovaných udalostí v aplikácii Ignite umožňuje aplikáciám prijímať oznámenia o udalostiach v pamäti cache, ktoré sa vyskytujú v prostredí distribuovanej mriežky. Vývojári môžu pomocou tejto funkcie dostávať upozornenia na vykonávanie vzdialených úloh alebo na akékoľvek zmeny údajov v pamäti cache v rámci klastra. Upozornenia na udalosti je možné zoskupiť a odoslať v dávkach a v časových intervaloch. Dávkové upozornenia pomáhajú dosiahnuť vysoký výkon medzipamäte a nízku latenciu.

Ignite umožňuje, aby sa väčšina dátových štruktúr z rámca java.util.concurrent použila distribuovaným spôsobom. Môžete napríklad pridať do dvojitého frontu (java.util.concurrent.BlockingDeque) v jednom uzle a vyzvať ho z iného uzla. Alebo môžete mať distribuovaný generátor primárneho kľúča, ktorý by zaručoval jedinečnosť na všetkých uzloch.

Medzi zapálené distribuované dátové štruktúry patrí podpora týchto štandardných rozhraní API Java: súbežná mapa, distribuované fronty a množiny, AtomicLong, AtomicSequence, AtomicReference a CountDownLatch.

Kľúčové integrácie

Apache Spark. Apache Spark je rýchly a univerzálny nástroj na rozsiahle spracovanie údajov. Ignite a Spark sú doplnkové výpočtové riešenia v pamäti. Môžu sa použiť spoločne v mnohých prípadoch na dosiahnutie vynikajúceho výkonu a funkčnosti.

Apache Spark a Apache Ignite riešia trochu odlišné prípady použitia a zriedka súťaží o rovnakú úlohu. V nasledujúcej tabuľke sú uvedené niektoré kľúčové rozdiely.

 
 Apache SparkApache Ignite
Uchovávanie údajovNačíta údaje na spracovanie z externého úložiska, obvykle založeného na disku, a po dokončení spracovania údaje zahodí. Žiadne ukladanie dát.Poskytuje distribuované úložisko kľúčov a hodnôt v pamäti (distribuovaná vyrovnávacia pamäť alebo dátová mriežka) s ACID transakciami a možnosťami dotazovania SQL. Zachová údaje v pamäti a môže zapisovať do základnej databázy.
OLAP / OLTPV prípade netransakčných údajov iba na čítanie sa používajú pre OLAP. Odolné distribuované datasety (RDD) poskytované Sparkom nepodporujú miestne mutácie.Podporuje netransakčné (OLAP) užitočné zaťaženie, ako aj transakcie plne kompatibilné s ACID (OLTP).
Dátové typyNa základe RDD. Funguje iba na dátovom zaťažení.Plne podporuje čisté výpočtové zaťaženie (HPC / MPP), ktoré môže byť „bez dát“.

Apache Spark neposkytuje zdieľané úložisko, takže na spracovanie musia byť do Sparku načítané údaje z HDFS alebo iného úložiska disku. Stav je možné prenášať z úlohy Spark na úlohu iba uložením spracovaných údajov späť do externého úložiska. Ignite môže zdieľať stav Spark priamo v pamäti bez ukladania stavu na disk.

Jednou z hlavných integrácií pre Ignite a Spark je Apache Ignite Shared RDD API. Ignite RDD sú v podstate obaly okolo kešiek Ignite, ktoré je možné nasadiť priamo vo vnútri vykonávania úloh Spark. Ignite RDD sa dajú použiť aj so vzorom cache-away, kde sú klastre Ignite nasadené oddelene od Sparku, ale stále v pamäti. K údajom sa stále pristupuje pomocou rozhraní API Spark RDD.

Spark podporuje pomerne bohatú syntax SQL, ale nepodporuje indexovanie údajov, takže musí neustále vykonávať úplné kontroly. Iskrové dotazy môžu pri stredne malých množinách údajov trvať niekoľko minút. Ignite podporuje indexy SQL, čo má za následok oveľa rýchlejšie dotazy, takže použitie programu Spark s programom Ignite môže program Spark SQL zrýchliť viac ako 1 000-násobne. Výsledná sada vrátená Ignite Shared RDDs tiež vyhovuje rozhraniu Spark Dataframe API, takže ju možno ďalej analyzovať pomocou štandardných údajových rámcov Spark. Spark aj Ignite sa natívne integrujú s Apache YARN a Apache Mesos, takže je jednoduchšie ich používať spoločne.

Pri práci so súbormi namiesto s RDD je stále možné zdieľať stav medzi úlohami Spark a aplikáciami pomocou systému súborov Ignite In-Memory File System (IGFS). IGFS implementuje Hadoop FileSystem API a môže byť nasadený ako natívny súborový systém Hadoop, presne ako HDFS. Zapaľte natívne zástrčky do ľubovoľného prostredia Hadoop alebo Spark. IGFS je možné používať s nulovými zmenami kódu spôsobom plug-and-play.

Apache Cassandra. Apache Cassandra môže slúžiť ako vysoko výkonné riešenie pre štruktúrované dotazy. Ale údaje v Cassandre by mali byť vymodelované tak, aby každý preddefinovaný dopyt viedol k získaniu jedného riadku. Pred modelovaním údajov teda musíte vedieť, aké dotazy sa budú vyžadovať.