Eu executei um trabalho de extração, transformação e carregamento (ETL, Extract, Transform and Load) do AWS Glue. No entanto, ele falhou e recebi uma mensagem de erro informando que não há endereços IP livres o suficiente na sub-rede.
Breve descrição
Ao executar um trabalho ETL do AWS Glue, você pode se deparar com um dos seguintes erros:
- “The specified subnet does not have enough free addresses to satisfy the request. (Service: AmazonEC2; Status Code: 400; Error Code: InsufficientFreeAddressesInSubnet; Request ID: my_request_id)”
- “An error occurred calling o70.getDynamicFrame. Job 0 cancelled because SparkContext was shut down caused by threshold for executors failed after launch reached”
O erro anterior pode ocorrer pelos seguintes motivos:
- O trabalho do AWS Glue usa mais unidades de processamento de dados (DPUs, Data Processing Units) do que endereços IP disponíveis.
- Outros serviços da AWS estão usando endereços IP na mesma sub-rede.
- Você não desanexou as interfaces de rede elástica após a conclusão do trabalho.
Resolução
Confirme quantas DPUS o trabalho usa e reduza o número de DPUs
Certifique-se de que o trabalho esteja concluído. Em seguida, confirme quantas DPUs o trabalho usou e determine o número de DPUs que é possível remover.
Para verificar quantas DPUs o trabalho usou, conclua as seguintes etapas:
- Abra o console do AWS Glue.
- No painel de navegação, escolha Trabalhos.
- Selecione o trabalho e, em seguida, escolha a guia Histórico.
- Verifique o número de DPUs na coluna Capacidade máxima.
Em seguida, determine o número de DPUs a serem removidos do trabalho.
O número de DPUs não é igual ao número de interfaces de rede.
Cada operador exige uma interface de rede, com exceção dos seguintes tipos de operador, cada um deles exige uma interface de rede adicional:
- Tipo de operador padrão (1 DPU por operador)
- Tipo de operador G1.X (1 DPU por operador)
- Tipo de opeador G2.X (2 DPUs)
Por exemplo, se você executar um trabalho com 20 operadores em um G.2x, use o cálculo a seguir para calcular o número de endereços IP:
AWS Glue 2.0/3.0/4.0: 40 DPU = 19 operadores (executores) + 1 driver = 20 endereços IP (nenhum executor de tarefas no AWS Glue 2.0/3.0/4.0)
Para reduzir o número de DPUs, conclua as seguintes etapas:
- Abra o console do AWS Glue.
- No painel de navegação, escolha Trabalhos e selecione o trabalho.
- Escolha a lista suspensa Ação e, em seguida, escolha Editar trabalho.
- Expanda a lista Configuração de segurança, bibliotecas de script e parâmetros de trabalho (opcional).
- No campo Capacidade máxima, insira um número menor para o número máximo de DPUs que o trabalho pode usar.
- Salve suas alterações e, em seguida, execute o trabalho novamente.
Verifique o número de endereços IP disponíveis e exclua as interfaces de rede não utilizadas
Primeiro, verifique o número de endereços IP disponíveis na sub-rede.
Conclua as etapas a seguir:
- Abra o console do AWS Glue.
- No painel de navegação, escolha Conexões.
- Selecione a conexão que seu trabalho usa.
- Escolha a lista suspensa Ação e, em seguida, escolha Visualizar detalhes.
- Anote a sub-rede.
- Abra o console da Amazon VPC.
- No painel de navegação, selecione Sub-redes.
- Na lista suspensa Sub-rede, escolha a sub-rede que a conexão do AWS Glue usa.
- Na guia Descrição, marque o campo Endereços IPv4 disponíveis para ver quantos endereços IP estão disponíveis na sub-rede.
- Verifique se a sub-rede tem mais endereços IP disponíveis do que o trabalho do AWS Glue exige.
Se a sub-rede não tiver endereços IP disponíveis o suficiente, exclua todas as interfaces de rede não utilizadas.
Crie e use uma sub-rede com mais endereços IP disponíveis
Se a sub-rede existente não tiver endereços IP suficientes, crie uma nova sub-rede no seu Amazon VPC. É possível usar o bloco CIDR original ou adicionar um novo para expandir o intervalo. Em seguida, verifique se a nova sub-rede usa as mesmas regras da tabela de rotas e lista de controle de acesso à rede (ACL de rede) da sub-rede original. Por exemplo, se sua sub-rede anterior tinha uma rota padrão para um gateway da Internet, a nova sub-rede deve rotear para um gateway da internet.
Atualize a conexão do AWS Glue para usar a nova sub-rede
Conclua as etapas a seguir:
- Abra o console do AWS Glue.
- No painel de navegação, escolha Conexões.
- Selecione a conexão que seu trabalho do AWS Glue usa.
- Na lista suspensa Ação, escolha Editar conexão.
- Na página Configurar as propriedades da sua conexão, escolha Próximo.
- Na página Configurar acesso ao seu armazenamento de dados, na lista suspensa Sub-rede, selecione a nova sub-rede.
- Escolha Próximo e, em seguida, escolha Concluir.
- Execute o trabalho novamente.
Informações relacionadas
Definindo propriedades de trabalho para tarefas do Spark
Configurar o Amazon VPC para conexões do JDBC aos armazenamentos de dados do Amazon RDS a partir do AWS Glue