Czy algorytmy zmniejszania mapy napisane dla MongoDB mogą być później przeniesione do Hadoop?


11

W naszej firmie mamy bazę danych MongoDB zawierającą wiele nieustrukturyzowanych danych, na których musimy uruchamiać algorytmy zmniejszania mapy w celu generowania raportów i innych analiz. Mamy do wyboru dwa podejścia do wdrożenia wymaganych analiz:

  1. Jednym z podejść jest wyodrębnienie danych z MongoDB do klastra Hadoop i wykonanie analizy całkowicie na platformie Hadoop. Wymaga to jednak znacznych inwestycji w przygotowanie platformy (oprogramowania i sprzętu) oraz wykształcenie zespołu do pracy z Hadoop i pisania zadań zmniejszania mapy.

  2. Innym podejściem jest po prostu włożenie wysiłku w zaprojektowanie algorytmów zmniejszania mapy i uruchomienie algorytmów w funkcjach zmniejszania mapy MongoDB. W ten sposób możemy stworzyć początkowy prototyp końcowego systemu, który może generować raporty. Wiem, że funkcje redukcji map MongoDB są znacznie wolniejsze w porównaniu do Hadoop, ale obecnie dane nie są tak duże, że czyni to jeszcze wąskim gardłem, przynajmniej nie przez następne sześć miesięcy.

Pytanie polega na tym, że korzystając z drugiego podejścia i pisząc algorytmy dla MongoDB, można je później przenieść do Hadoop przy niewielkiej potrzebie modyfikacji i przeprojektowaniu algorytmu? MongoDB obsługuje tylko JavaScript, ale różnice w języku programowania są łatwe do opanowania. Czy są jednak jakieś zasadnicze różnice w modelu MongoDB i Hadoop z redukcją mapy, który może zmusić nas do przeprojektowania algorytmów w celu przeniesienia do Hadoop?


Odpowiedzi:


4

Na końcu na pewno będzie zadanie tłumaczenia, jeśli prototypujesz używając tylko mongo.

Kiedy uruchomisz zadanie MapReduce na mongodb, ma ono wbudowane źródło danych i strukturę. Kiedy ostatecznie przekonwertujesz na hadoop, twoje struktury danych mogą nie wyglądać tak samo. Możesz skorzystać ze złącza mongodb-hadoop, aby uzyskać dostęp do danych mongo bezpośrednio z poziomu hadoop, ale nie będzie to tak proste, jak mogłoby się wydawać. Czas, aby dowiedzieć się, jak dokładnie przeprowadzić konwersję w sposób najbardziej optymalny, będzie łatwiejszy do uzasadnienia, gdy będziesz mieć prototyp na miejscu, IMO.

Podczas gdy będziesz musiał przetłumaczyć funkcje mapreduce, podstawowy pseudokod powinien mieć zastosowanie do obu systemów. W MongoDB nie znajdziesz niczego, co można zrobić przy użyciu Javy lub które jest znacznie bardziej skomplikowane w Javie.


5

Możesz używać algorytmów zmniejszania mapy w Hadoop bez programowania ich w Javie. Nazywa się to streamingiem i działa jak potokowanie Linux. Jeśli uważasz, że możesz przenieść swoje funkcje do odczytu i zapisu na terminalu, powinno działać dobrze. Oto przykładowy wpis na blogu, który pokazuje, jak korzystać z funkcji zmniejszania mapy napisanych w Pythonie w Hadoop.


1
To nadal wymagałoby przetwarzania przez mongo, co, jak sądzę, z pytania należy uniknąć w ostatecznym rozwiązaniu. Tak czy inaczej, głosowanie za wniesienie ważnej wiedzy.
Steve Kallestad,

4

Można również utworzyć MongoDB-Hadoop połączenia .


Dziękujemy za Twój post, ale czy możesz podać tutaj ogólny opis połączonego rozwiązania? Link może zawierać odpowiedź na pytanie, ale odradza się odpowiedzi zawierające tylko linki.
Rubens
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.