Wyjaśnienie przypadków użycia Hadoop kontra RabbitMQ+seler

Wiem, że są podobne pytania, takie jak:

Ale pytam, ponieważ szukam bardziej konkretnego rozróżnienia popartego kilkoma przykładami przypadków użycia, proszę.

Więc jestem użytkownikiem Pythona, który chce tworzyć programy że albo / oba:

  1. są zbyt duże, aby
  2. Take too long to

Zrobić na jednej maszynie, i przetwarzać je na wielu maszynach. Jestem zaznajomiony z pakietem wieloprocesorowym (single-machine) w Pythonie i piszę teraz kod w stylu mapreduce. Wiem, że na przykład moja funkcja jest łatwo równoległa.

Pytając moich zwykłych mądrych doradców CS, sformułowałem swoje pytanie jako:

"chcę podjąć zadanie, podzielić je na kilka podzadań które są wykonywane jednocześnie na kilku maszynach, a następnie te wyniki są agregowane i przetwarzane zgodnie z inną funkcją, która może być redukcją lub może być instrukcją seryjnie dodawaną do bazy danych, na przykład."

Według tego podziału mojego przypadku użycia, myślę, że równie dobrze mógłbym użyć Hadoop lub zestaw pracowników seler + RabbitMQ broker. Jednak, kiedy pytam ludzi, którzy udzielają porad, reagują na mnie tak, jakbym był totalnie szalony, patrząc na Hadoop i seler jako porównywalne rozwiązania. Przeczytałem sporo o Hadoopie, a także o selerze - - - myślę, że mam całkiem dobre pojęcie o tym, co oba robią - - - to, czego nie rozumiem, to:

  1. Dlaczego są one uważane za tak oddzielne, tak różne?
  2. Biorąc pod uwagę, że wydają się być odbierane jako zupełnie inne technologie - - - w jaki sposób? Jakie są przypadki użycia, które odróżniają jeden od drugiego lub są lepsze dla jednego od drugiego?
  3. Jakie problemy można rozwiązać z obu i jakie obszary czy byłoby to szczególnie głupie używać jednego lub drugiego?
  4. czy są możliwe lepsze, prostsze sposoby osiągnięcia puli wieloprocesorowej.map () - funkcjonalność dla wielu maszyn? Wyobraźmy sobie, że mój problem nie jest ograniczony pamięcią masową, ale procesorem i pamięcią RAM wymaganą do obliczeń, więc nie ma problemu z zbyt małą ilością miejsca na przechowywanie wyników zwracanych przez pracowników. (tzn. robię coś w rodzaju symulacji, gdzie muszę wygenerować wiele rzeczy na mniejszych maszynach seeded przez wartość z bazy danych, ale są one zmniejszane przed powrotem do maszyny źródłowej / bazy danych.)

Rozumiem, że Hadoop jest standardem big data, ale selery również wygląda dobrze obsługiwany; doceniam to, że nie jest to java( strumieniowe API Pythona dla hadoop wydawało mi się niewygodne), więc byłbym skłonny użyć opcji selery.

Author: Community, 2013-08-30

1 answers

  1. Są one takie same, ponieważ oba mogą rozwiązać problem, który opisujesz (Map-reduce). Różnią się one tym, że Hadoop jest całkowicie zbudowany, aby rozwiązać tylko usecase i Celey / RabbitMQ jest zbudowany, aby ułatwić wykonywanie zadań na różnych węzłach za pomocą przekazywania wiadomości. Seler obsługuje również różne zastosowania.

  2. Hadoop rozwiązuje problem map-reduce poprzez posiadanie dużego i specjalnego systemu plików, z którego maper pobiera swoje dane, wysyła je do kilku map węzłów i redukuje go do tego systemu plików. Ma to tę zaletę, że robi to naprawdę szybko. Minusem jest to, że działa tylko na tekstowych danych wejściowych, Python nie jest naprawdę obsługiwany i że jeśli nie możesz zrobić (nieco) różnych zastosowań. Selery jest wykonawcą zadań opartych na wiadomościach. W nim definiujesz zadania i grupujesz je razem w przepływ pracy(który może być przepływem pracy Map-reduce ). Jego zaletą jest to, że jest oparty na Pythonie, że można łączyć zadania ze sobą w Niestandardowy workflow. Wady to poleganie na jednym brokerze / wyniku backend i jego czas konfiguracji.

  3. Więc jeśli masz kilka Gb plików logowania i nie zależy ci na pisaniu w Javie i masz kilka serwerów, które są używane wyłącznie do uruchamiania Hadoop, użyj tego. Jeśli potrzebujesz elastyczności w wykonywaniu zadań workflow, użyj selera. Albo.....

  4. Tak! JEST NOWY Projekt jednej z firm, która pomogła stworzyć protokół komunikacyjny AMQP, który jest używany przez RabbitMQ i inni). Nazywa się ZeroMQ i przenosi rozproszone wiadomości / wykonanie na kolejny poziom, dziwnie schodząc w dół poziomu abstrakcji w porównaniu do selera. Definiuje gniazda, które można łączyć ze sobą na różne sposoby, aby tworzyć połączenia komunikatów między węzłami. Wszystko, co chcesz zrobić z tymi wiadomościami, zależy od Ciebie. Chociaż może to brzmieć jak "co dobrego jest cienka owijka wokół gniazda", jest to rzeczywiście na właściwym poziomie abstrakcji. Już teraz w naszej firmie wszystkie wiadomości z selera przerabiamy na ZeroMQ. Okazało się, że seler jest po prostu zbyt opiniotwórczy o tym, jak zadania powinny być wykonywane i że konfiguracja/config w ogóle jest ból. Również ten broker w środku, który musi obsługiwać cały ruch, stał się wąskim gardłem.

Wznowienie:

  • Policz wystąpienia "the" w książce z jak najmniej programowania, jak to możliwe i dużo czasu konfiguracji/konfiguracji: Hadoop
  • Tworzenie zadań atomowych i być w stanie je współpracować z nie wiele programowania i dużo czasu konfiguracji / config: selery
  • mieć pełną kontrolę nad tym, co zrobić z wiadomościami i jak je zaprogramować bez prawie żadnego czasu konfiguracji / konfiguracji: ZeroMQ
  • mieć ból bez czasu konfiguracji/konfiguracji: Sockets
 23
Author: RickyA,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:17:53