Svantaggi tra Storm e Hadoop (MapReduce)


12

Qualcuno può gentilmente parlarmi dei compromessi coinvolti nella scelta tra Storm e MapReduce in Hadoop Cluster per l'elaborazione dei dati? Naturalmente, a parte quello ovvio, Hadoop (elaborazione tramite MapReduce in un cluster Hadoop) è un sistema di elaborazione batch e Storm è un sistema di elaborazione in tempo reale.

Ho lavorato un po 'con Hadoop Eco System, ma non ho lavorato con Storm. Dopo aver esaminato molte presentazioni e articoli, non sono ancora riuscito a trovare una risposta soddisfacente e completa.

Nota: il termine compromesso qui non intende essere paragonato a cose simili. Ha lo scopo di rappresentare le conseguenze di ottenere risultati in tempo reale che sono assenti da un sistema di elaborazione batch.

Risposte:


13

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.


9

È un po 'come chiedere dei compromessi tra la padella e il tuo cassetto di argenteria. Non sono due cose che confronti, davvero. Potresti usarli insieme come parte di un progetto più ampio.

Hadoop stesso non è una cosa, ma un nome per una federazione di servizi, come HDFS, Hive, HBase, MapReduce, ecc. Storm è qualcosa che usi con alcuni di questi servizi, come HDFS o HBase. È un framework di elaborazione del flusso. Ce ne sono altri all'interno dell'ecosistema Hadoop esteso, come Spark Streaming.

Quando sceglieresti un framework di elaborazione del flusso? quando è necessario reagire ai nuovi dati in tempo quasi reale. Se hai bisogno di questo tipo di strumento, distribuisci anche questo tipo di strumento.


Mi riferivo all'elaborazione tramite MapReduce nel sistema Hadoop Echo semplicemente come Hadoop perché questo è il termine comunemente usato (anche se tecnicamente sbagliato e ho modificato la domanda di conseguenza).
mbbce,

Forse mi sbaglio, ma penso che ci sia qualcosa di più che avere una elaborazione quasi in tempo reale. Se non ci fossero compromessi tra loro, tutti vorrebbero fare le cose in tempo quasi reale. Un approccio ibrido consente di ottenere il meglio da entrambi i mondi (in una certa misura). Ecco perché è stato creato Summingbird.
mbbce,

1
Una grande differenza è che un sistema di elaborazione di flussi può toccare i dati una sola volta e da solo non ha uno stato a lungo termine. Alcuni problemi non possono essere risolti in questo modo. Per problemi per i quali ciò va bene, è più veloce usare un sistema che non richiede i primi dati persistenti nella memoria (rilettura). MapReduce non è intrinsecamente più lento di Storm; entrambi sono contenitori. Sono paradigmi diversi per problemi diversi.
Sean Owen,

Non avere uno stato persistente a lungo termine significa che tali sistemi quasi in tempo reale non possono accumulare aggiornamenti di input per un lungo periodo? Mi puoi riferire a qualsiasi risorsa che discute ulteriormente su questo?
mbbce,

Questo è un po 'la definizione di un sistema di streaming. Se immagini un sistema che può accedere allo stato a lungo termine a piacimento, non è realmente streaming.
Sean Owen,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.