Sistem de calcul distribuit Apache Storm 2.0 disponibil

Am văzut lumina lansare semnificativă a unui sistem distribuit de procesare a evenimentelor Apache Storm 2.0, remarcabil prin tranziția la o nouă arhitectură implementată în Java, în locul limbajului Clojure folosit anterior.

Proiectul vă permite să organizați procesarea garantată a diferitelor evenimente în timp real. De exemplu, Storm poate fi folosit pentru a analiza fluxurile de date în timp real, pentru a rula sarcini de învățare automată, pentru a organiza calculul continuu, pentru a implementa RPC, ETL etc. Sistemul acceptă clustering, crearea de configurații tolerante la erori, mod garantat de procesare a datelor și are performanțe ridicate, suficiente pentru a procesa mai mult de un milion de solicitări pe secundă pe un singur nod de cluster.

Integrarea cu diverse sisteme de procesare a cozilor și tehnologii de baze de date este acceptată. Arhitectura Storm implică primirea și procesarea fluxurilor de date nestructurate, actualizate în mod constant, folosind procesoare complexe arbitrare, cu capacitatea de a împărți diferite etape de calcul. Proiectul a fost predat comunității Apache după ce Twitter a achiziționat BackType, compania care a dezvoltat inițial cadrul. În practică, Storm a fost folosită în BackType pentru a analiza reflectarea evenimentelor în microbloguri, comparând din mers noile tweet-uri și legăturile folosite în acestea (de exemplu, s-a evaluat modul în care linkurile externe sau anunțurile publicate pe Twitter erau redifuzate de către alți participanți ).

Funcționalitatea Storm este comparată cu platforma Hadoop, diferența cheie fiind că datele nu sunt stocate într-un depozit, ci sunt ingerate extern și procesate în timp real. Storm nu are un strat de stocare încorporat și interogarea analitică începe să fie aplicată datelor primite până când este anulată (în timp ce Hadoop utilizează joburi MapReduce cu durată finită, Storm folosește ideea de a rula în mod continuu „topologii”). Execuția handlerelor poate fi distribuită pe mai multe servere - Storm paralelizează automat lucrul cu fire de execuție pe diferite noduri de cluster.

Sistemul a fost scris inițial în Clojure și rulează în interiorul mașinii virtuale JVM. Fundația Apache a lansat o inițiativă de migrare a Storm către un nou nucleu scris în Java, ale cărui rezultate sunt propuse în lansarea Apache Storm 2.0. Toate componentele de bază ale platformei sunt rescrise în Java. S-a păstrat suportul pentru manipulatorii de scriere în Clojure, dar acum este oferit sub formă de legături. Storm 2.0.0 necesită Java 8. Modelul de procesare multi-threaded a fost complet reproiectat, permițând obține o creștere vizibilă a performanței (pentru unele topologii, întârzierile au fost reduse cu 50-80%).

Sistem de calcul distribuit Apache Storm 2.0 disponibil

Noua versiune oferă, de asemenea, un nou tip Streams API care vă permite să definiți handlere folosind operațiuni funcționale în stil de programare. Noul API este implementat peste API-ul de bază standard și acceptă fuzionarea automată a operațiunilor pentru a optimiza procesarea acestora. API-ul Windowing pentru operațiunile cu ferestre a adăugat suport pentru salvarea și restabilirea stării în backend.

Sprijin pentru luarea în considerare a resurselor suplimentare atunci când luarea deciziilor nu se limitează la
CPU și memorie, cum ar fi setările de rețea și GPU. Au fost aduse un număr mare de îmbunătățiri pentru a asigura integrarea cu platforma Kafka. Sistemul de control al accesului a fost extins pentru a include posibilitatea de a crea grupuri de administratori și token-uri de delegat. S-au adăugat îmbunătățiri legate de suportul pentru SQL și metrici. Au apărut comenzi noi în interfața de administrator pentru depanarea stării clusterului.

Domenii de aplicare pentru Storm:

  • Procesarea fluxurilor de date noi sau actualizări de baze de date în timp real;
  • Calcul continuu: Storm poate rula interogări continue și poate procesa fluxuri continue, furnizând rezultate de procesare către client în timp real.
  • Apel de procedură la distanță distribuită (RPC): Storm poate fi utilizat pentru a furniza execuția paralelă a interogărilor care necesită mult resurse. Un job („topologie”) în Storm este o funcție distribuită între noduri care așteaptă sosirea mesajelor care trebuie procesate. După primirea unui mesaj, funcția îl procesează în context local și returnează rezultatul. Un exemplu de utilizare a RPC distribuit ar fi procesarea interogărilor de căutare în paralel sau efectuarea de operații pe un set mare de seturi.

Caracteristici Storm:

  • Un model de programare simplu care simplifică foarte mult procesarea datelor în timp real;
  • Suport pentru orice limbaj de programare. Modulele sunt disponibile pentru Java, Ruby și Python, adaptarea pentru alte limbi este ușoară datorită unui protocol de comunicare foarte simplu care necesită aproximativ 100 de linii de cod pentru a fi susținut;
  • Toleranță la erori: pentru a rula o lucrare de procesare a datelor, trebuie să generați un fișier jar cu cod. Storm va distribui în mod independent acest fișier jar în nodurile clusterului, va conecta gestionatorii asociați cu acesta și va organiza monitorizarea. Când lucrarea se finalizează, codul va fi dezactivat automat pe toate nodurile;
  • Scalabilitate orizontală. Toate calculele sunt efectuate în mod paralel; pe măsură ce sarcina crește, este suficient să conectați pur și simplu noduri noi la cluster;
  • Fiabilitate. Storm se asigură că fiecare mesaj primit este procesat complet cel puțin o dată. Mesajul va fi procesat o singură dată dacă nu există erori la trecerea prin toți gestionanții; dacă apar probleme, atunci încercările de procesare nereușite vor fi repetate.
  • Viteză. Codul Storm este scris având în vedere performanța ridicată și folosește sistemul pentru mesagerie asincronă rapidă ZeroMQ.

Sursa: opennet.ru

Adauga un comentariu