MapReduce : un framework computazionale distribuito a tolleranza d'errore. MapReduce ti consente di operare su enormi quantità di dati, con un sacco di lavoro per prevenire guasti dovuti all'hardware. MapReduce è una cattiva scelta per calcolare i risultati al volo perché è lento. (Un tipico lavoro MapReduce richiede l'ordine di minuti o ore, non microsecondi)
Un processo MapReduce accetta un file (o alcuni archivi dati) come input e scrive un file di risultati. Se desideri che questi risultati siano disponibili per un'applicazione, è tua responsabilità mettere questi dati in un luogo accessibile. Questo è probabilmente lento e ci sarà un ritardo tra i valori che è possibile visualizzare e i valori che rappresentano il sistema nel suo stato corrente.
Una distinzione importante da fare quando si considera l'utilizzo di MapReduce nella costruzione di sistemi in tempo reale è quella di formare il proprio modello e applicarlo. Se ritieni che i parametri del tuo modello non cambino rapidamente, puoi adattarli con MapReduce e quindi avere un meccanismo per accedere a questi parametri di adattamento quando desideri applicare il tuo modello.
Storm : un sistema di calcolo in streaming in tempo reale. Storm è un framework online, che significa in questo senso un servizio che interagisce con un'applicazione in esecuzione. A differenza di MapReduce, riceve piccoli pezzi di dati (non un intero file) mentre vengono elaborati nell'applicazione. Si definisce un DAG di operazioni da eseguire sui dati. Un caso d'uso comune e semplice per Storm è il monitoraggio dei contatori e l'utilizzo di tali informazioni per popolare una dashboard in tempo reale.
Storm non ha nulla (necessariamente) a che fare con la persistenza dei dati. Qui, lo streaming è un altro modo per dire mantenendo le informazioni che ti interessano e buttando via il resto. In realtà, probabilmente hai un livello di persistenza nella tua applicazione che ha già registrato i dati, e quindi questa è una buona e giustificata separazione delle preoccupazioni.
Se vuoi saperne di più ...
Se vuoi saperne di più sui sistemi in tempo reale che si adattano ai parametri con MR e applicano i modelli in modo diverso qui sono le diapositive per un discorso che ho tenuto sulla costruzione di motori di raccomandazione in tempo reale su HBase.
Un eccellente documento che coniuga in modo interessante il conteggio e la persistenza in tempo reale è la personalizzazione di Google News: filtro collaborativo online scalabile
Un altro matrimonio interessante tra MR e Storm è SummingBird . Summingbird consente di definire operazioni di analisi dei dati che possono essere applicate tramite Storm o MR.