Apache Storm 2.0 gedistribueerd computersysteem beschikbaar

Zag het licht belangrijke release van een gedistribueerd gebeurtenisverwerkingssysteem Apache Storm 2.0, opmerkelijk vanwege de overgang naar een nieuwe architectuur geïmplementeerd in Java, in plaats van de eerder gebruikte Clojure-taal.

Met het project kunt u een gegarandeerde verwerking van verschillende gebeurtenissen in realtime organiseren. Storm kan bijvoorbeeld worden gebruikt om datastromen in realtime te analyseren, machine learning-taken uit te voeren, continu computergebruik te organiseren, RPC, ETL te implementeren, enz. Het systeem ondersteunt clustering, het creëren van fouttolerante configuraties, een gegarandeerde gegevensverwerkingsmodus en heeft hoge prestaties, voldoende om meer dan een miljoen verzoeken per seconde op één clusterknooppunt te verwerken.

Integratie met verschillende wachtrijverwerkingssystemen en databasetechnologieën wordt ondersteund. De Storm-architectuur omvat het ontvangen en verwerken van ongestructureerde, voortdurend bijgewerkte datastromen met behulp van willekeurige complexe processors met de mogelijkheid om te verdelen tussen verschillende berekeningsfasen. Het project werd overgedragen aan de Apache-gemeenschap nadat Twitter BackType had overgenomen, het bedrijf dat het raamwerk oorspronkelijk ontwikkelde. In de praktijk werd Storm in BackType gebruikt om de weerspiegeling van gebeurtenissen in microblogs te analyseren, door nieuwe tweets en de daarin gebruikte links direct te vergelijken (er werd bijvoorbeeld beoordeeld hoe externe links of aankondigingen die op Twitter waren gepubliceerd, opnieuw werden uitgezonden door andere deelnemers ).

De functionaliteit van Storm wordt vergeleken met het Hadoop-platform, met als belangrijkste verschil dat de gegevens niet in een magazijn worden opgeslagen, maar extern worden opgenomen en in realtime worden verwerkt. Storm heeft geen ingebouwde opslaglaag en de analytische query wordt toegepast op binnenkomende gegevens totdat deze wordt geannuleerd (terwijl Hadoop MapReduce-taken met beperkte tijd gebruikt, gebruikt Storm het idee van het continu draaien van “topologieën”). De uitvoering van handlers kan over verschillende servers worden verdeeld - Storm parallelliseert het werk automatisch met threads op verschillende clusterknooppunten.

Het systeem is oorspronkelijk geschreven in Clojure en draait in de virtuele JVM-machine. De Apache Foundation heeft een initiatief gelanceerd om Storm te migreren naar een nieuwe kernel geschreven in Java, waarvan de resultaten worden voorgesteld in de release van Apache Storm 2.0. Alle basiscomponenten van het platform zijn herschreven in Java. Ondersteuning voor schrijfhandlers in Clojure is behouden, maar wordt nu aangeboden in de vorm van bindingen. Storm 2.0.0 vereist Java 8. Het multi-threaded verwerkingsmodel is volledig opnieuw ontworpen, waardoor bereiken een merkbare prestatieverbetering (voor sommige topologieën werden de vertragingen met 50-80%) verminderd.

Apache Storm 2.0 gedistribueerd computersysteem beschikbaar

De nieuwe versie biedt ook een nieuw getypte Streams API waarmee u handlers kunt definiëren met behulp van functionele programmeerbewerkingen. De nieuwe API wordt bovenop de standaard basis-API geïmplementeerd en ondersteunt het automatisch samenvoegen van bewerkingen om de verwerking ervan te optimaliseren. De Windowing API voor vensterbewerkingen heeft ondersteuning toegevoegd voor het opslaan en herstellen van de status in de backend.

Ondersteuning voor het rekening houden met extra middelen bij het nemen van beslissingen, niet beperkt tot
CPU en geheugen, zoals netwerk- en GPU-instellingen. Er zijn een groot aantal verbeteringen aangebracht om de integratie met het platform te garanderen Kafka. Het toegangscontrolesysteem is uitgebreid met de mogelijkheid om beheerdersgroepen aan te maken en tokens te delegeren. Verbeteringen toegevoegd met betrekking tot ondersteuning voor SQL en metrische gegevens. Er zijn nieuwe opdrachten verschenen in de beheerdersinterface voor het opsporen van fouten in de clusterstatus.

Toepassingsgebieden voor Storm:

  • Het in realtime verwerken van stromen nieuwe gegevens of database-updates;
  • Continuous Computing: Storm kan continue queries uitvoeren en continue stromen verwerken, waardoor verwerkingsresultaten in realtime aan de klant worden geleverd.
  • Distributed Remote Procedure Call (RPC): Storm kan worden gebruikt om parallelle uitvoering van resource-intensieve queries mogelijk te maken. Een taak (“topologie”) in Storm is een functie die wordt gedistribueerd over knooppunten en wacht op berichten die moeten worden verwerkt. Na ontvangst van een bericht verwerkt de functie dit in de lokale context en retourneert het resultaat. Een voorbeeld van het gebruik van gedistribueerde RPC is het parallel verwerken van zoekopdrachten of het uitvoeren van bewerkingen op een groot aantal sets.

Storm-functies:

  • Een eenvoudig programmeermodel dat de realtime gegevensverwerking aanzienlijk vereenvoudigt;
  • Ondersteuning voor alle programmeertalen. Er zijn modules beschikbaar voor Java, Ruby en Python, aanpassing voor andere talen is eenvoudig dankzij een zeer eenvoudig communicatieprotocol dat ongeveer 100 regels code vereist om te ondersteunen;
  • Fouttolerantie: om een ​​gegevensverwerkingstaak uit te voeren, moet u een jar-bestand met code genereren. Storm zal dit jar-bestand onafhankelijk distribueren over de clusterknooppunten, de bijbehorende handlers verbinden en de monitoring organiseren. Wanneer de taak is voltooid, wordt de code automatisch uitgeschakeld op alle knooppunten;
  • Horizontale schaalbaarheid. Alle berekeningen worden in parallelle modus uitgevoerd; naarmate de belasting toeneemt, volstaat het om eenvoudigweg nieuwe knooppunten op het cluster aan te sluiten;
  • Betrouwbaarheid. Storm zorgt ervoor dat elk binnenkomend bericht minimaal één keer volledig wordt verwerkt. Het bericht wordt slechts één keer verwerkt als er geen fouten optreden bij het doorlopen van alle handlers; als zich problemen voordoen, worden mislukte verwerkingspogingen herhaald.
  • Snelheid. De code van Storm is geschreven met het oog op hoge prestaties en gebruikt het systeem voor snelle asynchrone berichtenuitwisseling NulMQ.

Bron: opennet.ru

Voeg een reactie