Zarządzam niewielkim zespołem programistów i w dowolnym momencie mamy kilka uruchomionych (jednorazowych) projektów danych, które można uznać za "Embarrassingly parallel" - na ogół wymagają one uruchomienia jednego skrypt na pojedynczym komputerze przez kilka dni, klasycznym przykładem byłoby przetwarzanie kilku tysięcy plików PDF, aby wyodrębnić kluczowy tekst i umieścić go w pliku CSV w celu późniejszego wstawienia do bazy danych.Używanie Hadoop do przetwarzania równoległego zamiast Big Data
Wykonujemy teraz wystarczająco dużo zadań tego typu, że zacząłem badać rozwój prostego systemu kolejki zadań za pomocą RabbitMQ z kilkoma zapasowymi serwerami (z myślą o wykorzystaniu Amazon SQS/S3/EC2 dla projektów wymagających większego skalowania)
W poszukiwaniu przykładów inni robią to trzymam napotykając klasyczny przykład Hadoop New York Times:
The New York Times stosowanego 100 instancji EC2 Amazon i aplikacji Hadoop przetwarzać 4 TB surowy image Dane TIFF (przechowywane w S3) na 11 milionów gotowych plików PDF w ciągu 24 godzin przy kosztach obliczeniowych około 240 USD (bez uwzględnienia przepustowość)
Co brzmi idealnie? Zbadałem więc Hadoop i Map/Reduce.
Ale nie mogę się domyślić, jak to zrobili? Albo dlaczego to zrobili?
Konwersja plików TIFF w formacie PDF nie jest z pewnością problemem Map/Reduce? Czy prosta kolejka zadań nie byłaby lepsza?
Innym klasycznym przykładem Hadoop jest "wordcount" z Yahoo Hadoop Tutorial, który idealnie pasuje do Map/Reduce, i widzę, dlaczego jest on tak potężnym narzędziem dla Big Data.
Nie rozumiem, w jaki sposób te "żenująco równoległe" zadania są wprowadzane do schematu mapowania/zmniejszania?
TL; DR
To bardzo koncepcyjny pytanie, w zasadzie chcę wiedzieć, jak bym dopasować zadania do „przetwarzania kilka tysięcy plików PDF wyodrębnić jakąś kluczową tekst i umieść w pliku CSV” w a Map/Reduce pattern?
Jeśli znasz przykłady, które byłyby idealne, nie proszę o napisanie tego za mnie.
(Uwagi: Mamy kod do przetwarzania plików PDF, nie pytam o to - to tylko przykład, może to być dowolne zadanie.) Pytam o umieszczenie takich procesów w Hadoop Map/Reduce wzór - gdy nie ma wyraźnych elementów "Map" lub "Zmniejsz" do zadania.)
Pozdrawiam!
... Każdy węzeł przetwarza pliki PDF i wyprowadza cokolwiek. Nie wiem, jak warto używać Hadoop, ponieważ jest to dość proste, aby po prostu wyrzucać wiadomości - prawdopodobnie tylko wtedy, gdy masz już działające klastry. Hadoop może być używany do dość arbitralnych zadań, ale to nie znaczy, że * powinien * być. –
Będę dodawać do odpowiedzi, które powiedział Hadoop ma przetwarzania równoległego i przełączania awaryjnego. Tak jak wiele istniejących kolejek zadań (takich jak rabbitmq), gdy używasz ich jako pull/worker. Każda praca nie powiedzie się ponownie ponownie, dopóki jeden pracownik nie potwierdzi, że broker to zrobił. Tylko równoległe przetwarzanie i JobTracker nie mogą być jedynymi przyczynami korzystania z Hadoop. Instalowanie, konfigurowanie i utrzymywanie klastrów Hadoop jest naprawdę czasochłonne. Nie wspominając już o tym, że potrzebujesz specjalistów. Sprawdź, czy to, co chcesz, może pasować do systemów rozproszonych, najpierw używając Kolejki zadań, a następnie rozważ Hadoop. – Maziyar