2012-02-15 13 views
21

Jakie są kluczowe różnice, aby zrobić mapę/zmniejszyć pracę na MongoDB przy użyciu mapy Hadoop/zmniejszyć vs wbudowaną mapę/zmniejszyć Mongo?Hadoop Map/Reduce vs wbudowany Map/Reduce

Kiedy wybrać, którą mapę/zmniejszyć silnik? jakie są plusy i minusy każdego silnika do pracy na danych przechowywanych w mongodb?

Odpowiedz

30

Moja odpowiedź jest oparta na wiedzy i doświadczeniu Hadoop MR i uczeniu się Mongo DB MR. Pozwala zobaczyć, jakie są główne różnice, a następnie spróbuj określić kryteria wyboru: Różnice są następujące:

  1. Hadoop za MR może być napisany w języku Java, a MongoDB jest w JavaScript.
  2. MR firmy Hadoop może wykorzystywać wszystkie rdzenie, a MongoDB jest pojedynczym wątkiem.
  3. Hadoop MR nie będzie kolokowany z danymi, a bazy danych Mongo będą kolokowane.
  4. Hadoop MR ma miliony Silnik/godziny, a może uporać się z wielu przypadkach narożnych z masywnej wielkości produkcji, zniekształca danych itp
  5. Istnieje wyższe ramy poziomie jak świnia, Hive, kaskadowy zbudowany na szczycie Hadoop Silnik MR.
  6. Hadoop MR jest głównym nurtem i dostępne jest wiele wsparcia dla społeczności.

Z powyższego mogę zaproponować następujące kryteria wyboru:
Wybierz Mongo DB MR jeśli potrzebujesz prostego i filtrowanie przez grupę, nie oczekuj ciężkie szuranie między mapie i zmniejszyć. Innymi słowy - coś prostego.

Wybierz MR, jeśli zamierzasz wykonywać skomplikowane, intensywne obliczeniowo zadania MR (na przykład niektóre obliczenia regresji). Posiadanie dużej lub nieprzewidywalnej wielkości danych między mapą a redukcją sugeruje również MR Hadoop.

Java jest silniejszym językiem z większą liczbą bibliotek, zwłaszcza statystycznych. To należy wziąć pod uwagę.

+0

Wspaniałe punkty, dziękuję. Czy sądzisz, że przechowywanie danych w Mongo i NIE używanie HDFS będzie miało duży szyjkę butelek? Mój rozmiar danych wynosi około 10 TB i jest wysoce uporządkowany, a moje obliczenia są zarówno proste, jak i złożone.Przechowywanie danych w Mongo daje nam wiele korzyści, ale nie jestem pewien, czy korzystanie z HDFS może być w ogóle problematyczne? – iCode

+0

i jeszcze jedno pytanie, czy można bezpiecznie powiedzieć, że hasoop będzie szybszy nawet przy prostych zadaniach M/R? – iCode

+1

Moja wiedza na temat Mongo DB jest ograniczona. W najlepszym razie ten system jest zbudowany dla dostępu losowego, zbudowanego wokół indeksowania. Jest to system zbudowany do obsługi online. W tym samym czasie HDFS jest budowany dla sekwencyjnego dostępu, ciężkich skanów i wszystkie kompromisy są wykonywane w tym kierunku. Nie oczekuję, że MongoDB będzie dobry w skanach ... Przy tak dużej ilości danych - to są trudne pytania i myślę, że potrzeba więcej informacji do podjęcia decyzji. Konkretnie - ma wpływ na wydajność Mongo DB ma kluczowe znaczenie. –

0

Nie mam dużego doświadczenia z Hadoop MR, ale mam wrażenie, że działa tylko na HDFS, więc musiałbyś duplikować wszystkie swoje dane Mongo w HDFS. Jeśli chcesz duplikować wszystkie swoje dane, domyślam się, że Hadoop MR jest znacznie szybszy i bardziej wytrzymały niż Mongo MR.

+1

W rzeczywistości tak nie jest. Ten projekt https://github.com/mongodb/mongo-hadoop pomoże ci uruchomić hadoop bezpośrednio na danych monogo. nie trzeba przenosić na hdfs – iCode

+0

Hadoop MR może pracować z dowolnym źródłem danych, do którego można uzyskać dostęp z java. Nie tylko HDFS. – Marquez

10

Od MongoDB 2.4 Zadania MapReduce nie są już wątkami pojedynczymi.

Zobacz także Aggregation Framework, aby uzyskać wydajniejszy, deklaratywny sposób wykonywania agregacji i innych zadań analitycznych w MongoDB.

+0

Ten błąd wydaje się nie zgadzać: https://jira.mongodb.org/browse/SERVER-463 –

0

Pozycja 3 jest z pewnością niepoprawna, jeśli chodzi o Hadoop. Przetwarzanie kolokacji z danymi jest częścią podstaw Hadoop.

Powiązane problemy