Quali sono le diverse classi di problemi di data science che possono essere risolti utilizzando il modello di programmazione mapreduce?
Quali sono le diverse classi di problemi di data science che possono essere risolti utilizzando il modello di programmazione mapreduce?
Risposte:
Dividiamolo prima in parti.
La scienza dei dati riguarda la conoscenza dei dati grezzi. Utilizza l'apprendimento automatico, le statistiche e altri campi per semplificare (o persino automatizzare) il processo decisionale. Le tecniche di scienza dei dati possono funzionare con qualsiasi dimensione di dati, ma più dati significano previsioni migliori e quindi decisioni più precise.
Hadoop è un nome comune per un set di strumenti destinati a lavorare con grandi quantità di dati. Due componenti più importanti in Hadoop sono HDFS e MapReduce.
HDFS , o Hadoop Distributed File System, è uno speciale archivio distribuito in grado di contenere quantità di dati davvero elevate. I file di grandi dimensioni su HDFS sono suddivisi in blocchi e per ogni blocco l'API HDFS ne espone la posizione .
MapReduce è un framework per l'esecuzione di calcoli su nodi con dati. MapReduce utilizza pesantemente la località dei dati esposta da HDFS: quando possibile, i dati non vengono trasferiti tra i nodi, ma invece il codice viene copiato nei nodi con i dati.
Quindi praticamente qualsiasi problema (compresi i compiti di data science) che non infrange il principio della localizzazione dei dati può essere implementato in modo efficiente usando MapReduce (e una serie di altri problemi possono essere risolti non in modo così efficiente, ma ancora abbastanza semplicemente).
Facciamo alcuni esempi. Molto spesso l'analista necessita solo di alcune semplici statistiche sui suoi dati tabulari. In questo caso Hive , che è fondamentalmente un motore SQL su MapReduce, funziona abbastanza bene (ci sono anche Impala, Shark e altri, ma non usano MapReduce di Hadoop, quindi ne parleremo più avanti).
In altri casi, l'analista (o lo sviluppatore) potrebbe voler lavorare con dati precedentemente non strutturati. Pure MapReduce è abbastanza buono per trasformare e standardizzare i dati.
Alcune persone sono abituate alle statistiche esplorative e alla visualizzazione utilizzando strumenti come R. È possibile applicare questo approccio a grandi quantità di dati utilizzando il pacchetto RHadoop .
E quando si parla di machine learning basato su MapReduce, Apache Mahout è il primo a menzionare.
Esiste, tuttavia, un tipo di algoritmi che funzionano abbastanza lentamente su Hadoop anche in presenza di località di dati, vale a dire algoritmi iterativi. Gli algoritmi iterativi tendono ad avere più fasi Map e Reduce. Il framework MR di Hadoop legge e scrive i dati su disco su ogni fase (e talvolta tra di loro), il che rende le attività iterative (così come qualsiasi multi-fase) terribilmente lente.
Fortunatamente, ci sono framework alternativi che possono entrambi: utilizzare la localizzazione dei dati e mantenere i dati in memoria tra le fasi. Probabilmente, il più notevole di questi è Apache Spark . Spark sostituisce completamente MapReduce di Hadoop che utilizza il proprio runtime ed espone API piuttosto ricche per la manipolazione del set di dati distribuito. Spark ha diversi sottoprogetti, strettamente legati alla scienza dei dati:
Quindi c'è una serie piuttosto ampia di problemi di data science che puoi risolvere con Hadoop e progetti correlati.
Data Science ha molte sotto-aree diverse come descritto nel mio post ). Quasi per ogni area, scienziati e sviluppatori hanno contributi significativi. Per ulteriori informazioni su cosa si può fare, consultare i seguenti siti Web:
Inoltre, ci sono alcuni lavori sulla combinazione MapReduce + Excel + Cloud ma non ho trovato il link.
Quali sono le diverse classi di problemi di Data Science ...
Ogni "classe" non è un dominio di problema puramente omogeneo, ovvero alcuni problemi non possono essere risolti tramite la mappa e ridurre l'approccio a causa del suo costo di comunicazione o comportamento dell'algoritmo. Quello che intendo per comportamento è che alcuni problemi vogliono avere il controllo su tutti i set di dati anziché sui blocchi. Pertanto, mi rifiuto di elencare il tipo di "classi" problematiche.
Non dimenticare che sapere cosa può fare MapReduce non è sufficiente per Data Science. Dovresti anche sapere cosa non può fare MapReduce .
C'è un documento che dovresti esaminare:
MapReduce: calcolo distribuito per l'apprendimento automatico
Distinguono 3 classi di problemi di apprendimento automatico che è ragionevole affrontare con MapReduce:
Danno anche esempi per ogni classe.
mappare / ridurre è più appropriato per calcoli offline parallelizzabili. Per essere più precisi, funziona meglio quando il risultato può essere trovato dal risultato di alcune funzioni di una partizione dell'input. La media è un esempio banale; puoi farlo con mappa / riduzione sommando ogni partizione, restituendo la somma e il numero di elementi nella partizione, quindi calcolando la media complessiva usando questi risultati intermedi. È meno appropriato quando i passaggi intermedi dipendono dallo stato delle altre partizioni.
So basically any problem that doesn't break data locality principle may be efficiently implemented using MapReduce
. Da quanto ho capito, puoi solo risolvere i problemi che possono essere espressi con il modello MapReduce.