1. Parámetros de envío de Spark-Submit
nombre del parámetro | Valor de parámetro |
---|---|
-Maestro | spark: // host: puerto; mesos: // host: puerto, yarn; yarn-cluster, yarn-clint; local |
–Modo de implementación | El lugar donde se ejecuta el programa Driver, cliente o clúster, el valor predeterminado es cliente |
-clase | Nombre de la clase principal |
-frascos | La coma separa los archivos jar locales, paquetes de terceros de los que dependen el controlador y el ejecutor |
–Archivos | Se colocará una lista de archivos separados por comas en cada directorio de trabajo del ejecutor |
–Conf | Propiedades de configuración de Spark |
–Controlador-memoria | El programa del controlador usa el tamaño de la memoria (por ejemplo: 520M, 2G), el valor predeterminado es 1024M |
–Ejecutor-memoria | El tamaño de la memoria de cada ejecutor (por ejemplo: 2G), el valor predeterminado es 1G |
–Driver-cores | El programa del controlador usa el número de núcleos (predeterminado 1), que se limita al modo de clúster de Spark independiente |
-supervisar | Si reiniciar el controlador después de una falla. Limitado a grupos de chispas independientes o Mesos |
–Colores-totales-ejecutores | El número total de núcleos utilizados por el ejecutor se limita a SparkStandalone y Spark en el modo Mesos |
–Colores-ejecutores | El número de núcleos utilizados por cada ejecutor, chispa en hilo tiene un valor predeterminado de 1 y el valor predeterminado independiente para todos los núcleos disponibles en el trabajador. |
Solo hilo | |
–Driver-cores | El núcleo que usa el controlador está solo en modo de clúster y el valor predeterminado es 1. |
-cola | Especifique el nombre de la cola de recursos, predeterminado: predeterminado |
–Num-ejecutores | El número total de ejecutores iniciados, 2 por defecto. |
2. Análisis del código fuente de la programación de recursos
2.1 Diagrama simple de solicitud de recursos
- Ejecute ./start-all.sh para iniciar el clúster.
- Una vez iniciado el nodo maestro, se comunica con el nodo trabajador a través de ssh.
- Los nodos trabajadores se registran en el nodo maestro a la inversa.
- El nodo maestro encapsula la información del nodo trabajador en
HashSet[WorkerInfo]
unaworkers
colección de tipos . - El cliente a través del
spark-submit
mando tipo misión. - Solicitud para iniciar un controlador desde el nodo maestro.
- El nodo maestro encapsula un
ArrBuffer[DriverInfo]
tipowaitingDriver
(controlador en espera de ser ejecutado). - El nodo maestro selecciona un nodo para iniciar el controlador.
- El controlador solicita al maestro los recursos para la aplicación actual.
- El nodo principal encapsula los recursos de la aplicación en el controlador.
- El controlador envía tareas al nodo Trabajador para su ejecución.
2.2 Ruta maestra de programación de recursos
CLASS="org.apache.spark.deploy.master.Master"
2.3 Enviar solicitud, enviar ruta
org.apache.spark.deploy.SparkSubmit
2.4 Resumen
- El ejecutor se inicia de forma distribuida en el clúster, lo que favorece la localización de los datos de cálculo de la tarea.
- De forma predeterminada (no se establecen
--executor-cores
opciones al enviar una tarea ), cada trabajador inicia un ejecutor para la aplicación actual. Este Ejecutor utilizará todos los núcleos y la memoria 1G de este Trabajador. - Si desea iniciar varios Ejecutores en el Trabajador, debe agregar
--executor-cores
esta opción al enviar la Solicitud . - No hay una configuración predeterminada
--total-executor-cores
, una aplicación usará todos los núcleos en el clúster Spark.
2.5 Presentación de conclusiones
Utilice Spark-submit para enviar una demostración de tareas.
-
De forma predeterminada, cada trabajador inicia un ejecutor para la aplicación actual. Este Ejecutor usa todos los núcleos y la memoria 1G del clúster.
./spark-submit --master spark://masterNode:7077 --class org.apache.spark.examples.SparkPi ../lib/spark-exeamples-1.6.0-hadoop2.6.0.jar 1000
-
Inicie varios ejecutores en el trabajador y establezca los
--executor-cores
parámetros para especificar el número de núcleos utilizados por el ejecutor../spark-submit --master spark://masterNode:7077 --executor-cores 1 --class org.apache.spark.examples.SparkPi ../lib/spark-exeamples-1.6.0-hadoop2.6.0.jar 1000
-
El núcleo se inicia con memoria insuficiente. Cuando se inicia Spark, no solo los parámetros de configuración del núcleo, sino también si la memoria del núcleo configurada es suficiente.
./spark-submit --master spark://masterNode:7077 --executor-cores 1 --executor-memory 3g --class org.apache.spark.examples.SparkPi ../lib/spark-exeamples-1.6.0-hadoop2.6.0.jar 1000
-
--total-executor-cores
Cuántos núcleos se utilizan en el clúster.Nota: varios nodos del clúster no pueden iniciar un proceso.
./spark-submit --master spark://masterNode:7077 --executor-cores 1 --executor-memory 3g --total-executor-cores 3 --class org.apache.spark.examples.SparkPi ../lib/spark-exeamples-1.6.0-hadoop2.6.0.jar 1000