Domanda

Qualcuno può gentilmente mi raccontano i compromessi coinvolti nella scelta tra Storm e MapReduce in Hadoop cluster per l'elaborazione dei dati? Naturalmente, oltre a quella ovvia, che Hadoop (trasformazione 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 guardato attraverso un sacco di presentazioni e articoli, che ancora non sono riuscito a trovare una risposta soddisfacente e completo.

Nota: Il termine compromesso qui non è destinato a confrontare cose simili. Essa è destinata a rappresentare le conseguenze di ottenere risultati in tempo reale che sono assenti da un sistema di elaborazione batch.

È stato utile?

Soluzione

MapReduce : una tolleranza di errore framework computazionale distribuita. MapReduce consente di operare su enormi quantità di dati- con un sacco di lavoro svolto per evitare il fallimento a causa di hardware. MapReduce è una buona scelta per i risultati di calcolo al volo, perché è lento. (Un tipico lavoro di MapReduce assume l'ordine di minuti o ore, non microsecondi)

Un lavoro MapReduce prende un file (o qualche archivio dati) come input e scrive un file di risultati. Se si desidera che questi risultati a disposizione di un'applicazione, è vostra responsabilità di mettere questi dati in un luogo che è accessibile. Questo è probabilmente lenta, e ci sarà un ritardo tra i valori è possibile visualizzare, ed i valori che rappresentano il sistema nel suo stato attuale.

Una distinzione importante da fare quando si considera utilizzando MapReduce nella costruzione di sistemi in tempo reale è quello della formazione il vostro modello e applicare il modello. Se pensi che i tuoi parametri di modello non cambiano rapidamente, è possibile montare con MapReduce, e poi avere un meccanismo per l'accesso a questi parametri prestabiliti in forma quando si desidera applicare il modello.

Tempesta : A in tempo reale, lo streaming sistema computazionale. Storm è framework on-line, il che significa, in questo senso, un servizio che interagisce con un'applicazione in esecuzione. In contrasto con MapReduce, riceve piccoli pezzi di dati (non è un file intero) come sono trattati nella vostra applicazione. Si definisce un DAG di operazioni da eseguire sui dati. Un caso comune e semplicità di utilizzo per Storm sta rintracciando i contatori, e utilizzare tali informazioni per popolare un cruscotto in tempo reale.

Tempesta non ha niente (necessariamente) a che fare con i dati persistenti. Qui, lo streaming è un altro modo per dire mantenere le informazioni che ti interessano e gettando via il resto. In realtà, probabilmente avete uno strato di persistenza nella vostra applicazione che ha già registrato i dati, e quindi questo un buon e la separazione giustificata di preoccupazioni.

Se volete saperne di più ... Se volete saperne di più sui sistemi in tempo reale che che i parametri si adattano con MR e applicare i modelli di un modo diverso qui sono scivoli per un discorso ho dato sulla costruzione di motori di raccomandazione in tempo reale sul HBase.

Un eccellente carta che il conteggio si sposa in tempo reale e la persistenza in un modo interessante è Google News Personalizzazione: scalabile in linea Collaborative filtraggio

Un altro matrimonio interessante di MR e Storm è SummingBird . Summingbird consente di definire le operazioni di analisi dei dati che possono essere applicati tramite tempesta o MR.

Altri suggerimenti

Questo è un po 'come chiedere circa i compromessi tra la padella e la tua cassetto dell'argenteria. Non sono due cose che si confrontano, davvero. Li potrebbe utilizzare insieme come parte di un progetto più ampio.

Hadoop per sé non è una cosa, ma un nome per una federazione di servizi, come HDFS, Hive, HBase, MapReduce, ecc Storm è qualcosa che si usa con alcuni di questi servizi, come HDFS o HBase. Si tratta di un quadro flusso di elaborazione. Ci sono altri all'interno dell'ecosistema Hadoop esteso, come Spark Streaming.

Quando volete scegliere un quadro flusso di elaborazione? quando si ha bisogno di reagire a nuovi dati in near-real-time. Se avete bisogno di questo tipo di strumento, si distribuisce questo tipo di strumento, anche.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
scroll top