apache-spark - examples - apache spark wikipedia
Spark Driver en Apache spark (5)
Ya tengo un clúster de 3 máquinas (ubuntu1, ubuntu2, ubuntu3 por VM virtualbox) que ejecutan Hadoop 1.0.0. Instalé la chispa en cada una de estas máquinas. ub1 es mi nodo maestro y los otros nodos funcionan como esclavos. Mi pregunta es ¿qué es exactamente una chispa? ¿y deberíamos establecer una IP y un puerto para el controlador de chispa por spark.driver.host
y dónde se ejecutará y ubicará? (maestro o esclavo)
El controlador de chispa es el programa que declara las transformaciones y acciones en RDD de datos y envía tales solicitudes al maestro.
En términos prácticos, el controlador es el programa que crea el SparkContext, que se conecta a un Spark Master determinado. En el caso de un clúster local, como es tu caso, master_url=spark://<host>:<port>
Su ubicación es independiente de los maestros / esclavos. Puede coubicarse con el maestro o ejecutarlo desde otro nodo. El único requisito es que debe estar en una red direccionable de Spark Workers.
Así es como se ve la configuración de su controlador:
val conf = new SparkConf()
.setMaster("master_url") // this is where the master is specified
.setAppName("SparkExamplesMinimal")
.set("spark.local.ip","xx.xx.xx.xx") // helps when multiple network interfaces are present. The driver must be in the same network as the master and slaves
.set("spark.driver.host","xx.xx.xx.xx") // same as above. This duality might disappear in a future version
val sc = new spark.SparkContext(conf)
// etc...
Para explicar un poco más sobre los diferentes roles:
- El controlador prepara el contexto y declara las operaciones sobre los datos utilizando transformaciones y acciones de RDD.
- El controlador envía el gráfico RDD serializado al maestro. El maestro crea tareas y las envía a los trabajadores para su ejecución. Coordina las diferentes etapas del trabajo.
- Los trabajadores son donde las tareas se ejecutan realmente. Deben tener los recursos y la conectividad de red requeridos para ejecutar las operaciones solicitadas en los RDD.
En términos simples, el controlador Spark es un programa que contiene el método principal (el método principal es el punto de partida de su programa). Entonces, en Java, el controlador será la Clase que contendrá el vacío público estático principal (String args []).
En un clúster, puede ejecutar este programa de una de las maneras siguientes: 1) En cualquier máquina host remota. Aquí deberá proporcionar los detalles de la máquina host remota mientras envía el programa del controlador al host remoto. El controlador se ejecuta en el proceso de JVM creado en una máquina remota y solo regresa con el resultado final.
2) Localmente desde su máquina cliente (su computadora portátil). Aquí el programa del controlador se ejecuta en el proceso JVM creado en su máquina localmente. Desde aquí envía la tarea a hosts remotos y espera el resultado de cada tarea.
Si configura config "spark.deploy.mode = cluster", su controlador se iniciará en los hosts de trabajo (ubuntu2 o ubuntu3).
Si spark.deploy.mode = driver, que es el valor predeterminado, el controlador se ejecutará en la máquina donde envíe su aplicación.
Y finalmente, puede ver su aplicación en la interfaz de usuario web: http://driverhost:driver_ui_port , donde driver_ui_port es el 4040 predeterminado, y puede cambiar el puerto configurando "spark.ui.port"
Tu pregunta está relacionada con el despliegue de chispas en el hilo, mira 1 : http://spark.apache.org/docs/latest/running-on-yarn.html "Running Spark on YARN"
Supongamos que comienza desde un cmd de spark-submit --master yarn
:
- El cmd solicitará Resource Manager de hilado (RM) para iniciar un proceso de ApplicationMaster (AM) en una de sus máquinas de clúster (las que tienen instalado el administrador de nodos de hilo).
- Una vez que el AM comenzó, llamará al método principal de su programa de controlador. Entonces, el controlador es realmente el lugar donde define su contexto de chispa, su rdd y sus trabajos. El controlador contiene el método principal de entrada que inicia el cálculo de la chispa.
- El contexto de la chispa preparará el punto final de RPC para que el ejecutor pueda responder, y muchas otras cosas (memoria, bloque, administrador de bloque, servidor de embarcadero ...)
- El AM solicitará RM para contenedores para ejecutar tus ejecutores de chispas, con la URL del controlador RPC (algo así como spark: // CoarseGrainedScheduler @ ip: 37444) especificado en el cmd de inicio del ejecutor.
El cuadro amarillo "Spark context" es el controlador. 1
Un controlador Spark es el proceso que crea y posee una instancia de SparkContext. Es su aplicación Spark la que inicia el método principal en el que se crea la instancia de SparkContext. Es la cabina de mando de la ejecución de trabajos y tareas (usando DAGScheduler y el Programador de tareas). Aloja la interfaz de usuario web para el entorno
Divide una aplicación Spark en tareas y las programa para ejecutarse en ejecutores. Un controlador es donde vive el programador de tareas y engendra tareas entre los trabajadores. Un conductor coordina a los trabajadores y la ejecución general de las tareas.