¿Cuáles son las diferencias entre el modo de client y el modo de cluster de los trabajos de Spark?
Es necesario entender el concepto ApplicationMaster antes de entender las diferencias esenciales entre Yarn-client e Yarn-cluster.
En Yarn, cada instancia de aplicación tiene un proceso ApplicationMaster, que es el primer contenedor iniciado por la aplicación. Interactúa con ResourceManager y solicita recursos. Después de obtener recursos, indica a NodeManager que inicie Container. La diferencia esencial entre los modos Yarn-cluster e Yarn-client radica en el proceso ApplicationMaster.
En el modo Yarn-cluster, Driver se ejecuta en el ApplicationMaster que solicita recursos a Yarn y supervisa el estado de ejecución de un trabajo. Después de que un usuario envíe un trabajo, el cliente se puede detener y el trabajo continúa ejecutándose en Yarn. Por lo tanto, el modo Yarn-cluster no es adecuado para ejecutar trabajos interactivos.
En el modo Yarn-cliente, ApplicationMaster solo solicita al Executor de Yarn. El cliente se comunica con Constainer solicitado para programar tareas. Por lo tanto, el client no puede ser detenido.