¿Se transfieren las variables de entorno de un controlador a los trabajadores?
Estoy utilizando Dataproc para ejecutar mis trabajos de pyspark. A continuación se presentan las tres formas en las que puedo enviar mis trabajos:
- Comando
dataproc submit
- Utilidad
spark-submit
proporcionada por spark - Para experimentos pequeños también puedo usar spark-shell
Ahora, tengo que modificar algunas variables de entorno. Por ejemplo, SPARK_HOME
.
Para dataproc submit
tengo opciones para modificar las variables de entorno por separado para el controlador y los trabajadores. Específicamente, puedo usar spark.executorEnv.[Nombre]
para establecer variables de entorno en los trabajadores y spark.yarn.appMasterEnv.[NOMBRE]
para establecer las variables de entorno del controlador.
Para la utilidad spark-submit
y spark-shell, puedo enviar el trabajo de spark después de exportar las variables de entorno solo en el maestro. export $SPARK_HOME='ruta'
y luego funciona correctamente.
Quiero entender qué hace spark internamente con las variables de entorno. ¿Las variables de entorno establecidas en los trabajadores son las mismas que las del maestro y solo se anulan si se establecen explícitamente en los nodos de los trabajadores? ¿Por qué necesitaríamos diferentes variables de entorno para el controlador y los trabajadores?
davy.ai
Spark permite a los usuarios configurar variables de entorno que se utilizan durante la ejecución de tareas. Estas variables de entorno se pueden configurar de forma diferente para el programa controlador y los nodos ejecutores.
Cuando se utiliza el comando
dataproc submit
, se pueden configurar diferentes variables de entorno para el controlador y los trabajadores utilizandospark.yarn.appMasterEnv.[NOMBRE]
yspark.executorEnv.[NOMBRE]
respectivamente. Estas variables de entorno se configuran en el momento de la presentación del trabajo y se propagan a los nodos controlador y ejecutores.Cuando se utiliza la utilidad
spark-submit
yspark-shell
, las variables de entorno se pueden configurar en el nodo maestro utilizando el comandoexport
. Estas variables de entorno se heredan después por los nodos controlador y ejecutores.La razón de tener diferentes variables de entorno para el controlador y los trabajadores es que pueden tener requisitos diferentes. Por ejemplo, algunas variables de entorno pueden ser necesarias solo en el nodo controlador, mientras que otras pueden ser necesarias solo en los nodos ejecutores. La separación de las mismas permite un control más preciso sobre las variables de entorno.
En general, si una variable de entorno está configurada tanto en el controlador como en los nodos ejecutores, la variable del nodo ejecutor tiene prioridad sobre la variable del nodo controlador.