wiem, że istnieją podobne pytania do tego, takie jak:Wyjaśnienie przypadków użycia dla Hadoop kontra RabbitMQ + Seler
- https://stackoverflow.com/questions/8232194/pros-and-cons-of-celery-vs-disco-vs-hadoop-vs-other-distributed-computing-packag
- Differentiate celery, kombu, PyAMQP and RabbitMQ/ironMQ
ale pytam to ponieważ szukam szczególnego wyróżnienia popartego kilkoma przykładami przypadków użycia, proszę.
Tak, jestem użytkownikiem pyton, który chce, aby programy, które obaj/obie:
- są zbyt duże, aby
- zbyt długo
zrobić na jednym komputerze i przetwarzać je na wielu komputerach. Jestem zaznajomiony z pakietem wieloprocesowym (single-machine) w pythonie i teraz piszę kod stylu mapreduce. Wiem, że moja funkcja, na przykład, jest łatwa do zrównoleglenia.
W pytając moich zwykłych inteligentnych CS porady-dawców, mam sformułować moje pytanie jako:
„Chcę podjąć zadania, podzielić ją na pęczek podzadań, które są wykonywane jednocześnie na kilka maszyn, następnie wyniki te mają być agregowane i rozpatrywane zgodnie z inną funkcją, która może być redukcją, lub może być instrukcją do seryjnego dodawania do bazy danych, na przykład. "
Zgodnie z tym rozpadem mojego przypadku użycia, myślę, że równie dobrze mógłbym użyć Hadoop lub zestawu pracowników Selera + brokera RabbitMQ. Jednak, kiedy pytam mędrców, którzy udzielają porad, reagują na mnie tak, jakbym był całkowicie szalony, aby spojrzeć na Hadoop i Seler jako porównywalne rozwiązania. Czytałem sporo o Hadoopie, a także o Celery - myślę, że mam całkiem dobre pojęcie o tym, co robią - to, czego nie rozumiem, to:
- Dlaczego oni uważane za tak oddzielne, tak różne?
- Biorąc pod uwagę, że wydają się one odbierane jako całkowicie różne technologie - w jaki sposób? Jakie są przypadki użycia, które odróżniają jeden od drugiego lub są lepsze dla jednego niż drugiego?
- Jakie problemy można rozwiązać za pomocą obydwu i na jakie obszary byłoby szczególnie głupie, gdyby jeden lub drugi został użyty?
- Czy są możliwe lepsze, prostsze sposoby uzyskania wieloprocesorowej funkcji Pool.map() na wielu komputerach? Wyobraźmy sobie, że mój problem nie jest ograniczony przez pamięć masową, ale przez procesor i pamięć RAM wymaganą do obliczeń, więc nie ma problemu z posiadaniem zbyt małej przestrzeni do przechowywania wyników zwróconych przez pracowników. (tzn. robię coś w rodzaju symulacji, gdzie muszę generować wiele rzeczy na mniejszych maszynach obsianych wartością z bazy danych, ale są one zmniejszane, zanim powrócą do maszyny źródłowej/bazy danych.)
Rozumiem, że Hadoop to duży standard danych, ale Seler również wygląda na dobrze obsługiwany; Doceniam to, że to nie java (pyton do strumieniowania API musi używać dla hadoopów wydawał mi się niewygodny), więc byłbym skłonny użyć opcji Seler.
Prowadzę śledztwo w tej sprawie i uważam, że masz rację, a to było bardzo pomocne. ZeroMQ jest do tej pory niesamowity. Jest to dziwne porowate miejsce pomiędzy rozproszonym przetwarzaniem a właściwym routingiem wiadomości, programowaniem sieci. Nadal próbuję to rozwiązać. – Mittenchops
Uwielbiam ZeroMQ. Dzięki! – Mittenchops
@Mittenchops Cieszę się, że cię wygrałem. Przejście początkowej przeszkody zajmuje trochę czasu, ale warto. – RickyA