¿Cómo resuelvo el error ConnectTimeoutError al conectarme a un clúster de Amazon EMR desde mi bloc de notas de Amazon SageMaker Studio?

5 minutos de lectura
0

Quiero solucionar el error de tiempo de espera de la conexión que recibo al intentar conectarme a un clúster de Amazon EMR desde mi bloc de notas de Amazon SageMaker Studio.

Resolución

El error de tiempo de espera de la conexión puede producirse debido a problemas de configuración de red relacionados con lo siguiente para SageMaker Studio o el clúster de Amazon EMR:

  • Amazon Virtual Private Cloud (Amazon VPC)
  • Subredes
  • Grupos de seguridad

Asegúrese de que se cumplan los siguientes requisitos previos para la conexión:

  • SageMaker Studio se lanza en modo solo VPC.
  • El clúster de Amazon EMR y el bloc de notas de SageMaker Studio se lanzan en la misma VPC. Si están en diferentes VPC, se conectan a través de una conexión de emparejamiento de VPC. Si se utiliza el emparejamiento de VPC para su caso de uso entre regiones, debe configurar el archivo de configuración /etc/sparkmagic/config.json de forma manual. Esto se debe a que, en la actualidad, la funcionalidad de detección del clúster de Amazon EMR no admite la conexión entre regiones. Para obtener más información, consulte Build Amazon SageMaker notebooks backed by Spark in Amazon EMR (Crear blocs de notas de Amazon SageMaker con respaldo de Spark en Amazon EMR).
  • El clúster de Amazon EMR se lanza con las aplicaciones Apache Spark y Apache Livy instaladas.

Para resolver los errores de tiempo de espera de la conexión, haga lo siguiente:

1.    Lleve a cabo las siguientes verificaciones:

  • Asegúrese de que los grupos de seguridad o las listas de control de acceso (ACL) a la red estén configurados correctamente para permitir el tráfico en el puerto 8998. Realice esta comprobación para el bloc de notas de SageMaker Studio y para el clúster de Amazon EMR.
  • Asegúrese de que el grupo de seguridad de SageMaker Studio tenga una regla de entrada que permita el tráfico de NFS en el puerto 2049 entre el dominio y el volumen de Amazon Elastic File System (Amazon EFS).
  • Asegúrese de que el grupo de seguridad del nodo maestro del clúster de EMR tenga una regla de entrada para el TCP personalizado en el puerto 8998. Esta regla puede especificar el grupo de seguridad de Studio o un CIDR que incluya la subred de Studio.
    Nota: Si utiliza el emparejamiento de VPC, consulte Actualizar grupos de seguridad para que hagan referencia a grupos de seguridad del mismo nivel. En esta documentación, se brinda información sobre cómo especificar un grupo de seguridad desde una VPC de múltiples cuentas. Si tiene una conexión de emparejamiento de VPC entre las subredes de Amazon EMR y Studio, las tablas de enrutamiento respectivas deben enrutar el tráfico entre sí. Si no enrutan el tráfico correctamente, aparecerá el error ConnectTimeoutError.

2.    Si configura la subred privada en modo solo VPC sin una puerta de enlace de NAT, cree los siguientes puntos de conexión de la interfaz AWS PrivateLink para EMR y AWS Security Token Service (AWS STS), respectivamente:

  • **com.amazonaws.

.elasticmapreduce**

  • **com.amazonaws.

.sts**

Estos puntos de conexión se deben crear en la VPC que se usa con el clúster de EMR y SageMaker Studio.

AWS STS es un servicio global. Por lo tanto, es posible que aparezca el error ConnectTimeoutError al intentar conectarse a un clúster de Amazon EMR entre cuentas desde Studio en una región que no sea us-east-1:

ConnectTimeoutError: Connect timeout on endpoint URL: "https://sts.amazonaws.com/"

Para resolver este error, defina la variable de entorno AWS_STS_REGIONAL_ENDPOINTS como regional en el bloc de notas de Jupyter antes de ejecutar el comando connect:

%env AWS_STS_REGIONAL_ENDPOINTS=regional
%load_ext sagemaker_studio_analytics_extension.magics
%sm_analytics emr connect --cluster-id example-cluster-id --auth-type None  --assumable-role-arn arn:aws:iam::example-cross-account:role/example-role-name

Para obtener más información sobre los puntos de conexión regionales, consulte Administración de AWS STS en una región de AWS y AWS STS Puntos de enlace regionalizados.

3.    Compruebe si la conexión funciona al abrir el bloc de notas de Studio, seleccionar el núcleo de Sparkmagic y ejecutar el siguiente comando en la celda:

Para conexiones dentro de la misma cuenta:

%local
!sm-sparkmagic connect --cluster-id <cluster-id>

Para conexiones entre cuentas:

%local

# If needed, use STS Regional endpoint
%env AWS_STS_REGIONAL_ENDPOINTS=regional 

!sm-sparkmagic connect --cluster-id <cluster-id> --role-arn arn:aws:iam::<cross-account>:role/<role-name>

o

Ejecute el siguiente comando desde el terminal del bloc de notas en la IP privada del nodo maestro de EMR:

curl <EMR-Master-Private-IP>:8998/sessions -v

Realice las siguientes comprobaciones para asegurarse de que las configuraciones son precisas:

SSH en el clúster de EMR para obtener el PID del servicio Livy:

ps -ef | grep livy

Compruebe el puerto en el que se ejecuta el servicio Livy:

sudo netstat -anp | grep <PID>

Asegúrese de que el servicio se ejecuta en el puerto predeterminado (8998) para Livy.


Información relacionada

Create and manage Amazon EMR Clusters from SageMaker Studio to run interactive Spark and ML workloads – Part 1 (Crear y administrar clústeres de Amazon EMR desde SageMaker Studio para ejecutar cargas de trabajo interactivas de ML y Spark: Parte 1)

Create and manage Amazon EMR Clusters from SageMaker Studio to run interactive Spark and ML workloads – Part 2 (Crear y administrar clústeres de Amazon EMR desde SageMaker Studio para ejecutar cargas de trabajo interactivas de ML y Spark: Parte 2)

Build Amazon SageMaker notebooks backed by Spark in Amazon EMR (Crear blocs de notas de Amazon SageMaker con respaldo de Spark en Amazon EMR)

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace un año