tutorial started spark run locally getting cluster apache-spark apache-spark-standalone

apache spark - started - ¿Cuál es la relación entre los trabajadores, las instancias de los trabajadores y los ejecutores?



getting started apache spark (4)

En el modo Spark independiente , hay nodos maestro y trabajador.

Aquí hay algunas preguntas:

  1. ¿La instancia de 2 trabajadores significa un nodo de trabajador con 2 procesos de trabajo?
  2. ¿Cada instancia de trabajador contiene un ejecutor para una aplicación específica (que gestiona el almacenamiento, la tarea) o un nodo de trabajador tiene un ejecutor?
  3. ¿Hay un diagrama de flujo que explique cómo funciona la chispa, como el recuento de palabras?

Ampliando a otras excelentes respuestas, me gustaría describir con pocas imágenes.

En el modo Spark independiente, hay nodos maestros y nodos de trabajador.

Si representamos tanto al maestro como a los trabajadores en un solo lugar para el modo independiente.

Si tienes curiosidad acerca de cómo funciona Spark con YARN? comprueba esta publicación

1. ¿La instancia de 2 trabajadores significa un nodo de trabajador con 2 procesos de trabajo?

En general, llamamos instancia de trabajador como esclavo, ya que es un proceso para ejecutar tareas / tareas de chispa . El mapeo sugerido para el nodo (una máquina física o virtual) y el trabajador es,

1 Node = 1 Worker process

2. ¿Cada instancia de trabajador contiene un ejecutor para una aplicación específica (que gestiona el almacenamiento, la tarea) o un nodo de trabajador tiene un ejecutor?

Sí, un nodo trabajador puede tener múltiples ejecutores (procesos) si tiene suficiente CPU, memoria y almacenamiento .

Compruebe el nodo Trabajador en la imagen dada.

Por cierto, el número de ejecutores en un nodo de trabajo en un punto dado de tiempo depende completamente de la carga de trabajo en el clúster y la capacidad del nodo para ejecutar cuántos ejecutores.

3. ¿Hay un diagrama de flujo que explique cómo funciona la chispa?

Si observamos la ejecución desde Spark prospectivo sobre cualquier gestor de recursos para un programa, que join dos rdd y realiza alguna operación de reduce , filter

HIH


Como decía Lan, el uso de instancias de múltiples trabajadores solo es relevante en el modo independiente. Hay dos motivos por los que desea tener varias instancias: (1) el recopilador de pausas de basura puede perjudicar el rendimiento de las JVM grandes (2) El tamaño de almacenamiento de más de 32 GB no puede usar CompressedOoops

Obtenga más información sobre cómo configurar múltiples instancias de trabajo .


Sé que esta es una vieja pregunta y la respuesta de Sean fue excelente. Mi reseña es sobre SPARK_WORKER_INSTANCES en el comentario de MrQuestion. Si usa Mesos o YARN como su administrador de clúster, puede ejecutar varios ejecutores en la misma máquina con un solo trabajador, por lo que no es necesario ejecutar múltiples trabajadores por máquina. Sin embargo, si usa el administrador de clústeres autónomo, actualmente solo se permite un ejecutor por proceso de trabajo en cada máquina física. Por lo tanto, en caso de que tenga una máquina súper grande y le gustaría ejecutar múltiples ejecutores en ella, debe iniciar más de 1 proceso de trabajo. Eso es lo que SPARK_WORKER_INSTANCES en el spark-env.sh es para. El valor predeterminado es 1. Si usa esta configuración, asegúrese de establecer SPARK_WORKER_CORES explícitamente para limitar los núcleos por trabajador, o de lo contrario cada trabajador intentará usar todos los núcleos.

Esta limitación de administrador de clúster independiente debería desaparecer pronto. De acuerdo con este SPARK-1706 , este problema será reparado y liberado en Spark 1.4.


Sugiero leer primero los documentos del clúster Spark , pero aún más esta publicación del blog de Cloudera que explica estos modos.

Su primera pregunta depende de lo que quiere decir con ''instancias''. Un nodo es una máquina, y no hay una buena razón para ejecutar más de un trabajador por máquina. Entonces, dos nodos de trabajadores normalmente significan dos máquinas, cada una de ellas un trabajador de Spark.

Los trabajadores tienen muchos ejecutores para muchas aplicaciones. Una aplicación tiene ejecutores en muchos trabajadores.

Tu tercera pregunta no está clara.