Planificadores y ejecutores de Apache Mesos por ejemplo


Estoy tratando de entender cómo los diversos componentes de Mesos funcionan juntos, y encontré este excelente tutorial que contiene la siguiente descripción arquitectónica:

introduzca la descripción de la imagen aquí

Tengo algunas preocupaciones sobre esto que no están claras (ya sea en el artículo o en los documentos oficiales Mesos):

  • ¿Dónde se están ejecutando los Schedulers? ¿Hay "nodos Scheduler" donde solo se deben ejecutar los Schedulers?
  • Si estaba escribiendo mi propio framework Mesos, ¿qué funcionalidad de Programador necesitaría implementar? ¿Es solo un binario sí / no o aceptar / rechazar las Ofertas enviadas por el Maestro? ¿Algún ejemplo concreto?
  • Si estuviera escribiendo mi propio framework Mesos, ¿qué funcionalidad de ejecutor necesitaría implementar? ¿Algún ejemplo concreto?
  • ¿Cuál es un ejemplo concreto de una Tarea que se enviaría a un Ejecutor?
  • Son Ejecutores "anclados" (permanentemente instalados en) Esclavos, o flotan alrededor ¿de forma "on demand", siendo instalado y ejecutado dinámicamente/sobre la marcha?
 23
Author: smeeb, 2015-07-06

3 answers

Grandes preguntas! Creo que sería muy útil echar un vistazo a un framework de ejemplo como Rendler. Esto probablemente responderá la mayor parte de su pregunta y le dará sensación para el marco interno.

Permítanme ahora tratar de responder a la pregunta que podría estar todavía abierta después de esto.

  • Ubicación del programador

Los Schedulers no están activados en ningún nodo especial, pero tenga en cuenta que los schedulers también pueden failover (como cualquier parte de un sistema distribuido).

  • Funcionalidad del programador

Eche un vistazo a Rendler o en la guía de desarrollo de framework.

  • Funcionalidad/Tarea del ejecutor

Creo que Rendler es un buen ejemplo para entender la relación Tarea/Ejecutor. Simplemente comienza a leer el README / descripción en la página principal de github.

  • Ejecutor de fijación

Los ejecutores se inician en cada nodo cuando el primer La tarea que requiere dicho ejecutor se envía a este nodo. Después de esto permanecerá en ese nodo.

Espero que esto haya ayudado!

 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/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-07-06 18:20:23

Para añadir a la excelente respuesta de js84,

  • Ubicación del Scheduler: A muchos usuarios les gusta lanzar los schedulers a través de otro framework como Marathon para asegurarse de que si el scheduler o su nodo muere, entonces se puede reiniciar en otro lugar.
  • Funcionalidad del planificador : Después de registrarse con Mesos, su planificador comenzará a recibir ofertas de recursos en la devolución de llamada resourceOffers(), en la que su planificador debería iniciar (al menos) una tarea en un subconjunto (o todos) de los recursos que se ofrecen. Probablemente también querrá implementar la devolución de llamada statusUpdate() para manejar la finalización/falla de la tarea. Tenga en cuenta que es posible que ni siquiera necesite implementar su propio planificador si un marco existente como Marathon/Chronos/Aurora/Kubernetes podría ser suficiente.
  • Funcionalidad del ejecutor: Normalmente no necesita crear un ejecutor personalizado si solo desea iniciar un proceso linux o un contenedor docker y saber cuándo se completa. Puedes usar el valor predeterminado mesos-executor (especificando un CommandInfo directamente en TaskInfo, en lugar de incrustado dentro de un ExecutorInfo). Si, sin embargo, desea construir un ejecutor personalizado, como mínimo necesita implementar launchTask(), e idealmente también killTask().
  • Tarea de ejemplo: Una tarea de ejemplo podría ser un simple comando de linux como sleep 1000 o echo "Hello World", o un contenedor docker (a través de ContainerInfo) como image : 'mysql'. O bien, si utiliza un ejecutor personalizado, entonces el ejecutor define qué es una tarea y cómo ejecutarla, por lo que una tarea podría ejecutarse como otra hilo en el proceso del ejecutor, o simplemente convertirse en un elemento en una cola en un ejecutor de un solo subproceso.
  • Executor pinning: El ejecutor se distribuye a través de URI CommandInfo, al igual que cualquier binario de tarea, por lo que no es necesario preinstalarlo en los nodos. Mesos lo buscará y lo ejecutará por ti.
 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/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-07-07 00:39:04

Schedulers: son una estrategia para aceptar o rechazar la oferta. Schedulers podemos escribir los nuestros o podemos usar algunos ya existentes como chronos. En scheduler debemos evaluar los recursos disponibles y luego aceptar o rechazar.

Funcionalidad del Scheduler: El ejemplo podría ser como supongamos que u tiene una tarea que necesita 8 cpu para ejecutarse, pero la oferta de mesos puede ser 6 cpu que no servirán para la necesidad en este caso u puede rechazar.

Funcionalidad de ejecutor : El ejecutor maneja la información relacionada con el estado de tu tarea. Conjunto de API que necesita implementar como cuál es el estado de la tarea asignada en mesos slave. Cuál es el número de CPU actualmente disponibles en mesos slave donde se está ejecutando executor.

Ejemplo Concreto para ejecutor : chronos

Ser instalado y ejecutado dinámicamente / sobre la marcha : Estos no son posibles, es necesario configurar previamente los ejecutores. Sin embargo, puede replicar los ejecutores utilizando autoscaling.

 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/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-10-25 10:40:39