Disponibile il sistema di calcolo distribuito Apache Storm 2.0

Ho visto la luce rilascio significativo di un sistema di elaborazione di eventi distribuito Apache Tempesta 2.0, notevole per il suo passaggio a una nuova architettura implementata in Java, invece del linguaggio Clojure utilizzato in precedenza.

Il progetto consente di organizzare l'elaborazione garantita di vari eventi in tempo reale. Ad esempio, Storm può essere utilizzato per analizzare flussi di dati in tempo reale, eseguire attività di apprendimento automatico, organizzare l'elaborazione continua, implementare RPC, ETL, ecc. Il sistema supporta il clustering, la creazione di configurazioni tolleranti agli errori, la modalità di elaborazione dei dati garantita e ha prestazioni elevate, sufficienti per elaborare più di un milione di richieste al secondo su un nodo del cluster.

È supportata l'integrazione con vari sistemi di elaborazione delle code e tecnologie di database. L'architettura Storm prevede la ricezione e l'elaborazione di flussi di dati non strutturati e costantemente aggiornati utilizzando processori complessi arbitrari con la capacità di partizionamento tra diverse fasi di calcolo. Il progetto è stato consegnato alla comunità Apache dopo che Twitter ha acquisito BackType, la società che originariamente aveva sviluppato il framework. In pratica, Storm è stato utilizzato in BackType per analizzare il riflesso degli eventi nei microblog, confrontando al volo i nuovi tweet e i link in essi utilizzati (ad esempio, è stato valutato come i link esterni o gli annunci pubblicati su Twitter venivano ritrasmessi da altri partecipanti ).

La funzionalità di Storm è paragonata alla piattaforma Hadoop, con la differenza fondamentale che i dati non vengono archiviati in un magazzino, ma vengono acquisiti esternamente ed elaborati in tempo reale. Storm non ha un livello di archiviazione integrato e la query analitica inizia ad essere applicata ai dati in ingresso fino a quando non viene cancellata (mentre Hadoop utilizza lavori MapReduce a tempo finito, Storm utilizza l'idea di "topologie" in esecuzione continua). L'esecuzione dei gestori può essere distribuita su più server: Storm parallelizza automaticamente il lavoro con thread su diversi nodi del cluster.

Il sistema è stato originariamente scritto in Clojure e funziona all'interno della macchina virtuale JVM. La Apache Foundation ha lanciato un'iniziativa per migrare Storm verso un nuovo kernel scritto in Java, i cui risultati sono proposti nel rilascio di Apache Storm 2.0. Tutti i componenti di base della piattaforma vengono riscritti in Java. Il supporto per i gestori di scrittura in Clojure è stato mantenuto, ma ora viene offerto sotto forma di associazioni. Storm 2.0.0 richiede Java 8. Il modello di elaborazione multi-thread è stato completamente riprogettato, consentendo per ottenere un notevole aumento delle prestazioni (per alcune topologie i ritardi sono stati ridotti del 50-80%).

Disponibile il sistema di calcolo distribuito Apache Storm 2.0

La nuova versione offre anche una nuova API Stream tipizzata che consente di definire gestori utilizzando operazioni funzionali in stile programmazione. La nuova API è implementata sopra l'API di base standard e supporta l'unione automatica delle operazioni per ottimizzarne l'elaborazione. L'API Windowing per le operazioni delle finestre ha aggiunto il supporto per il salvataggio e il ripristino dello stato nel backend.

Supporto per prendere in considerazione risorse aggiuntive quando si prendono decisioni non limitate a
CPU e memoria, come impostazioni di rete e GPU. Sono stati apportati numerosi miglioramenti per garantire l'integrazione con la piattaforma Kafka. Il sistema di controllo degli accessi è stato ampliato per includere la possibilità di creare gruppi di amministratori e delegare token. Aggiunti miglioramenti relativi al supporto SQL e metriche. Sono apparsi nuovi comandi nell'interfaccia dell'amministratore per il debug dello stato del cluster.

Aree di applicazione di Storm:

  • Elaborazione di flussi di nuovi dati o aggiornamenti di database in tempo reale;
  • Elaborazione continua: Storm può eseguire query continue ed elaborare flussi continui, fornendo risultati di elaborazione al client in tempo reale.
  • RPC (Distributed Remote Procedure Call): Storm può essere utilizzato per fornire l'esecuzione parallela di query ad uso intensivo di risorse. Un lavoro ("topologia") in Storm è una funzione distribuita tra i nodi che attende l'arrivo dei messaggi che devono essere elaborati. Dopo aver ricevuto un messaggio, la funzione lo elabora nel contesto locale e restituisce il risultato. Un esempio di utilizzo di RPC distribuito potrebbe essere l'elaborazione delle query di ricerca in parallelo o l'esecuzione di operazioni su un insieme di insiemi di grandi dimensioni.

Caratteristiche della tempesta:

  • Un semplice modello di programmazione che semplifica notevolmente l'elaborazione dei dati in tempo reale;
  • Supporto per qualsiasi linguaggio di programmazione. Sono presenti moduli per Java, Ruby e Python, l'adattamento per altri linguaggi non è difficile grazie ad un protocollo di comunicazione molto semplice, che richiede circa 100 righe di codice per essere supportato;
  • Tolleranza agli errori: per eseguire un processo di elaborazione dati, è necessario generare un file jar con codice. Storm distribuirà in modo indipendente questo file jar tra i nodi del cluster, collegherà i gestori ad esso associati e organizzerà il monitoraggio. Una volta completato il lavoro, il codice verrà automaticamente disabilitato su tutti i nodi;
  • Scalabilità orizzontale. Tutti i calcoli vengono eseguiti in modalità parallela; all'aumentare del carico è sufficiente connettere semplicemente nuovi nodi al cluster;
  • Affidabilità. Storm garantisce che ogni messaggio in arrivo venga completamente elaborato almeno una volta. Il messaggio verrà elaborato una volta solo se non si verificano errori durante il passaggio attraverso tutti i gestori; se si verificano problemi, verranno ripetuti i tentativi di elaborazione non riusciti.
  • Velocità. Il codice di Storm è scritto pensando alle prestazioni elevate e utilizza il sistema per la messaggistica asincrona veloce ZeroMQ.

Fonte: opennet.ru

Aggiungi un commento