2012-02-21 13 views
8

Czytałem o Storm i bawiłem się z przykładami z burzy-rozrusznika.Dobre wykorzystanie burzy?

Myślę, że dostałem tę koncepcję i ma ona bardzo dobre zastosowanie w wielu przypadkach. Mam projekt testowy, który chcę zrobić, aby dowiedzieć się więcej na ten temat, ale zastanawiam się, czy Storm naprawdę nadaje się do tego.

Konceptualny problem, jaki mam, dotyczy definicji "przesyłania strumieniowego". Wygląda na to, że Storms będzie działać jako urok subskrybujący strumień i przetwarzający go w czasie rzeczywistym, ale tak naprawdę nie mam strumienia, ale raczej skończonego zbioru danych, które chcę przetworzyć.

Wiem, że jest na to wszystko, ale interesują mnie możliwości Storma w czasie rzeczywistym, a także inne ciekawe rzeczy, które Nathan, który napisał Storm, wspomina w swoich rozmowach.

Tak więc zastanawiałem się, czy ludzie piszą wyskoki, które odpytywają API bez przesyłania strumieniowego, a następnie mogą różnicować wyniki, aby emulować strumień?

Druga ważna kwestia to, że topologie Storm nigdy nie kończą przetwarzania, dopóki nie zostaną przerwane, co znowu nie ma zastosowania w moim przypadku. Chciałbym, aby moja topologia wiedziała, że ​​po skończeniu mojej skończonej listy danych źródłowych przetwarzanie może zostać zakończone, a wynik końcowy może zostać wyemitowany.

Czy to wszystko ma sens w warunkach Storm lub czy patrzę na coś niewłaściwego? Jeśli tak, jakie alternatywy proponujesz dla tego rodzaju potrzeb obliczeń równoległych w czasie rzeczywistym?

Dzięki!

Odpowiedz

6

Znaleziono odpowiedź w storm google group. Wydaje się, że topologie DRCP będą emitować krotkę z parametrami, które są odbierane przez wylewkę DRCP jako strumień, a następnie będą wskazywać ponownie po zakończeniu przetwarzania (używając unikalnego identyfikatora o nazwie Request ID).

W tym samym temacie mówi się, że hadoop jest prawdopodobnie najlepiej dopasowany do tych przypadków, chyba że dane nie są wystarczająco duże i mogą być przetwarzane całkowicie przez cały czas.

0

Z pewnością możliwe jest użycie Storm do przetworzenia skończonej kolekcji danych i zatrzymania po przetworzeniu wszystkich elementów. Topologie DRPC to jeden ze sposobów, ale rozwijanie własnego rozwiązania nie jest trudne.

Chodzi o to, aby śledzić, które elementy w skończonym zbiorze danych zostały przetworzone, czy nie, , które można łatwo zrobić w wylewce za pomocą metod ack() i fail().

0

Jeśli szukasz szybkiego, interaktywnego i przyjaznego programistom rozwiązania do przetwarzania wsadowego, możesz zamiast tego przyjrzeć się Apache Spark zamiast Storm.

Trident/DRPC jest bardziej przydatny, gdy chcesz uruchamiać zapytania w obliczeniach ciągłych.