Apache Mesos Schedulers and Executors na przykładzie

Próbuję zrozumieć, jak różne komponenty Mezos współpracują ze sobą i znalazłem ten doskonały samouczek , który zawiera następujący przegląd architektury:

Tutaj wpisz opis obrazka

Mam kilka wątpliwości co do tego, które nie są wyjaśnione (ani w artykule, ani w oficjalnych dokumentach Mezos):

  • gdzie biegną terminarze ? Czy istnieją "węzły Schedulera", w których powinny działać tylko Schedulery?
  • If I czy pisałem własny Framework Mesos, jaką funkcjonalność Schedulera powinienem zaimplementować? Czy jest to tylko binarne tak / nie lub Akceptuj/odrzucaj dla ofert wysyłanych przez Mistrza? Jakieś konkretne przykłady?
  • gdybym pisał własny Framework Mesos, jaką funkcjonalność executora miałbym zaimplementować? Jakieś konkretne przykłady?
  • jaki jest konkretny przykład zadania, które zostanie wysłane do wykonawcy?
  • są Executorami "przypiętymi" (na stałe zainstalowanymi) niewolnikami, czy też pływają wokół w trybie" na żądanie", instalowane i wykonywane dynamicznie / on-the-fly?
 23
Author: smeeb, 2015-07-06

3 answers

Świetne pytania! Uważam, że bardzo pomocne byłoby przyjrzenie się przykładowym frameworkom, takim jak rendler. To prawdopodobnie odpowie na większość twojego pytania i da ci poczucie wewnętrznej struktury.

Pozwól mi teraz spróbować odpowiedzieć na pytanie, które może być jeszcze otwarte po tym.

  • Scheduler Location

Schedulery nie są włączone na żadnych specjalnych węzłach, ale należy pamiętać, że schedulery mogą również przełączać awaryjnie (jak każda część w system rozproszony).

  • funkcjonalność Schedulera

Spójrz na Rendlera lub na Framework development guide .

  • Executor funkcjonalność / zadanie

Uważam, że rendler jest dobrym przykładem do zrozumienia relacji zadanie / wykonawca. Po prostu zacznij czytać README / description na głównej stronie github.

  • Executor przypinanie

Executory są uruchamiane na każdym węźle, gdy pierwszy Zadanie wymagające takiego executora jest wysyłane do tego węzła. Po tym pozostanie na tym węźle.

Mam nadzieję, że to pomogło!

 20
Author: js84,
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
2015-07-06 18:20:23

Aby dodać do doskonałej odpowiedzi js84,

  • lokalizacja Schedulera: wielu użytkowników lubi uruchamiać schedulery za pomocą innego frameworka, takiego jak Marathon, aby upewnić się, że jeśli scheduler lub jego węzeł umrze, może zostać ponownie uruchomiony w innym miejscu.
  • funkcjonalność Schedulera: Po zarejestrowaniu się w Mesos, Twój scheduler zacznie otrzymywać oferty zasobów w wywołaniu zwrotnym resourceOffers(), w którym twój scheduler powinien uruchomić (co najmniej) jedno zadanie na podzbiorze (lub wszystkich) oferowane środki. Prawdopodobnie będziesz również chciał zaimplementować wywołanie zwrotne statusUpdate(), Aby obsłużyć zakończenie/niepowodzenie zadania. Zauważ, że może nawet nie być konieczne implementowanie własnego harmonogramu, jeśli istniejący framework, taki jak Marathon/Chronos/Aurora/Kubernetes, może wystarczyć.
  • funkcjonalność executora: zazwyczaj nie musisz tworzyć niestandardowego executora, jeśli chcesz tylko uruchomić proces linuksowy lub kontener dokera i wiedzieć, kiedy się zakończy. Możesz po prostu użyć domyślnego mesos-executor (poprzez podanie CommandInfo bezpośrednio w TaskInfo, zamiast osadzonego wewnątrz ExecutorInfo). Jeśli jednak chcesz zbudować własny executor, co najmniej musisz zaimplementować launchTask(), a najlepiej również killTask().
  • przykładowe zadanie : przykładowe zadanie może być prostym poleceniem Linuksa, takim jak sleep 1000 lub echo "Hello World", lub kontenerem dokera (poprzez ContainerInfo), takim jak image : 'mysql'. Lub, jeśli używasz niestandardowego executora, to executor określa, czym jest zadanie i jak je uruchomić, więc zadanie może być uruchomione jako inne wątek w procesie executora lub po prostu stać się elementem w kolejce w jednowątkowym executorze.
  • przypinanie executora : executor jest dystrybuowany przez Uri CommandInfo, tak jak wszystkie pliki binarne zadań, więc nie muszą być preinstalowane na węzłach. Mesos przyniesie i uruchomi go za Ciebie.
 17
Author: Adam,
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
2015-07-07 00:39:04

Terminarze: są pewną strategią przyjęcia lub odrzucenia oferty. Schedulery możemy napisać własne lub możemy użyć jakiegoś istniejącego jak chronos. W schedulerze powinniśmy ocenić dostępne zasoby, a następnie zaakceptować lub odrzucić.

Funkcjonalność Schedulera: przykład może być taki, jak Załóżmy, że masz zadanie, które wymaga 8 procesorów do uruchomienia, ale oferta z mesos może być 6 procesorów, które nie będą zaspokajać potrzeby w tym przypadku u możesz odrzucić.

Funkcjonalność executora : Executor obsługuje informacje o stanie Twojego zadania. Zestaw interfejsów API, które musisz zaimplementować, jak Jaki jest status przypisanego zadania w mesos slave. Jaka jest liczba procesorów dostępnych obecnie w mesos slave, gdzie uruchomiony jest executor.

Konkretny przykład dla executora: chronos

Po zainstalowaniu i uruchomieniu dynamicznie / w locie: nie są one możliwe, musisz wstępnie skonfigurować executory. Jednak można replikować executorów za pomocą autoskalowanie.

 1
Author: Yogesh BG,
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
2016-10-25 10:40:39