Saltar al contenido

¿Cuál es la relación entre trabajadores, instancias de trabajo y ejecutores?

Luego de de nuestra prolongada recopilación de información hemos podido solucionar este atasco que pueden tener ciertos lectores. Te dejamos la solución y nuestro deseo es resultarte de gran ayuda.

Solución:

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

Su primera pregunta depende de lo que quiera 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. Por lo tanto, dos nodos de trabajo generalmente significan dos máquinas, cada una de las cuales es 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.

Extendiendo a otras grandes respuestas, me gustaría describir con pocas imágenes.

En el modo autónomo de Spark, hay nodos maestros y trabajadores.

Si representamos tanto al maestro como a los trabajadores (cada trabajador puede tener varios ejecutores si la CPU y la memoria están disponibles) en un solo lugar para el modo independiente.

Modo autónomo de Spark

Si tiene curiosidad acerca de cómo funciona Spark con YARN? revisa esta publicación Spark on YARN

1. ¿Dos instancias de trabajo significan un nodo de trabajo con dos procesos de trabajo?

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

1 Node = 1 Worker process

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

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

Verifique el nodo Trabajador en la imagen dada.
Un nodo trabajador en un clúster

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

3. ¿Existe un diagrama de flujo que explique cómo desencadenar el tiempo de ejecución?

Si miramos la ejecución desde la perspectiva de Spark sobre cualquier administrador de recursos para un programa, que join dos rdds y hacer algunos reduce operación entonces filter

Tiempo de ejecución de Spark para un código de muestra

hola

Sé que esta es una vieja pregunta y la respuesta de Sean fue excelente. Mi escrito es sobre el 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 trabajador, por lo que realmente no es necesario ejecutar varios trabajadores por máquina. Sin embargo, si usa un administrador de clúster independiente, actualmente solo 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 desee ejecutar varios ejecutores en ella, debe iniciar más de 1 proceso de trabajo. eso es lo que SPARK_WORKER_INSTANCES en el chispa-env.sh es para. El valor predeterminado es 1. Si utiliza 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 del administrador de clúster independiente debería desaparecer pronto. Según este SPARK-1706, este problema se solucionará y publicará en Spark 1.4.

Reseñas y valoraciones

Si tienes algún reparo y capacidad de prosperar nuestro enunciado te invitamos escribir una anotación y con deseo lo observaremos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *