Wygląda na to, że projekt, do którego się odnosisz, może być powiązany z this Jira ticket.
W tej chwili JobControl class jest dość pusty i brakuje mu wielu funkcji, które mogłyby ułatwić życie użytkownika. Na przykład:
- zdolność do uzyskania powiadomienia, gdy zadanie zmienia stan: teraz po prostu zadzwonić
JobControl.run
i to wszystko, ale w praktyce może to być interesujące, jeśli mogę otrzymywać powiadomienia, gdy coś się zmienia w mojej pracy.
- Ponownie prześlij zadania zakończone niepowodzeniem: możesz zaimplementować opcję ponownego przesłania zadania, gdy/jeśli się nie powiedzie, na przykład możesz mieć maksymalną liczbę parametrów ponownej próby w klasie
ControlledJob
i ponowić próbę do tego momentu przed wysłaniem powiadomienia, że nie powiodło się.
- Wiele zadań jest uruchamianych regularnie, tygodniowo, codziennie, co godzinę, ... Zazwyczaj robi się to za pośrednictwem crontaba, więc może być interesujące umieszczenie tej funkcji w Hadoop, na przykład użytkownicy mogą ustawić powtarzająca się praca poprzez określenie okresu, a JobControl uruchomiłby go w regularnych odstępach czasu.
- Może mieć interfejs użytkownika do wizualizacji przepływu pracy i zależności między poszczególnymi zadaniami, które kroki zostały już zakończone, a które nie.
- To może być interesujące mieć możliwość nie tylko uruchamiania Map/Reduce jobs, ale także Hive, Pig na przykład, więc możesz zapewnić ogólny interfejs dla użytkowników, aby mogli przesłać dowolną pracę i monitorować je płynnie.
Ostatecznie nie wydaje mi się, że trzeba wymyślić zupełnie nowe ramy, klasa JobControl
już zapewnia dobry punkt wyjścia. Staraj się myśleć z punktu widzenia użytkownika, co możesz zrobić, aby ułatwić i skrócić czas składania i zarządzania zadaniami. Pomysły tutaj i w bilecie są tylko przykładem, możesz przyłączyć się do własnych pomysłów.
Jeśli chodzi o numer Oozie, zapewnia on wyższą abstrakcję do kontrolowania przepływu pracy, ale jest także bardziej skomplikowany w konfiguracji i powinien być zarezerwowany dla bardziej złożonych zadań. Wiem na pewno, że niektórzy ludzie wahają się używać Oozie, ponieważ dodaje ona dodatkowe informacje do twoich aplikacji. Duża różnica polega również na tym, że Oozie jest serwerem, a JobControl
działa na komputerze klienta, co stanowi dodatkowy narzut.Podczas gdy niektóre z wyżej wymienionych funkcji są obecne w Oozie w taki czy inny sposób, możliwość zachowania prostoty i działania na komputerze klienta bez potrzeby wykonywania dodatkowej pracy, takiej jak Oozie jest moim zdaniem kluczem do twojego projektu.
Nie jestem pewien. Ale spójrz na iteracyjną mapę, stratosferę i mezaki. Wygląda to jak połączenie tych. – debarshi