2015-06-27 11 views
14

La mia comprensione è che Spark è un'alternativa a Hadoop. Tuttavia, quando si tenta di installare Spark, la pagina di installazione richiede un'installazione Hadoop esistente. Non sono in grado di trovare nulla che chiarisca questa relazione.Qual è il rapporto tra Spark, Hadoop e Cassandra

In secondo luogo, Spark ha apparentemente una buona connettività con Cassandra e Hive. Entrambi hanno un'interfaccia in stile sql. Tuttavia, Spark ha il proprio sql. Perché si dovrebbe usare Cassandra/Hive invece di sql nativo di Spark? Supponendo che si tratti di un nuovo progetto senza installazione esistente?

risposta

3

Sto scrivendo un articolo su Hadoop per l'università. E inciampai sulla tua domanda. Spark usa semplicemente Hadoop per la persistenza e solo se vuoi usarlo. È possibile utilizzarlo con altri livelli di persistenza come Amazon EC2.

Sull'altra parte della scintilla è in esecuzione in memoria e non è costruito principalmente per essere utilizzato per ridurre i casi di utilizzo come Hadoop era/è.

posso consigliare questo articolo, se ti piace una descrizione più dettagliata: https://www.xplenty.com/blog/2014/11/apache-spark-vs-hadoop-mapreduce/

+0

bel articolo. dici che la scintilla può funzionare in modalità stand-alone. tuttavia, la loro pagina di download non mi dà questa opzione. è quello che ha dato inizio alla confusione. tutte le opzioni di download fanno riferimento a hadoop! – Shahbaz

+0

menzioni anche che la scintilla dovrebbe avere una memoria uguale ai dati in elaborazione. tuttavia, la pagina di destinazione di spark richiede 10 volte un miglioramento rispetto a hadoop per i processori basati su disco (100x per la memoria). hai scoperto di avere qualcosa di interessante da offrire anche per i dati basati su disco? per enormi quantità di dati, hanno un'alternativa agli hdf? – Shahbaz

+0

so che è un po 'tardi per la risposta, ma ero stressato.Il mio argomento era più il lato hadoop e la scintilla stava spuntando, quindi non sono sicuro se sta caricando tutti i dati nella memoria o se è solo il caricamento delle parti, ma penso che il secondo punto sia più ragionevole. Per quanto riguarda la mia conclusione, penso che non hai bisogno della stessa quantità di memoria per la memoria, ma hai bisogno di molto. Penso che sia interessante dare un'occhiata da vicino a questo argomento. – sascha10000

40

Spark è una distribuito in motore di elaborazione della memoria. Non ha bisogno di essere accoppiato con Hadoop, ma poiché Hadoop è uno dei più popolari strumenti di elaborazione dei big data, Spark è progettato per funzionare bene in quell'ambiente. Ad esempio, Hadoop utilizza HDFS (Hadoop Distributed File System) per memorizzare i suoi dati, quindi Spark è in grado di leggere i dati da HDFS e di salvare i risultati in HDFS.

Per la velocità, Spark conserva i propri set di dati in memoria. Generalmente avvia un lavoro caricando dati da una memoria duratura, come HDFS, Hbase, un database Cassandra, ecc. Una volta caricato in memoria, Spark può eseguire molte trasformazioni sul set di dati per calcolare il risultato desiderato. Il risultato finale viene quindi in genere riscritto in un archivio durevole.

In termini di alternativa a Hadoop, può essere molto più veloce di Hadoop in determinate operazioni. Ad esempio una mappa multi-pass riduce l'operazione può essere notevolmente più veloce in Spark rispetto alla riduzione della mappa di Hadoop poiché la maggior parte dell'I/O del disco di Hadoop viene evitata. Spark può leggere dati formattati per Apache Hive, quindi Spark SQL può essere molto più veloce rispetto all'utilizzo di HQL (Hive Query Language).

Cassandra ha il proprio linguaggio di query nativo chiamato CQL (Cassandra Query Language), ma è un piccolo sottoinsieme di SQL completo ed è piuttosto scadente per cose come l'aggregazione e le query ad hoc. Pertanto, quando Spark è abbinato a Cassandra, offre un linguaggio di query più ricco di funzionalità e consente di eseguire analisi dei dati che il CQL nativo non fornisce.

Un altro caso di utilizzo per Spark è per l'elaborazione del flusso. Spark può essere impostato per importare i dati in tempo reale in entrata e processarli in micro-lotti, quindi salvare i risultati in un archivio durevole, come HDFS, Cassandra, ecc.

Quindi la scintilla è davvero un sistema autonomo in memoria che può essere abbinato a diversi database e file system distribuiti per aggiungere prestazioni, un'implementazione SQL più completa e funzionalità a cui potrebbe mancare una simile elaborazione del flusso.

+0

Risposta fantastica! Sul fronte Hive vs Spark SQL può essere interessante sapere che Hive è in procinto di [adottare Spark come suo backend di esecuzione] (https://issues.apache.org/jira/browse/HIVE-7292) (come alternativa a MapReduce). Penso che a quel punto la differenza tra Hive e Spark SQL sarà semplicemente l'implementazione del pianificatore di esecuzione delle query. –

+0

Stavo partendo dal presupposto che gli RDD di Spark siano archiviati su HDFS e che probabilmente usi lo zookeeper di hadoop e altre infrastrutture. Sembra (@ Meyer Meyer) sembra implicare che la scintilla non ha una dipendenza dura e la scintilla ha le sue contro-parti per quei componenti? – Shahbaz

+0

Inoltre, continuo a leggere che la scintilla è un sistema in memoria. Sto guardando un sistema per gestire circa due dati di terra-byte (compressi) ogni giorno. Non c'è modo che continui a tenerlo in memoria, anche quando si utilizza un cluster di computer. Se devo mettere in gioco i dischi, da dove viene la scintilla? Perde il suo vantaggio su hadoop/cassandra/hive o ha ancora qualcosa da offrire? – Shahbaz