java - ¿Qué hace realmente Apache Mesos?
cluster-computing virtualization (1)
Su resumen es casi correcto, pero no refleja la esencia de lo que representa mesos. La visión de mesosphere, la Compañía detrás del proyecto, es crear un "Sistema Operativo del Centro de Datos" y el mesos es su núcleo en analogía con el kernel de un sistema operativo normal. La API no está limitada a Java, puede usar C, C ++, Java / Scala o Python. Si ha configurado su clúster de mesos, como describe en su pregunta y desea utilizar sus recursos, generalmente lo hace a través de un marco en lugar de ejecutar su carga de trabajo directamente en él. Esto no significa que esto sea complicado. Aquí hay un ejemplo muy pequeño en Scala que demuestra esto. Existen marcos para múltiples sistemas de procesamiento de datos distribuidos populares como Apache Spark , Apache Cassandra . Existen otros marcos como Chronos un cron en el nivel de centro de datos o Marathon que le permite ejecutar aplicaciones basadas en Docker.
Actualizar:
Sí, los mesos se ocuparán de la ubicación en el clúster, ya que eso es lo que hace un kernel: programación y administración de recursos limitados. Sin embargo, la configuración que ha esbozado plantea varias preguntas obvias.
Capas debajo de mesos: la instalación de mesos en CoreOS es posible pero engorroso como creo. Este no es un escenario típico para ejecutar mesos, generalmente se mueve a la capa más baja posible (por encima de Ubuntu en su caso). Así que espero que tengas buenas razones para ejecutar CoreOS y un hipervisor.
Capas sobre mesos: Kubernetes está disponible como marco y la mesosfera parece poner mucho esfuerzo en ello. Sin embargo, es indudable que en parte se superponen en términos de funcionalidad, especialmente con respecto a la programación. Si desea programar cargas de trabajo básicas basadas en Contenedores, podría estar mejor con Marathon o, en el futuro, quizás con Aurora . Así que también aquí espero que tengas buenas razones para este arreglo. Nota al margen: Kubernetes es similar a Marathon con un enfoque más amplio y bastante crítico.
Estoy tratando de envolver mi cabeza alrededor de Apache Mesos y necesito una aclaración sobre algunos artículos.
Mi entendimiento de Mesos es que es un ejecutable que se instala en cada servidor físico / VM (" nodo ") en un clúster, y luego proporciona una API de Java (de alguna manera) que trata cada nodo individual como un conjunto colectivo de recursos informáticos CPU / RAM / etc.). Por lo tanto, para los programas que codifican en función de la API de Java, solo ven 1 conjunto único de recursos, y no tienen que preocuparse de cómo o dónde se implementa el código.
Entonces, por un lado, podría estar equivocado fundamentalmente en mi comprensión aquí (en cuyo caso, ¡corríjame, por favor!). Pero si estoy en el objetivo, ¿cómo permite la API de Java (proporcionada por Mesos) que los clientes de Java aprovechen estos recursos? ¿Alguien puede dar un ejemplo concreto de Mesos en acción?
Actualizar
Echa un vistazo a mi horrible dibujo a continuación. Si entiendo la arquitectura de Mesos correctamente, tenemos un grupo de 3 servidores físicos ( phys01
, phys02
y phys03
). Cada uno de estos físicos está ejecutando un host de Ubuntu (o lo que sea). A través de un hipervisor, digamos, Xen, podemos ejecutar 1+ VMs.
Estoy interesado en Docker y CoreOS, así que los usaré en este ejemplo, pero supongo que lo mismo podría aplicarse a otras configuraciones que no sean contenedores.
Así que en cada VM tenemos CoreOS. En cada instancia de CoreOS se ejecuta un ejecutable / servidor Mesos. Todos los nodos de Mesos en un clúster ven todo lo que hay debajo de ellos como un conjunto único de recursos, y los artefactos se pueden implementar arbitrariamente en el clúster de Mesos y Mesos descubrirá en qué instancia de CoreOS realmente se implementarán.
En la parte superior de Mesos hay un "marco de Mesos" como Marathon o Kubernetes. Corriendo dentro de Kubernetes hay varios contenedores Docker ( C1
- C4
).
¿Es esta comprensión de Mesos más o menos correcta?