È disponibile il sistema di computing distribuito Apache Storm 2.0

È stato introdotto significativa release del sistema di elaborazione degli eventi distribuiti Apache Storm 2.0, un notevole passaggio a una nuova architettura, realizzata in Java, invece del precedente linguaggio Clojure.

Il progetto consente di organizzare un'elaborazione garantita di vari eventi in tempo reale. Ad esempio, Storm può essere utilizzato per l'analisi di flussi di dati in tempo reale, per l'esecuzione di task di machine learning, per l'organizzazione di calcoli continui, per implementare RPC, ETL, ecc. Il sistema supporta il clustering, la creazione di configurazioni ad alta disponibilità, una modalità di elaborazione dati garantita e offre elevate prestazioni, sufficienti per gestire oltre un milione di richieste al secondo su un singolo nodo del cluster.

È supportata l'integrazione con vari sistemi di gestione delle code e tecnologie di database. L'architettura di Storm è progettata per ricevere e elaborare flussi di dati non strutturati costantemente aggiornati, utilizzando complessi elaboratori adattabili con capacità di partizionamento tra diverse fasi di calcolo. Il progetto è stato trasferito alla comunità Apache dopo l'acquisizione della società BackType da parte di Twitter, che aveva originariamente sviluppato il framework. In pratica, Storm è stato utilizzato in BackType per analizzare le reazioni agli eventi nei microblog, confrontando in tempo reale i nuovi tweet e i link utilizzati in essi (ad esempio, si valutava come i link esterni o gli annunci pubblicati su Twitter venissero ritrasmessi da altri partecipanti).

La funzionalità di Storm è paragonabile a quella della piattaforma Hadoop, ma la differenza principale è che i dati non sono memorizzati, ma provengono dall'esterno e vengono elaborati in tempo reale. In Storm non esiste uno strato integrato per la gestione dello storage e la query analitica inizia ad essere applicata ai dati in arrivo fino a quando non viene annullata (a differenza di Hadoop, dove si utilizzano lavori MapReduce che occupano un tempo definito, in Storm si utilizza l'idea di «topologie» che vengono eseguite continuamente). L'esecuzione dei gestori può essere distribuita su più server: Storm divide automaticamente il lavoro con i flussi su nodi diversi del cluster.

Inizialmente, il sistema era scritto in Clojure e viene eseguito all'interno della Java Virtual Machine (JVM). Il progetto Apache ha avviato un'iniziativa per portare Storm su un nuovo nucleo, scritto in Java, i cui risultati sono stati presentati nel rilascio di Apache Storm 2.0. Tutti i componenti fondamentali della piattaforma sono stati riscritti in Java. È mantenuto il supporto per la scrittura di gestori in Clojure, ma ora è offerto sotto forma di binding. Per eseguire Storm 2.0.0 è necessaria Java 8. È stata completamente riprogettata la modalità di elaborazione multi-thread, il che ha consentito anche con l'attributo packed. Considerando che contribuisce anche a ottimizzare lo spazio occupato dalla struttura, questo metodo mi sembra preferibile, anche se un significativo aumento delle prestazioni (per alcune topologie, le latenze sono diminuite del 50-80%).

È disponibile il sistema di computing distribuito Apache Storm 2.0

Nella nuova versione è stato anche proposto un nuovo API tipizzato chiamato Streams, che consente di definire gestori utilizzando operazioni nello stile della programmazione funzionale. La nuova API è implementata sopra l'API di base standard e supporta la fusione automatica delle operazioni per ottimizzarne l'elaborazione. Nell'API Windowing per le operazioni a finestra è stata aggiunta la funzionalità di salvataggio e recupero dello stato nel backend.

Nel pianificatore di avvio dei gestori è stata aggiunta la supporto per la considerazione di risorse aggiuntive nei processi decisionali, non limitandosi a
CPU e memoria, ma includendo anche parametri di rete e GPU. Sono stati apportati numerosi miglioramenti per garantire l'integrazione con la piattaforma Kafka. È stato ampliato il sistema di controllo degli accessi, che ora consente la creazione di gruppi di amministratori e la delega di token. Sono stati aggiunti miglioramenti relativi al supporto SQL e alle metriche. Nell'interfaccia dell'amministratore sono stati introdotti nuovi comandi per il debug dello stato del cluster.

Ambiti di applicazione di Storm:

  • Elaborazione in tempo reale di flussi di nuovi dati o aggiornamenti del database;
  • Calcoli continui: Storm può eseguire richieste continue e elaborare flussi continui, inviando i risultati dell'elaborazione al cliente in tempo reale.
  • Chiamata remota procedurale distribuita (RPC): Storm può essere utilizzato per garantire la parallelizzazione nell'esecuzione di richieste ad alta intensità di risorse. Un compito («topologia») in Storm è una funzione distribuita tra i nodi, che attende l'arrivo di messaggi da elaborare. Dopo aver ricevuto un messaggio, la funzione lo elabora in un contesto locale e restituisce il risultato. Un esempio di utilizzo di RPC distribuito potrebbe essere l'elaborazione parallela di query di ricerca o l'esecuzione di operazioni su un ampio insieme di set.

Caratteristiche di Storm:

  • Un modello di programmazione semplice che semplifica notevolmente l'elaborazione dei dati in tempo reale;
  • Supporto per qualsiasi linguaggio di programmazione. Sono disponibili moduli per Java, Ruby e Python; l'adattamento ad altri linguaggi non presenta difficoltà grazie a un protocollo di comunicazione molto semplice, per implementare il quale sono necessarie circa 100 righe di codice;
  • Affidabilità: per avviare un'attività di elaborazione dati è necessario generare un file jar con il codice. Storm distribuisce automaticamente questo file jar tra i nodi del cluster, collega i relativi gestori e organizza il monitoraggio. Al termine del compito, il codice sarà disattivato automaticamente su tutti i nodi;
  • Scalabilità orizzontale. Tutti i calcoli vengono eseguiti in parallelo; in caso di aumento del carico, è sufficiente collegare nuovi nodi al cluster;
  • Affidabilità. Storm garantisce che ogni messaggio in arrivo venga elaborato completamente almeno una volta. Un messaggio verrà elaborato una sola volta in assenza di errori durante il passaggio attraverso tutti i gestori; in caso di problemi, i tentativi di elaborazione non riusciti verranno ripetuti.
  • Velocità. Il codice di Storm è scritto tenendo conto dell'alta performance e utilizza un sistema per uno scambio di messaggi rapido e asincrono, ZeroMQ.

Fonte: opennet.ru

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster