es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Conectando al master remoto con clave de identidad (¿otros métodos de autenticación?)

Estoy tratando de ejecutar spark-submit en el maestro remoto, la complicación es que el maestro remoto requiere un archivo de identidad.

Mi comando:

unix
spark-submit --master spark://<ip_remote_master>:7077 --conf spark.sql.files.ignoreCorruptFiles=true --conf spark.sql.files.ignoreMissingFiles=true --driver-memory 1g --executor-memory 2g run_script.py

Error que estoy obteniendo:

unix
21/12/15 13:01:19 INFO StandaloneAppClient$ClientEndpoint: Conectando al maestro spark://<ip_remote_master>:7077...
21/12/15 13:01:20 WARN StandaloneAppClient$ClientEndpoint: No se pudo conectar al maestro <ip_remote_master>:7077
org.apache.spark.SparkException: Excepción generada al esperar el resultado:
        at org.apache.spark.util.ThreadUtils$.awaitResult(ThreadUtils.scala:301)
        at org.apache.spark.rpc.RpcTimeout.awaitResult(RpcTimeout.scala:75)
        at org.apache.spark.rpc.RpcEnv.setupEndpointRefByURI(RpcEnv.scala:101)
        at org.apache.spark.rpc.RpcEnv.setupEndpointRef(RpcEnv.scala:109)
        at org.apache.spark.deploy.client.StandaloneAppClient$ClientEndpoint$$anon$1.run(StandaloneAppClient.scala:107)

Intenté agregar <ip_remote_master> a .ssh/config con el archivo *.pem relevante, pero supongo que fue un callejón sin salida porque la conexión de Spark al maestro no es realmente un proceso SSH.

¿Cómo puedo hacerlo funcionar manteniendo también la autenticación de mi host remoto?

Algo que creo que es irrelevante, ya que estoy buscando una solución agnóstica de la nube: local = AWS EC2, remoto = AWS EMR (puedo hacer SSH de uno a otro).

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para conectarse a un maestro remoto que requiere un archivo de identidad, puede utilizar la opción --conf spark.executorEnv.SPARK_IDENTIY_FILE=<ruta-al-archivo-de-identidad> al enviar el trabajo Spark. Esto pasará el archivo de identidad a los procesos ejecutores y les permitirá autenticarse con el maestro remoto.

    Su comando se vería así:

    spark-submit --master spark://<ip_maestro_remoto>:7077 \
    --conf spark.sql.files.ignoreCorruptFiles=true \
    --conf spark.sql.files.ignoreMissingFiles=true \
    --driver-memory 1g --executor-memory 2g \
    --conf spark.executorEnv.SPARK_IDENTIY_FILE=<ruta-al-archivo-de-identidad> \
    run_script.py
    

    Asegúrese de reemplazar <ruta-al-archivo-de-identidad> con la ruta real de su archivo de identidad. Además, asegúrese de que el usuario que ejecuta el comando spark-submit tenga permisos de lectura para el archivo de identidad.

    Esta solución debería funcionar independientemente del proveedor de servicios en la nube que esté utilizando (AWS, GCP, Azure, etc.).

Comments are closed.