K dispozici je distribuovaný výpočetní systém Apache Storm 2.0

viděl světlo významné vydání systému distribuovaného zpracování událostí Apache Storm 2.0, pozoruhodný svým přechodem na novou architekturu implementovanou v Javě namísto dříve používaného jazyka Clojure.

Projekt umožňuje organizovat garantované zpracování různých událostí v reálném čase. Storm lze například použít k analýze datových toků v reálném čase, spouštění úloh strojového učení, organizaci nepřetržitého počítání, implementaci RPC, ETL atd. Systém podporuje shlukování, vytváření konfigurací odolných proti chybám, garantovaný režim zpracování dat a má vysoký výkon, který je dostatečný pro zpracování více než milionu požadavků za sekundu na jednom uzlu clusteru.

Je podporována integrace s různými systémy zpracování front a databázovými technologiemi. Architektura Storm zahrnuje příjem a zpracování nestrukturovaných, neustále aktualizovaných datových toků pomocí libovolných složitých procesorů se schopností rozdělovat mezi různé fáze výpočtů. Projekt byl předán komunitě Apache poté, co Twitter získal BackType, společnost, která původně vyvinula rámec. V praxi byl Storm v BackType použit k analýze odrazu událostí v mikroblozích, a to tak, že se za běhu porovnávaly nové tweety a odkazy v nich použité (například bylo hodnoceno, jak byly externí odkazy nebo oznámení publikovaná na Twitteru znovu vysílána ostatními účastníky ).

Funkcionalita Stormu je přirovnávána k platformě Hadoop, přičemž zásadní rozdíl je v tom, že data nejsou uložena ve skladu, ale jsou přijímána externě a zpracovávána v reálném čase. Storm nemá vestavěnou vrstvu úložiště a analytický dotaz začíná být aplikován na příchozí data, dokud není zrušen (zatímco Hadoop používá úlohy MapReduce s omezeným časem, Storm využívá myšlenku nepřetržitého spouštění „topologií“). Spouštění handlerů může být distribuováno na několik serverů – Storm automaticky paralelizuje práci s vlákny na různých uzlech clusteru.

Systém byl původně napsán v Clojure a běží uvnitř virtuálního stroje JVM. Nadace Apache zahájila iniciativu k migraci Stormu na nové jádro napsané v Javě, jejíž výsledky jsou navrženy ve vydání Apache Storm 2.0. Všechny základní komponenty platformy jsou přepsány v Javě. Podpora pro handlery psaní v Clojure zůstala zachována, ale nyní je nabízena ve formě vazeb. Storm 2.0.0 vyžaduje Java 8. Model vícevláknového zpracování byl zcela přepracován, což umožňuje dosáhnout znatelné zvýšení výkonu (u některých topologií byla zpoždění snížena o 50-80 %).

K dispozici je distribuovaný výpočetní systém Apache Storm 2.0

Nová verze také nabízí nové typované Streams API, které umožňuje definovat handlery pomocí funkčních operací ve stylu programování. Nové API je implementováno nad standardní základní API a podporuje automatické slučování operací pro optimalizaci jejich zpracování. Windowing API pro operace s okny přidalo podporu pro ukládání a obnovu stavu v backendu.

Podpora pro zohlednění dodatečných zdrojů při rozhodování neomezená na
CPU a paměť, jako je nastavení sítě a GPU. Pro zajištění integrace s platformou bylo provedeno velké množství vylepšení Kafka. Systém řízení přístupu byl rozšířen o možnost vytvářet skupiny administrátorů a delegovat tokeny. Přidána vylepšení týkající se podpory SQL a metrik. V administrátorském rozhraní se objevily nové příkazy pro ladění stavu clusteru.

Oblasti použití pro Storm:

  • Zpracování proudů nových dat nebo aktualizací databází v reálném čase;
  • Continuous Computing: Storm může spouštět nepřetržité dotazy a zpracovávat nepřetržité toky, přičemž výsledky zpracování doručuje klientovi v reálném čase.
  • Distribuované vzdálené volání procedur (RPC): Storm lze použít k paralelnímu provádění dotazů náročných na zdroje. Úloha („topologie“) ve Stormu je funkce distribuovaná mezi uzly, která čeká na doručení zpráv, které je třeba zpracovat. Po přijetí zprávy ji funkce zpracuje v místním kontextu a vrátí výsledek. Příkladem použití distribuovaného RPC by bylo paralelní zpracování vyhledávacích dotazů nebo provádění operací na velké sadě sad.

Vlastnosti Storm:

  • Jednoduchý programovací model, který výrazně zjednodušuje zpracování dat v reálném čase;
  • Podpora všech programovacích jazyků. Moduly jsou k dispozici pro Javu, Ruby a Python, adaptace pro jiné jazyky je snadná díky velmi jednoduchému komunikačnímu protokolu, který vyžaduje podporu asi 100 řádků kódu;
  • Odolnost proti chybám: Chcete-li spustit úlohu zpracování dat, musíte vygenerovat soubor jar s kódem. Storm bude tento soubor jar nezávisle distribuovat mezi uzly clusteru, propojí s ním spojené handlery a zorganizuje monitorování. Po dokončení úlohy bude kód automaticky deaktivován na všech uzlech;
  • Horizontální škálovatelnost. Všechny výpočty jsou prováděny v paralelním režimu, s rostoucí zátěží stačí do clusteru jednoduše připojit nové uzly;
  • Spolehlivost. Storm zajišťuje, že každá příchozí zpráva je alespoň jednou plně zpracována. Zpráva bude zpracována pouze jednou, pokud se při průchodu všemi handlery nevyskytnou chyby, v případě problémů se neúspěšné pokusy o zpracování opakují.
  • Rychlost. Kód Stormu je napsán s ohledem na vysoký výkon a využívá systém pro rychlé asynchronní zasílání zpráv ZeroMQ.

Zdroj: opennet.ru

Přidat komentář