apache-spark yarn mesos apache-spark-standalone

apache spark - ¿Qué tipo de clúster debo elegir para Spark?



apache-spark yarn (4)

Creo que los mejores para responder son aquellos que trabajan en Spark. Entonces, de Learning Spark

Comience con un clúster independiente si se trata de una nueva implementación. El modo independiente es el más fácil de configurar y proporcionará casi todas las mismas características que los otros administradores de clúster si solo está ejecutando Spark.

Si desea ejecutar Spark junto con otras aplicaciones, o utilizar capacidades de programación de recursos más ricas (por ejemplo, colas), tanto YARN como Mesos proporcionan estas características. De estos, YARN probablemente estará preinstalado en muchas distribuciones de Hadoop.

Una ventaja de Mesos sobre el modo YARN y el modo independiente es su opción de uso compartido, que permite que aplicaciones interactivas como el shell Spark reduzcan su asignación de CPU entre comandos. Esto lo hace atractivo en entornos donde varios usuarios ejecutan shells interactivos.

En todos los casos, es mejor ejecutar Spark en los mismos nodos que HDFS para un acceso rápido al almacenamiento. Puede instalar Mesos o el administrador de clúster independiente en los mismos nodos manualmente, o la mayoría de las distribuciones de Hadoop ya instalan YARN y HDFS juntos.

Soy nuevo en Apache Spark y acabo de enterarme de que Spark admite tres tipos de clúster:

  • Independiente, lo que significa que Spark administrará su propio clúster
  • YARN: uso del administrador de recursos YARN de Hadoop
  • Mesos: proyecto de administrador de recursos dedicado de Apache

Como soy nuevo en Spark, creo que debería probar Standalone primero. Pero me pregunto cuál es el recomendado. Digamos, en el futuro necesito construir un clúster grande (cientos de instancias), ¿a qué tipo de clúster debo ir?


Independiente es bastante claro, ya que otros mencionaron que solo debe usarse cuando tiene una carga de trabajo de solo chispa.

Entre hilo y mesos, una cosa a tener en cuenta es el hecho de que, a diferencia de mapreduce, el trabajo de chispa agarra a los ejecutores y lo mantiene durante toda la vida de un trabajo. donde en mapreduce un trabajo puede obtener y liberar mapeadores y reductores durante toda la vida.

si tiene trabajos de chispa de larga duración que durante la vida útil de un trabajo no utilizan por completo todos los recursos que obtuvo al principio, es posible que desee compartir esos recursos con otra aplicación y que solo puede hacerlo a través de Mesos o la programación dinámica de Spark . https://spark.apache.org/docs/2.0.2/job-scheduling.html#scheduling-across-applications Entonces, con hilo, la única forma de asignación dinámica para la chispa es mediante la asignación dinámica proporcionada por la chispa. Yarn no interferirá en eso mientras que Mesos lo hará. Nuevamente, todo este punto solo es importante si tiene una aplicación de chispa de larga ejecución y le gustaría escalarla dinámicamente.


Mesos tiene un diseño de programación más sofisticado, lo que permite que aplicaciones como Spark negocien con él. Es más adecuado para la diversidad de aplicaciones de hoy. Encontré este sitio realmente perspicaz:

https://www.oreilly.com/ideas/a-tale-of-two-clusters-mesos-and-yarn

"... YARN está optimizado para programar trabajos de Hadoop, que históricamente (y aún típicamente) son trabajos por lotes con tiempos de ejecución largos. Esto significa que YARN no fue diseñado para servicios de larga duración, ni para consultas interactivas de corta duración (como pequeñas y trabajos rápidos de Spark), y si bien es posible programar otros tipos de cargas de trabajo, este no es un modelo ideal. Las demandas de recursos, el modelo de ejecución y las demandas arquitectónicas de MapReduce son muy diferentes de las de los servicios de larga duración, como como servidores web o aplicaciones SOA, o cargas de trabajo en tiempo real como las de Spark o Storm ... "


Spark Standalone Manager : un administrador de clúster simple incluido con Spark que facilita la configuración de un clúster. Por defecto, cada aplicación usa todos los nodos disponibles en el clúster.

Algunos benefits de YARN sobre Standalone y Mesos:

  1. YARN le permite compartir dinámicamente y configurar centralmente el mismo grupo de recursos de clúster entre todos los marcos que se ejecutan en YARN .

  2. Puede aprovechar todas las características de los planificadores YARN para clasificar, aislar y priorizar las cargas de trabajo.

  3. El modo autónomo de Spark requiere que cada aplicación ejecute un ejecutor en cada nodo del clúster; mientras que con YARN, eliges el número de ejecutores a usar

  4. YARN maneja directamente la ubicación del estante y la máquina en sus solicitudes, lo cual es conveniente.

  5. El modelo de solicitud de recursos es, curiosamente, al revés en Mesos . En YARN , usted (el marco) solicita contenedores con una especificación dada y le da preferencias de localidad. En Mesos obtienes "ofertas" de recursos y eliges aceptarlas o rechazarlas en función de tu propia política de programación. El modelo Mesos es posiblemente más flexible, pero aparentemente más trabajo para la persona que implementa el marco.

  6. Si ya tiene un gran clúster de Hadoop, YARN es la mejor opción.

  7. El administrador independiente requiere que el usuario configure cada uno de los nodos con el secreto compartido. El módulo de autenticación predeterminado de Mesos , Cyrus SASL, se puede reemplazar con un módulo personalizado. YARN tiene seguridad para la autenticación, autorización de nivel de servicio, autenticación para consolas web y confidencialidad de datos. La autenticación Hadoop usa Kerberos para verificar que Kerberos autentique a cada usuario y servicio.

  8. Los tres administradores de clúster ofrecen alta disponibilidad, pero Hadoop YARN no necesita ejecutar un controlador de conmutación por error ZooKeeper por separado.

Enlaces útiles:

página de documentación de spark

artículo agildata