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:
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?
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!
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 llamadastatusUpdate()
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 enTaskInfo
, en lugar de incrustado dentro de unExecutorInfo
). Si, sin embargo, desea construir un ejecutor personalizado, como mínimo necesita implementarlaunchTask()
, e idealmente tambiénkillTask()
. -
Tarea de ejemplo: Una tarea de ejemplo podría ser un simple comando de linux como
sleep 1000
oecho "Hello World"
, o un contenedor docker (a través deContainerInfo
) comoimage : '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.
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.
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