2012-01-12 10 views
5

Sto costruendo un miglioramento del framework Spark (http://www.spark-project.org/). Spark è un progetto di UC Berkeley che MapReduce rapidamente nella RAM. Spark è costruito in Scala.Quale sarebbe una buona applicazione per una versione migliorata di MapReduce che condivide le informazioni tra i Mapper?

Il miglioramento che sto costruendo consente di condividere alcuni dati tra i mappatori mentre stanno calcolando. Questo può essere utile, ad esempio, se ognuno dei mappatori sta cercando una soluzione ottimale e tutti vogliono condividere la soluzione migliore corrente (per eliminare tempestivamente le soluzioni errate). La soluzione potrebbe essere leggermente obsoleta durante la propagazione, ma ciò dovrebbe comunque accelerare la soluzione. In generale, questo è chiamato l'approccio branch-and-bound.

Possiamo condividere numeri monotonicamente crescenti, ma anche condividere matrici e dizionari.

Stiamo anche esaminando applicazioni di apprendimento automatico in cui i mappatori descrivono le informazioni sul gradiente naturale locale, quindi una nuova migliore soluzione ottimale corrente viene condivisa tra tutti i nodi.

Quali sono alcune altre buone applicazioni del mondo reale di questo tipo di miglioramento? Quali tipi di applicazioni reali e utili potrebbero trarre beneficio da un calcolo di riduzione della mappa con solo un piccolo frammento di condivisione di informazioni tra i mapper. Quali applicazioni utilizzano MapReduce o Hadoop al momento ma sono solo un po 'troppo lente a causa della restrizione di indipendenza della fase Map?

Il vantaggio può essere quello di accelerare la fase della mappa o migliorare la soluzione.

+0

Ho usato zookeeper per questo prima. –

+0

C'è un recente documento di ricerca chiamato "Adaptive MapReduce che utilizza i rilevatori di situazione-aware" ([PDF] (http://www.edbt.org/Proceedings/2012-Berlin/papers/edbt/a45-vernica.pdf); [diapositive ] (https://www.ics.uci.edu/~rares/pub/edbt12-vernica-slides.pdf)) che descrive un sistema in cui i mappatori possono comunicare tra loro attraverso un negozio di meta-data distribuito (ZooKeeper). Questo è usato per implementare diverse ottimizzazioni adattive del runtime. –

risposta

4

Il miglioramento che sto costruendo consente di condividere alcuni dati tra i mappatori mentre stanno calcolando.

Apache Giraph si basa su Google Pregel che si basa sulla BSP e viene utilizzato per l'elaborazione del grafico. In BSP, vi è la condivisione dei dati tra i processi nella fase di comunicazione.

Giraph dipende da Hadoop per l'implementazione. In generale non c'è comunicazione tra i mappatori in MapReduce, ma in Giraph i mappatori comunicano tra loro durante la fase di comunicazione di BSP.

Potrebbe anche essere interessato a Apache Hama che implementa BSP e può essere utilizzato per più di elaborazione del grafico.

Potrebbe esserci qualche motivo per cui i mappatori non comunicano nel MR. Hai considerato questi fattori nel tuo miglioramento?

Quali sono alcune altre buone applicazioni del mondo reale di questo tipo di miglioramento?

L'elaborazione del grafico è una cosa a cui riesco a pensare, simile a Giraph. Controlla i diversi casi d'uso per BSP, alcuni potrebbero essere applicabili a questo tipo di miglioramento. Sono anche molto interessato a ciò che altri hanno da dire su questo.

+0

Recentemente ho usato BSP per varie attività di machine learning, e.G. forrests casuali e cluster k-means. –

+0

@ThomasJungblut - L'OP riguardava l'uso della comunicazione tra i mappatori. Quindi, se le foreste casuali e il cluster di k-means sono implementati su MR, potrebbero sfruttare la comunicazione tra i mappatori? Se non sbaglio, tutto ciò che ha molte iterazioni potrebbe sfruttare la comunicazione tra i mappatori. –

+0

No, puoi semplicemente salvare le iterazioni sostituendolo con BSP. La comunicazione all'interno dei mappatori non ti darà il risultato. Tuttavia, è possibile mappare tutto in RAM e fare la comunicazione nel compito della mappa. Questo sarebbe un sistema come la giraffa di allora. –

Problemi correlati