2012-01-12 11 views
5

Buduję ulepszenie w ramach Spark (http://www.spark-project.org/). Spark to projekt z UC Berkeley, który szybko MapReduce w RAM. Spark jest zbudowany w Scali.Jaki byłby dobry wniosek o ulepszoną wersję MapReduce, która dzieli informacje między twórcami map?

Ulepszone przeze mnie ulepszenie pozwala na udostępnianie niektórych danych pomiędzy mapami podczas ich obliczania. Może to być przydatne, na przykład, jeśli każdy z twórców map poszukuje optymalnego rozwiązania i wszyscy chcą dzielić się bieżącym najlepszym rozwiązaniem (aby wcześnie usunąć błędne rozwiązania). Rozwiązanie może być nieco nieaktualne, ponieważ propaguje, ale powinno to jeszcze przyspieszyć rozwiązanie. Zasadniczo jest to nazywane podejściem rozgałęzionym.

Możemy dzielić monotonicznie rosnące liczby, ale także możemy dzielić tablice i słowniki.

Zajmujemy się także aplikacjami do uczenia maszynowego, w których twórcy map opisują lokalne informacje o naturalnym gradiencie, a następnie nowe najlepsze optymalne rozwiązanie jest udostępniane wszystkim węzłom.

Jakie są inne dobre zastosowania tego typu w świecie rzeczywistym? Jakie rodzaje rzeczywistych, użytecznych aplikacji mogą odnieść korzyści z mapy Zredukuj obliczenia dzięki odrobinie wymiany informacji między twórcami map. Jakie aplikacje obecnie używają MapReduce lub Hadoop, ale są nieco zbyt wolne ze względu na ograniczenie niezależności fazy mapy?

Korzyścią może być przyspieszenie fazy mapy lub poprawienie rozwiązania.

+0

Używałem tego wcześniej zookeeperem. –

+0

Istnieje najnowszy dokument badawczy o nazwie "Adaptive MapReduce using Situ-Aware Mappers" ([PDF] (http://www.edbt.org/Proceedings/2012-Berlin/papers/edbt/a45-vernica.pdf); [slajdy ] (https://www.ics.uci.edu/~rares/pub/edbt12-vernica-sides.pdf)), który opisuje system, w którym twórcy map mogą komunikować się ze sobą za pośrednictwem rozproszonego magazynu meta-danych (ZooKeeper). Służy do implementacji kilku adaptacyjnych optymalizacji środowiska wykonawczego. –

Odpowiedz

4

Ulepszone przeze mnie ulepszenie pozwala na udostępnianie niektórych danych pomiędzy mapami podczas ich obliczania.

Apache Giraph opiera się Google Pregel opartego na BSP i służy do obróbki wykresu. W BSP występuje wymiana danych między procesami w fazie komunikacji.

Giraph zależy od Hadoop do wdrożenia. Ogólnie rzecz biorąc nie ma komunikacji między mapami w MapReduce, ale w Giraph mapperzy komunikują się ze sobą w fazie komunikacji BSP.

Użytkownik może być również zainteresowany Apache Hama, który implementuje BSP i może być używany do więcej niż przetwarzania wykresów.

Może być jakiś powód, dla którego twórcy map nie komunikują się w MR. Czy uwzględniłeś te czynniki w swoim ulepszeniu?

Jakie są inne dobre zastosowania tego typu w świecie rzeczywistym?

Przetwarzanie wykresów to jedna rzecz, o której mogę myśleć, podobnie jak Giraph. Sprawdź różne przypadki użycia BSP, niektóre z nich mogą mieć zastosowanie do tego rodzaju ulepszenia. Jestem również bardzo zainteresowany tym, co inni mają do powiedzenia w tej sprawie.

+0

Niedawno użyłem BSP do różnych zadań związanych z uczeniem maszynowym, e.G. losowe forrests i k-means clustering. –

+0

@ThomasJungblut - OP dotyczył użycia komunikacji między twórcami map. Tak więc, jeśli losowe lasy i klastrowanie k-średnich są zaimplementowane w MR, czy mogliby skorzystać z komunikacji między twórcami map? Jeśli się nie mylę, wszystko, co ma wiele iteracji, może wykorzystać komunikację między twórcami map. –

+0

Nie, możesz po prostu zapisać iteracje, zastępując je BSP. Komunikacja w obrębie twórców map nie da ci wyniku. Można jednak mapować wszystko do pamięci RAM i wykonywać komunikację w zadaniu mapy. Byłby to system taki jak giraph. –

Powiązane problemy