Programování

Spusťte zpracování velkých dat pomocí Apache Ignite

Apache Ignite je výpočetní platforma v paměti, kterou lze bezproblémově vložit mezi aplikační vrstvu uživatele a datovou vrstvu. Apache Ignite načítá data ze stávající diskové úložné vrstvy do paměti RAM, čímž zvyšuje výkon až o šest řádů (1 milionkrát).

Kapacitu dat v paměti lze snadno škálovat tak, aby zvládla petabajty dat jednoduše přidáním dalších uzlů do klastru. Dále jsou podporovány transakce ACID i dotazy SQL. Ignite poskytuje výkon, rozsah a komplexní funkce daleko nad rámec toho, co mohou samy nabídnout tradiční paměti v paměti, datové mřížky v paměti a další řešení založená na paměti v paměti.

Apache Ignite nevyžaduje, aby uživatelé kopírovali a nahrazovali své stávající databáze. Funguje s datovými úložišti RDBMS, NoSQL a Hadoop. Apache Ignite umožňuje vysoce výkonné transakce, streamování v reálném čase a rychlou analýzu v jediné komplexní vrstvě přístupu a zpracování dat. Využívá distribuovanou masivně paralelní architekturu na dostupném komoditním hardwaru k napájení stávajících nebo nových aplikací. Apache Ignite může běžet v prostorách, na cloudových platformách, jako jsou AWS a Microsoft Azure, nebo v hybridním prostředí.

Unified API Apache Ignite podporuje SQL, C ++, .Net, Java, Scala, Groovy, PHP a Node.js. Sjednocené API spojuje aplikace v cloudu s více datovými úložišti obsahujícími strukturovaná, polostrukturovaná a nestrukturovaná data. Nabízí vysoce výkonné datové prostředí, které společnostem umožňuje zpracovávat plné transakce ACID a generovat cenné poznatky z interaktivních a dávkových dotazů v reálném čase.

Uživatelé mohou udržovat své stávající RDBMS na místě a nasadit Apache Ignite jako vrstvu mezi ním a aplikační vrstvou. Apache Ignite se automaticky integruje s Oracle, MySQL, Postgres, DB2, Microsoft SQL Server a dalšími RDBMS. Systém automaticky generuje model domény aplikace na základě definice schématu podkladové databáze a poté načte data. Databáze v paměti obvykle poskytují pouze rozhraní SQL, zatímco Ignite podporuje kromě ANSI SQL i širší skupinu paradigmat přístupu a zpracování. Apache Ignite podporuje úložiště klíč / hodnota, přístup SQL, MapReduce, zpracování HPC / MPP, zpracování streamování / CEP, klastrování a akceleraci Hadoop v jediné integrované výpočetní platformě v paměti.

GridGain Systems daroval původní kód pro Apache Ignite nadaci Apache Software Foundation ve druhé polovině roku 2014. Apache Ignite byl rychle povýšen z inkubačního projektu na projekt Apache nejvyšší úrovně v roce 2015. Ve druhém čtvrtletí roku 2016 byl Apache Ignite staženo téměř 200 000krát. Používají ho organizace z celého světa.

Architektura

Apache Ignite je distribuovaný middleware založený na JVM založený na homogenní implementaci klastrové topologie, která nevyžaduje samostatné uzly serveru a klienta. Všechny uzly v klastru Ignite jsou stejné a mohou hrát jakoukoli logickou roli za požadavku běhové aplikace.

Návrh rozhraní poskytovatele služeb (SPI) je jádrem Apache Ignite. Díky designu založenému na SPI je každá vnitřní součást Ignite plně přizpůsobitelná a připojitelná. To umožňuje obrovskou konfigurovatelnost systému s adaptabilitou na jakoukoli stávající nebo budoucí serverovou infrastrukturu.

Apache Ignite také poskytuje přímou podporu pro paralelizaci distribuovaných výpočtů založených na zpracování typu fork-join, MapReduce nebo MPP. Ignite značně využívá distribuované paralelní výpočty a jsou plně vystaveny na úrovni API pro uživatelsky definované funkce.

Klíčové vlastnosti

Datová mřížka v paměti. Apache Ignite obsahuje datovou mřížku v paměti, která zpracovává distribuovanou správu dat v paměti, včetně transakcí ACID, převzetí služeb při selhání, pokročilého vyvažování zátěže a rozsáhlé podpory SQL. Datová mřížka Ignite je distribuované, objektově založené, ACID transakční úložiště klíčů a hodnot v paměti. Na rozdíl od tradičních systémů pro správu databází, které využívají disk jako svůj primární úložný mechanismus, Ignite ukládá data do paměti. Díky využití paměti místo disku je Apache Ignite až 1 milionkrát rychlejší než tradiční databáze.

Podpora SQL. Apache Ignite podporuje volné dotazy vyhovující standardu ANSI SQL-99 prakticky bez omezení. Ignite může používat jakoukoli funkci SQL, agregaci nebo seskupování a podporuje distribuovaná, nezařazená spojení SQL a spojení mezipaměti. Ignite také podporuje koncept polních dotazů, které pomáhají minimalizovat režii sítě a serializace.

Výpočetní mřížka v paměti. Apache Ignite obsahuje výpočetní mřížku, která umožňuje paralelní zpracování paměti náročné na CPU nebo jiné úkoly náročné na zdroje, jako je tradiční zpracování HPC, MPP, fork-join a MapReduce. Podpora je také poskytována pro standardní asynchronní zpracování Java ExecutorService.

Servisní mřížka v paměti. Mřížka služeb Apache Ignite poskytuje úplnou kontrolu nad službami nasazenými v klastru. Uživatelé mohou řídit, kolik instancí služby by se mělo nasadit na každý uzel clusteru, a zajistit tak správné nasazení a odolnost proti chybám. Servisní mřížka zaručuje nepřetržitou dostupnost všech nasazených služeb v případě selhání uzlu. Podporuje také automatické nasazení více instancí služby, služby jako singleton a služeb při spuštění uzlu.

Streamování v paměti. Zpracování proudu v paměti adresuje velkou rodinu aplikací, pro které jsou tradiční metody zpracování a diskové úložiště, jako jsou diskové databáze nebo souborové systémy, nedostatečné. Tyto aplikace rozšiřují limity tradičních infrastruktur zpracování dat.

Podpora streamování umožňuje uživatelům dotazovat se na posuvná okna příchozích dat. To umožňuje uživatelům odpovídat na otázky typu „Jakých je 10 nejoblíbenějších produktů za poslední hodinu?“ nebo „Jaká je průměrná cena v určité kategorii produktů za posledních 12 hodin?“

Dalším běžným případem použití zpracování proudu je pipeline pracovního postupu distribuovaných událostí. Vzhledem k tomu, že události přicházejí do systému vysokou rychlostí, je zpracování událostí rozděleno do několika fází, z nichž každá musí být správně zpracována v rámci clusteru pro zpracování. Tyto přizpůsobitelné pracovní postupy událostí podporují aplikace pro zpracování složitých událostí (CEP).

Akcelerace Hadoop v paměti. Apache Ignite Accelerator pro Hadoop umožňuje rychlé zpracování dat ve stávajících prostředích Hadoop pomocí nástrojů a technologií, které organizace již používá.

Zrychlení Hadoop zapalování v paměti je založeno na prvním vysoce výkonném systému souborů v paměti se dvěma režimy, který je stoprocentně kompatibilní s Hadoop HDFS a implementací MapReduce optimalizovanou v paměti. HDFS v paměti a MapReduce v paměti, které poskytují až stokrát rychlejší výkon, poskytují snadno použitelná rozšíření pro HDFS na disku a tradiční MapReduce. Tato funkce plug-and-play vyžaduje minimální až žádnou integraci. Funguje s jakoukoli otevřenou nebo komerční verzí Hadoop 1.x nebo Hadoop 2.x, včetně Cloudera, Hortonworks, MapR, Apache, Intel a AWS. Výsledkem je až 100krát rychlejší výkon úloh MapReduce a Hive.

Distribuovaný systém souborů v paměti. Jedinečnou vlastností Apache Ignite je systém souborů Ignite File System (IGFS), což je rozhraní systému souborů s daty v paměti. IGFS poskytuje podobné funkce jako Hadoop HDFS. Zahrnuje schopnost vytvořit plně funkční systém souborů v paměti. IGFS je jádrem Apache Ignite In-Memory Accelerator pro Hadoop.

Data z každého souboru jsou rozdělena na samostatné datové bloky a uložena do mezipaměti. K datům v každém souboru lze přistupovat pomocí standardního rozhraní API pro streamování Java. Pro každou část souboru může vývojář vypočítat spřažení a zpracovat obsah souboru na odpovídajících uzlech, aby nedocházelo ke zbytečnému vytváření sítí.

Unified API. Unified API Apache Ignite podporuje širokou škálu běžných protokolů pro aplikační vrstvu pro přístup k datům. Mezi podporované protokoly patří SQL, Java, C ++, .Net, PHP, MapReduce, Scala, Groovy a Node.js. Ignite podporuje několik protokolů pro připojení klienta ke klastrům Ignite, včetně Ignite Native Clients, REST / HTTP, SSL / TLS a Memcached.SQL.

Pokročilé klastrování. Apache Ignite poskytuje jednu z nejsofistikovanějších technologií klastrování na JVM. Uzly Ignite se mohou navzájem automaticky objevovat, což v případě potřeby pomáhá škálovat cluster bez nutnosti restartovat celý cluster. Vývojáři mohou také využít hybridní cloudovou podporu Ignite, která uživatelům umožňuje navázat spojení mezi soukromými cloudy a veřejnými cloudy, jako jsou AWS nebo Microsoft Azure.

Další funkce. Apache Ignite poskytuje vysoce výkonnou funkci zasílání zpráv v rámci clusteru. Umožňuje uživatelům vyměňovat si data prostřednictvím modelů publikování a odběru a přímých komunikačních modelů point-to-point.

Funkce distribuovaných událostí v Ignite umožňuje aplikacím přijímat oznámení o událostech mezipaměti, ke kterým dochází v prostředí distribuované mřížky. Vývojáři mohou pomocí této funkce dostávat oznámení o provádění vzdálených úkolů nebo jakýchkoli změnách dat mezipaměti v rámci clusteru. Oznámení o událostech lze seskupovat a odesílat v dávkách a v časových intervalech. Dávková oznámení pomáhají dosáhnout vysokého výkonu mezipaměti a nízké latence.

Ignite umožňuje distribuci většiny datových struktur z java.util.concurrent framework. Můžete například přidat do dvojité fronty (java.util.concurrent.BlockingDeque) v jednom uzlu a vyzvednout jej z jiného uzlu. Nebo můžete mít distribuovaný generátor primárního klíče, který by zaručoval jedinečnost na všech uzlech.

Zapalovat distribuované datové struktury zahrnují podporu pro tyto standardní Java API: Souběžná mapa, distribuované fronty a sady, AtomicLong, AtomicSequence, AtomicReference a CountDownLatch.

Klíčové integrace

Apache Spark. Apache Spark je rychlý a univerzální nástroj pro zpracování dat ve velkém měřítku. Ignite a Spark jsou doplňková výpočetní řešení v paměti. V mnoha případech je lze použít společně k dosažení vynikajícího výkonu a funkčnosti.

Apache Spark a Apache Ignite řeší poněkud odlišné případy použití a málokdy soutěží o stejný úkol. Níže uvedená tabulka uvádí některé klíčové rozdíly.

 
 Apache SparkApache Ignite
Uchovávání údajůNačte data pro zpracování z externího úložiště, obvykle založeného na disku, a po dokončení zpracování data zahodí. Žádné úložiště dat.Poskytuje úložiště klíč – hodnota v distribuované paměti (distribuovaná mezipaměť nebo datová mřížka) s ACID transakcemi a možnostmi dotazování SQL. Zachová data v paměti a může zapisovat do podkladové databáze.
OLAP / OLTPU netransakčních dat určených pouze ke čtení, takže se používá pro OLAP. Odolné distribuované datové sady (RDD) Spark nepodporují místní mutaci.Podporuje netransakční (OLAP) užitečné zatížení, stejně jako transakce plně kompatibilní s ACID (OLTP).
Typy datNa základě RDD. Funguje pouze na datových nákladech.Plně podporuje čisté výpočetní užitečné zatížení (HPC / MPP), které může být „bez dat“.

Apache Spark neposkytuje sdílené úložiště, takže ke zpracování musí být do Sparku načtena data z HDFS nebo jiného úložiště na disku. Stav lze předat z úlohy Spark do úlohy pouze uložením zpracovaných dat zpět do externího úložiště. Ignite může sdílet stav Spark přímo v paměti, aniž by ukládal stav na disk.

Jednou z hlavních integrací pro Ignite a Spark je Apache Ignite Shared RDD API. Ignite RDD jsou v podstatě obaly kolem mezipamětí Ignite, které lze nasadit přímo uvnitř provádění úloh Spark. Ignite RDD lze také použít se vzorem mezipaměti, kde jsou klastry Ignite nasazeny odděleně od Sparku, ale stále v paměti. K datům se stále přistupuje pomocí API Spark RDD.

Spark podporuje poměrně bohatou syntaxi SQL, ale nepodporuje indexování dat, takže musí neustále provádět úplné kontroly. Jiskrové dotazy mohou u středně malých datových sad trvat několik minut. Ignite podporuje indexy SQL, což má za následek mnohem rychlejší dotazy, takže použití Sparku s Ignite může zrychlit Spark SQL více než 1000krát. Sada výsledků vrácená Ignite Shared RDDs také odpovídá rozhraní Spark Dataframe API, takže ji lze dále analyzovat pomocí standardních datových rámců Spark. Spark i Ignite se nativně integrují s Apache YARN a Apache Mesos, takže je snazší je používat společně.

Při práci se soubory místo s RDD je stále možné sdílet stav mezi úlohami Spark a aplikacemi pomocí systému souborů Ignite In-Memory File System (IGFS). IGFS implementuje Hadoop FileSystem API a lze jej nasadit jako nativní souborový systém Hadoop, přesně jako HDFS. Zapněte nativně zástrčky do jakéhokoli prostředí Hadoop nebo Spark. IGFS lze použít s nulovými změnami kódu způsobem plug-and-play.

Apache Cassandra. Apache Cassandra může sloužit jako vysoce výkonné řešení pro strukturované dotazy. Ale data v Cassandře by měla být modelována tak, aby každý předdefinovaný dotaz vedl k získání jednoho řádku. Před modelováním dat tedy musíte vědět, jaké dotazy budou požadovány.

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