Dostupný systém distribuovaných výpočtů Apache Storm 2.0

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

Projekt umožňuje organizovat zaručené zpracování různých událostí v reálném čase. Například, Storm lze použít pro analýzu datových toků v reálném čase, provádění úloh pro strojové učení, organizaci nepřetržitých výpočtů, realizaci RPC, ETL atd. Systém podporuje clustering, vytváření redundantních konfigurací, režim zaručeného zpracování dat a vykazuje vysoký výkon, dostatečný pro zpracování více než milionu požadavků za sekundu na jednom uzlu clusteru.

Podporuje integraci s různými systémy zpracování front a databázovými technologiemi. Architektura Storm předpokládá příjem a zpracování nestrukturovaných neustále aktualizovaných datových toků za použití libovolných složitých zpracovatelů s možností sekvenování mezi různými fázemi výpočtů. Projekt byl předán komunitě Apache po akvizici společnosti BackType Twitterem, která původně framework vyvinula. V praxi byl Storm použit ve společnosti BackType pro analýzu událostí v mikrobloguech, tím, že porovnával v reálném čase nové tweety a v nich použité odkazy (například byla prováděna hodnocení, jak externí odkazy nebo zveřejňované oznámení na Twitteru jsou retweetovány jinými uživateli).

Funkčnost Storm je srovnávána s platformou Hadoop, přičemž klíčovým rozdílem je, že data nejsou umístěna ve skladu, ale přicházejí z vnějšku a zpracovávají se v reálném čase. V Storm není vestavěná vrstva pro organizaci úložiště a analytický dotaz se začíná aplikovat na přicházející data, dokud není zrušen (pokud jsou v Hadoopu používány časově náročné MapReduce úlohy, v Storm je použita myšlenka neustále prováděných „topologií“). Provádění zpracovatelů může být rozděleno na několik serverů — Storm automaticky paralelizuje práci s toky na různé uzly clusteru.

Původně byla systém napsán v jazyce Clojure a běží uvnitř virtuální stroje JVM. V rámci projektu Apache byla spuštěna iniciativa na převod Storm na nové jádro, napsané v Javě, jejíž výsledky byly uvedeny ve vydání Apache Storm 2.0. Všechny základní komponenty platformy byly přepsány v Javě. Podpora psaní zpracovatelů v Clojure byla zachována, ale nyní je nabízena ve formě bindingů. Pro provoz Storm 2.0.0 je vyžadována Java 8. Model zpracování s více vlákny byl kompletně přepracován, což umožnilo a také pomocí atributu packed. Vzhledem k tomu, že navíc přispívá k optimalizaci místa zabraného strukturou, považuji tuto metodu za výhodnější, ačkoli výrazné zvýšení výkonu (u některých topologií se zpoždění zkrátila o 50-80%).

Dostupný systém distribuovaných výpočtů Apache Storm 2.0

V nové verzi je rovněž uveden nový typovaný API Streams, který umožňuje definovat zpracovatele pomocí operací ve stylu funkčního programování. Nový API je realizován na vrcholu standardního základního API a podporuje automatické slučování operací pro optimalizaci jejich zpracování. V API Windowing pro okenní operace byla přidána podpora pro ukládání a obnovu stavu na backendu.

Do plánovače spuštění zpracovatelů byla přidána podpora zohledňování dalších zdrojů při rozhodování, které se neomezují
na CPU a paměť, jako jsou síťové parametry a GPU. Bylo provedeno mnoho vylepšení týkajících se zajištění integrace s platformou Kafka. Byla rozšířena systém řízení přístupu, který nyní umožňuje vytváření skupin administrátorů a delegaci tokenů. Byla 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í Storm:

  • Zpracování streamů nových dat nebo aktualizací databáze v reálném čase;
  • Nepřetržité výpočty: Storm může provádět nepřetržité dotazy a zpracovávat nepřetržité toky, posílajíce výsledky zpracování klientovi v reálném čase.
  • Distribuované volání procedur (RPC): Storm může být použit pro zajištění paralelismu při provádění náročných dotazů. Úkol („topologie“) ve Stormu představuje distribuovanou funkci napříč uzly, která čeká na příchozí zprávy k zpracování. Po přijetí zprávy funkce zpracovává ji v místním kontextu a vrací výsledek. Příkladem použití distribuovaného RPC může být paralelní zpracování vyhledávacích dotazů nebo provádění operací nad velkým množstvím množin.

Vlastnosti Stormu:

  • Jednoduchý model programování, který výrazně usnadňuje zpracování dat v reálném čase;
  • Podpora jakýchkoliv programovacích jazyků. Existují moduly pro Java, Ruby a Python, přizpůsobení pro jiné jazyky nepředstavuje problém díky velmi jednoduchému komunikačnímu protokolu, jehož zavedení vyžaduje přibližně 100 řádků kódu;
  • Odolnost proti chybám: pro spuštění úkolu zpracování dat je třeba vytvořit jar soubor s kódem. Storm automaticky rozšíří tento jar soubor po uzlech clustru, připojí související zpracovatele a zorganizuje monitoring. Po dokončení úkolu se kód automaticky na všech uzlech vypne;
  • Horizontální škálovatelnost. Všechny výpočty probíhají paralelně, při zvyšování zátěže stačí k clustru jednoduše připojit nové uzly;
  • Spolehlivost. Storm zaručuje, že každá přijatá zpráva bude zpracována alespoň jednou. Zpráva bude zpracována pouze jednou, pokud nenastanou chyby během zpracování všemi zpracovateli; v případě problémů budou neúspěšné pokusy o zpracování opakovány.
  • Rychlost. Kód Stormu je napsán s ohledem na vysoký výkon a využívá rychlý asynchronní systém pro výměnu zpráv. ZeroMQ.

Zdroj: opennet.ru

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster