Apache Storm 2.0 distribuerat datorsystem tillgängligt

Såg ljuset betydande release av ett distribuerat händelsebearbetningssystem Apache Storm 2.0, känd för sin övergång till en ny arkitektur implementerad i Java, istället för det tidigare använda Clojure-språket.

Projektet låter dig organisera garanterad bearbetning av olika händelser i realtid. Storm kan till exempel användas för att analysera dataströmmar i realtid, köra maskininlärningsuppgifter, organisera kontinuerlig beräkning, implementera RPC, ETL, etc. Systemet stöder klustring, skapande av feltoleranta konfigurationer, garanterat databehandlingsläge och har hög prestanda, tillräckligt för att behandla mer än en miljon förfrågningar per sekund på en klusternod.

Integration med olika köbehandlingssystem och databastekniker stöds. Storm-arkitekturen innebär att ta emot och bearbeta ostrukturerade, ständigt uppdaterade dataströmmar med hjälp av godtyckliga komplexa processorer med möjlighet att dela upp mellan olika beräkningsstadier. Projektet överlämnades till Apache-communityt efter att Twitter förvärvat BackType, företaget som ursprungligen utvecklade ramverket. I praktiken användes Storm i BackType för att analysera reflektionen av händelser i mikrobloggar, genom att i farten jämföra nya tweets och länkarna som användes i dem (till exempel bedömdes det hur externa länkar eller meddelanden publicerade på Twitter återsändes av andra deltagare ).

Storms funktionalitet jämförs med Hadoop-plattformen, med den viktigaste skillnaden är att data inte lagras i ett lager, utan tas in externt och bearbetas i realtid. Storm har inget inbyggt lagringsskikt och den analytiska frågan börjar tillämpas på inkommande data tills den avbryts (medan Hadoop använder ändliga MapReduce-jobb, använder Storm idén om att kontinuerligt köra "topologier"). Exekveringen av hanterare kan fördelas över flera servrar - Storm parallelliserar automatiskt arbete med trådar på olika klusternoder.

Systemet skrevs ursprungligen i Clojure och körs inuti den virtuella JVM-maskinen. Apache Foundation har lanserat ett initiativ för att migrera Storm till en ny kärna skriven i Java, vars resultat föreslås i utgåvan av Apache Storm 2.0. Alla grundläggande komponenter i plattformen är omskrivna i Java. Stödet för skrivhandläggare i Clojure har behållits, men erbjuds nu i form av bindningar. Storm 2.0.0 kräver Java 8. Den flertrådiga bearbetningsmodellen har gjorts om helt, vilket gör att uppnå en märkbar ökning av prestanda (för vissa topologier reducerades förseningarna med 50-80%).

Apache Storm 2.0 distribuerat datorsystem tillgängligt

Den nya versionen erbjuder också en ny typ av Streams API som låter dig definiera hanterare med hjälp av funktionella programmeringsliknande operationer. Det nya API:et är implementerat ovanpå standardbas-API:et och stöder automatisk sammanslagning av operationer för att optimera deras bearbetning. Windowing API för fönsteroperationer har lagt till stöd för att spara och återställa tillstånd i backend.

Stöd för att ta hänsyn till ytterligare resurser vid beslut inte begränsat till
CPU och minne, såsom nätverks- och GPU-inställningar. Ett stort antal förbättringar har gjorts för att säkerställa integration med plattformen kafka. Åtkomstkontrollsystemet har utökats till att omfatta möjligheten att skapa administratörsgrupper och delegera tokens. Lade till förbättringar relaterade till SQL och statistikstöd. Nya kommandon har dykt upp i administratörsgränssnittet för felsökning av klustertillståndet.

Användningsområden för Storm:

  • Bearbeta strömmar av ny data eller databasuppdateringar i realtid;
  • Kontinuerlig beräkning: Storm kan köra kontinuerliga frågor och bearbeta kontinuerliga strömmar och leverera bearbetningsresultat till klienten i realtid.
  • Distributed Remote Procedure Call (RPC): Storm kan användas för att tillhandahålla parallell exekvering av resurskrävande frågor. Ett jobb ("topologi") i Storm är en funktion fördelad över noder som väntar på att meddelanden ska komma fram som behöver bearbetas. Efter att ha tagit emot ett meddelande bearbetar funktionen det i det lokala sammanhanget och returnerar resultatet. Ett exempel på att använda distribuerad RPC skulle vara att behandla sökfrågor parallellt eller utföra operationer på en stor uppsättning uppsättningar.

Stormfunktioner:

  • En enkel programmeringsmodell som avsevärt förenklar databehandling i realtid;
  • Stöd för alla programmeringsspråk. Moduler finns tillgängliga för Java, Ruby och Python, anpassning för andra språk är lätt tack vare ett mycket enkelt kommunikationsprotokoll som kräver cirka 100 rader kod för att stödja;
  • Feltolerans: för att köra ett databearbetningsjobb måste du generera en jar-fil med kod. Storm kommer självständigt att distribuera denna jar-fil över klusternoderna, ansluta hanterarna som är associerade med den och organisera övervakning. När jobbet är klart kommer koden automatiskt att inaktiveras på alla noder;
  • Horisontell skalbarhet. Alla beräkningar utförs i parallellt läge; när belastningen ökar räcker det att helt enkelt ansluta nya noder till klustret;
  • Pålitlighet. Storm säkerställer att varje inkommande meddelande behandlas fullständigt minst en gång. Meddelandet kommer endast att behandlas en gång om det inte finns några fel när alla hanterare passeras; om problem uppstår kommer misslyckade behandlingsförsök att upprepas.
  • Fart. Storms kod är skriven med hög prestanda i åtanke och använder systemet för snabba asynkrona meddelanden ZeroMQ.

Källa: opennet.ru

Lägg en kommentar