Data science e MapReduce modello di programmazione di Hadoop


8

Quali sono le diverse classi di problemi di data science che possono essere risolti utilizzando il modello di programmazione mapreduce?

Risposte:


13

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:

  • Shark e Spark SQL forniscono interfacce simili a SQL alternative ai dati archiviati su HDFS
  • Spark Streaming semplifica il lavoro con flussi di dati continui (ad es. Feed Twitter)
  • MLlib implementa una serie di algoritmi di machine learning con un'API piuttosto semplice e flessibile
  • GraphX consente l'elaborazione di grafici su larga scala

Quindi c'è una serie piuttosto ampia di problemi di data science che puoi risolvere con Hadoop e progetti correlati.


Non sono così sicuro di quello che dici su MapReduce, in particolare 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.
merours

@fxm: il framework MapReduce può essere utilizzato per attività praticamente diverse. Ad esempio, Oozie - schedulatore del flusso di lavoro per diversi componenti di Hadoop - ha la cosiddetta azione Java, che crea semplicemente un mappatore ed esegue codice Java personalizzato al suo interno. Con questo approccio puoi essenzialmente eseguire qualsiasi codice. Questo, tuttavia, non ti darà alcun vantaggio MR rispetto alla semplice app Java. L'unico modo per ottenere questi vantaggi è eseguire calcoli in parallelo (usando Map) su nodi con dati , cioè localmente. Per riassumere: è possibile eseguire qualsiasi codice con MR, ma per ottenere prestazioni, è necessario conservare la localizzazione dei dati.
amico

Sono d'accordo, ma quello che intendevo dire è che uno sviluppatore non dovrebbe preoccuparsi di gestire la localizzazione dei dati (che è gestita da hadoop), ma piuttosto di esprimere gli algoritmi desiderati con il modello MapReduce.
merours

@fxm: lo sviluppatore garantisce la localizzazione usando il mapper. In parole povere, "mappa (f, dati)" significa "trasferire f () ai nodi di dati ed eseguirlo localmente". Se lo sviluppatore non considera la località (ad es. Mette tutti i calcoli sul riduttore), perde tutti i vantaggi di MR. Quindi esprimere algo come lavoro MR (efficiente) implica comunque l'utilizzo della localizzazione dei dati. Detto questo, suggerirei comunque di utilizzare strumenti più flessibili rispetto a MR puro come Spark.
amico

9

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 .



2

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.

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.