Como resolver o erro ConnectTimeoutError ao conectar-se a um cluster do Amazon EMR do meu notebook Amazon SageMaker Studio?

Data da última atualização: 14/11/2022

Quero corrigir o erro de tempo limite de conexão que recebo ao tentar me conectar a um cluster do Amazon EMR do meu notebook do Amazon SageMaker Studio.

Resolução

O erro de tempo limite de conexão pode ocorrer devido aos seguintes problemas de configuração de rede para o SageMaker Studio ou para o cluster do Amazon EMR:

  • Amazon Virtual Private Cloud (Amazon VPC)
  • Sub-redes
  • Grupos de segurança

Certifique-se de que os seguintes pré-requisitos para a conexão sejam atendidos:

  • O SageMaker Studio foi iniciado no modo somente VPC.
  • O cluster do Amazon EMR e o notebook do SageMaker Studio foram iniciados na mesma VPC. Se estiverem em VPCs diferentes, estão conectados por meio de uma conexão de emparelhamento da VPC. Se o emparelhamento da VPC for usado para seu caso de uso entre regiões, configure o arquivo config /etc/sparkmagic/config.json manualmente. Isso ocorre porque a funcionalidade de descoberta do cluster do Amazon EMR não oferece suporte à conexão entre regiões atualmente. Para saber mais informações, consulte Build Amazon SageMaker notebooks backed by Spark in Amazon EMR (Criar notebooks do Amazon SageMaker com suporte do Spark no Amazon EMR).
  • O cluster do Amazon EMR foi iniciado com os aplicativos Apache Spark e Apache Livy instalados.

Para resolver erros de tempo limite de conexão, faça o seguinte:

1.    Execute as seguintes verificações:

  • Certifique-se de que os grupos de segurança ou as listas de controle de acesso (ACLs) à rede estejam configurados corretamente para permitir o tráfego na porta 8998. Faça essa verificação para o notebook do SageMaker Studio e para o cluster do Amazon EMR.
  • Certifique-se de que o grupo de segurança do SageMaker Studio tenha uma regra de entrada para permitir o tráfego NFS pela porta 2049 entre o domínio e o volume do Amazon Elastic File System (Amazon EFS).
  • Certifique-se de que o grupo de segurança do nó principal do cluster do EMR tenha uma regra de entrada para TCP personalizado pela porta 8998. Essa regra pode especificar o grupo de segurança do Studio ou um CIDR que inclui a sub-rede do Studio.
    Observação: se você estiver usando o emparelhamento de VPC, consulteUpdate your security groups to reference peer security groups (Atualizar grupos de segurança para referenciar grupos de segurança de pares). Esta documentação fornece informações sobre como especificar um grupo de segurança de uma VPC de várias contas. Se você tem uma conexão de emparelhamento da VPC entre sub-redes do Amazon EMR e do Studio, as respectivas tabelas de rotas devem rotear o tráfego entre si. Se elas não rotearem o tráfego corretamente, você receberá o ConnectTimeoutError.

2.    Se você configurar a sub-rede privada no modo somente VPC sem um gateway NAT, crie os seguintes endpoints de interface do AWS PrivateLink para EMR e AWS Security Token Service (AWS STS), respectivamente:

  • com.amazonaws. .elasticmapreduce
  • com.amazonaws. .sts

Esses endpoints devem ser criados na VPC usada com o cluster do EMR e o SageMaker Studio.

O AWS STS é um serviço global. Portanto, você pode receber o ConnectTimeoutError ao tentar se conectar a um cluster do Amazon EMR de várias contas do Studio em uma região diferente da us-east-1:

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

Para resolver esse erro, defina a variável de ambiente AWS_STS_REGIONAL_ENDPOINTS como regional no caderno Jupyter antes de executar o 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 obter mais informações sobre endpoints regionais, consulte Managing AWS STS in an AWS Region (Gerenciar o AWS STS em uma região da AWS) e AWS STS Regionalized endpoints (Endpoints regionalizados do AWS STS).

3.    Verifique se a conexão funciona abrindo o notebook do Studio, selecionando o kernel Sparkmagic e executando o seguinte comando na célula:

Para conexões na mesma conta:

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

Para conexões entre contas:

%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>

-ou-

Execute o seguinte comando no terminal do notebook no IP privado do nó principal do EMR:

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

Execute as seguintes verificações para garantir que as configurações sejam precisas:

SSH no cluster do EMR para obter o PID do serviço do Livy:

ps -ef | grep livy

Verifique a porta na qual o serviço do Livy está sendo executado:

sudo netstat -anp | grep <PID>

Certifique-se de que o serviço esteja sendo executado na porta padrão (8998) do Livy.


Create and manage Amazon EMR Clusters from SageMaker Studio to run interactive Spark and ML workloads – Part 1 (Criar e gerenciar clusters do Amazon EMR do SageMaker Studio para executar workloads interativos do Spark e de ML — Parte 1)

Create and manage Amazon EMR Clusters from SageMaker Studio to run interactive Spark and ML workloads – Part 2 (Criar e gerenciar clusters do Amazon EMR do SageMaker Studio para executar workloads interativos do Spark e de ML — Parte 2)

Build Amazon SageMaker notebooks backed by Spark in Amazon EMR (Criar notebooks do Amazon SageMaker com suporte do Spark no Amazon EMR)

Este artigo foi útil?


Precisa de ajuda com faturamento ou suporte técnico?