As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Cancelamento da execução de tarefas do EMR Serverless com período de carência
Em sistemas de processamento de dados, terminações abruptas podem levar ao desperdício de recursos, operações incompletas e possíveis inconsistências de dados. O Amazon EMR Serverless permite que você especifique um período de carência ao cancelar a execução de trabalhos. Esse recurso permite tempo para a limpeza adequada e a conclusão do trabalho em andamento antes do término do trabalho.
Ao cancelar a execução de um trabalho, você pode especificar um período de carência (em segundos) usando o parâmetro shutdownGracePeriodInSeconds
durante o qual o trabalho pode realizar operações de limpeza antes do término final. O comportamento e as configurações padrão variam entre trabalhos em lote e de streaming.
Período de carência para trabalhos em lote
Para trabalhos em lote, o EMR Serverless permite que você implemente operações de limpeza personalizadas que são executadas durante o período de carência. Você pode registrar essas operações de limpeza como parte do gancho de desligamento da JVM no código do aplicativo.
Comportamento padrão
O comportamento padrão para o desligamento é não ter período de carência. Consiste nas duas ações a seguir:
Rescisão imediata
Os recursos são liberados imediatamente
Opções de configuração
Você pode especificar configurações que resultam em um desligamento normal:
Intervalo válido para o período de carência de desligamento: 15-1800 segundos (opcional)
Rescisão imediata (sem qualquer período de carência): 0 segundo
Ative um desligamento normal
Para implementar o desligamento normal para trabalhos em lote, siga estas etapas:
-
Adicione um gancho de desligamento no código do seu aplicativo contendo uma lógica de desligamento personalizada.
-
Especifique um período de carência ao cancelar o trabalho para permitir que os ganchos adicionados acima sejam executados
Exemplo
# Default (immediate termination) aws emr-serverless cancel-job-run \ --application-id
APPLICATION_ID
\ --job-run-idJOB_RUN_ID
# With 5-minute grace period aws emr-serverless cancel-job-run \ --application-idAPPLICATION_ID
\ --job-run-idJOB_RUN_ID
\ --shutdown-grace-period-in-seconds 300
Período de carência para trabalhos de streaming
No Spark Structured Streaming, em que os cálculos envolvem leitura ou gravação em fontes de dados externas, desligamentos abruptos podem levar a resultados indesejados. As tarefas de streaming processam dados em microlotes, e interromper essas operações no meio do caminho pode resultar em processamento duplicado em tentativas subsequentes. Isso acontece quando o ponto de verificação mais recente do microlote anterior não foi gravado, fazendo com que os mesmos dados sejam processados novamente quando o trabalho de streaming for reiniciado. Esse processamento duplicado não apenas desperdiça recursos de computação, mas também pode afetar as operações comerciais, tornando crucial evitar paralisações abruptas.
O EMR Serverless fornece suporte integrado para um desligamento normal por meio de um ouvinte de consultas de streaming. Isso garante a conclusão adequada dos microlotes contínuos antes do término do trabalho. O serviço gerencia automaticamente o desligamento normal entre microlotes para aplicativos de streaming, garantindo que o microlote atual conclua o processamento, que os pontos de verificação sejam gravados adequadamente e que o contexto de streaming seja encerrado de forma limpa, sem ingerir novos dados durante o processo de desligamento.
Comportamento padrão
Período de carência de 120 segundos ativado por padrão.
O ouvinte de consultas de streaming integrado gerencia o desligamento normal.
Opções de configuração
Intervalo válido para o período de carência de desligamento: 15-1800 segundos (opcional)
Rescisão imediata: 0 segundo
Ativar o desligamento normal
Para implementar um desligamento normal para trabalhos de streaming:
Especifique um período de carência ao cancelar o trabalho para permitir que o microlote em andamento seja concluído.
Exemplo
# Default graceful shutdown (120 seconds) aws emr-serverless cancel-job-run \ --application-id
APPLICATION_ID
\ --job-run-idJOB_RUN_ID
# Custom grace period (e.g. 300 seconds) aws emr-serverless cancel-job-run \ --application-idAPPLICATION_ID
\ --job-run-idJOB_RUN_ID
\ --shutdown-grace-period-in-seconds 300 # Immediate Termination aws emr-serverless cancel-job-run \ --application-idAPPLICATION_ID
\ --job-run-idJOB_RUN_ID
\ --shutdown-grace-period-in-seconds 0
Adicione ganchos de desligamento personalizados (opcional)
Enquanto o EMR Serverless gerencia o desligamento normal por padrão por meio de seu ouvinte de consultas de streaming integrado, você pode, opcionalmente, implementar uma lógica de desligamento personalizada para consultas de streaming individuais. O EMR Serverless registra seu elegante ouvinte de desligamento com prioridade 60 (usando). ShutdownHookManager Como os ganchos de maior prioridade são executados primeiro, você pode registrar suas operações de limpeza personalizadas com uma prioridade maior que 60 para garantir que elas sejam executadas antes do início do processo de desligamento do EMR Serverless.
Para adicionar um gancho personalizado, consulte o primeiro exemplo neste tópico que mostra como adicionar um gancho de desligamento no código do aplicativo. Aqui, 100 é a prioridade, que é maior que 60. Portanto, esse gancho de desligamento funcionará primeiro.
nota
Ganchos de desligamento personalizados são opcionais e não são necessários para uma funcionalidade de desligamento elegante, que é gerenciada automaticamente pelo EMR Serverless.
Cobranças do período de carência e duração do lote
Se o valor padrão para o período de carência (120 segundos) for usado:
Se a duração do lote for inferior a 120 segundos, você só será cobrado pelo tempo real necessário para concluir o lote.
Se a duração do lote exceder 120 segundos, você será cobrado pelo período máximo de carência (120 segundos), mas a consulta poderá não ser encerrada normalmente, pois será encerrada à força.
Para otimizar os custos e garantir um desligamento adequado:
Para durações de lote > 120 segundos: considere aumentar o período de carência para corresponder à duração do seu lote
Para lotes com duração inferior a 120 segundos: não é necessário ajustar o período de carência, pois você só será cobrado pelo tempo real de processamento
Considerações
O comportamento do período de carência
O período de carência fornece tempo para que seus ganchos de desligamento registrados sejam concluídos.
Job termina assim que o processo de desligamento termina, mesmo que seja bem antes do período de carência.
Se as operações de limpeza excederem o período de carência, o trabalho será encerrado à força.
Comportamento do serviço
O encerramento do período de carência só está disponível para trabalhos no estado RUNNING.
Solicitações de cancelamento subsequentes durante o estado CANCELLING são ignoradas.
-
Se o EMR Serverless falhar em iniciar o desligamento do período de carência devido a erros internos de serviço:
O serviço será repetido por até 2 minutos.
Se as novas tentativas não forem bem-sucedidas, o trabalho será encerrado à força.
Faturamento
Os trabalhos são cobrados pelos recursos computacionais usados até o encerramento completo do trabalho, incluindo qualquer tempo gasto durante o período de carência.