Janelas de manutenção do AWS Glue Streaming
O AWS Glue realiza periodicamente atividades de manutenção. Durante essas janelas de manutenção, o AWS Glue precisará reiniciar seus trabalhos de streaming. É possível controlar quando os trabalhos são reiniciados especificando janelas de manutenção. Nesta seção, descrevemos onde configurar a janela de manutenção e os comportamentos específicos que você deve considerar.
Tópicos
Configurar uma janela de manutenção
Você pode configurar uma janela de manutenção usando o AWS Glue Studio ou as APIs.
Configurar uma janela de manutenção no AWS Glue Studio
Especifique uma janela de manutenção na página Detalhes do trabalho do seu trabalho do AWS Glue Streaming. É possível especificar o dia e a hora em GMT. o AWS Glue reiniciará o trabalho dentro da janela de tempo especificada.
Configurar uma janela de manutenção na API
Como alternativa, é possível configurar a janela de manutenção na API Create Job. Este é um exemplo de configuração de janelas de manutenção por meio da API.
aws glue create-job —name jobName —role roleArnForTheJob —command Name=gluestreaming,ScriptLocation=s3-path-to-the-script --maintenance-window="Sun:10"
O comando a seguir é um exemplo:
aws glue create-job —name testMaintenance —role arn:aws:iam::012345678901:role/Glue_DefaultRole —command Name=gluestreaming,ScriptLocation=s3://glue-example-test/example.py —maintenance-window="Sun:10
Comportamento da janela de manutenção
O AWS Glue passa por uma série de etapas para decidir quando reiniciar um trabalho:
Quando um novo trabalho de streaming é iniciado, o AWS Glue primeiro verifica se há um tempo limite associado à execução. Um tempo limite permite configurar a hora de término do trabalho. Se o tempo limite for inferior a 7 dias, o trabalho não será reiniciado.
Se o tempo limite for superior a 7 dias, o AWS Glue verifica se a janela de manutenção está configurada para o trabalho. Se estiver, essa janela será selecionada e a janela será atribuída à execução do trabalho. O AWS Glue reiniciará o trabalho dentro das 3 horas da janela de manutenção especificada. Por exemplo, se você configurar a janela de manutenção para segunda-feira às 10h (GMT), seus trabalhos serão reiniciados entre 10h (GMT) e 13h (GMT).
Se a janela de manutenção não estiver configurada, o AWS Glue definirá automaticamente o horário de reinicialização para 7 dias após o horário de início da execução do trabalho. Por exemplo, se você iniciou o trabalho em 01/07/2024, às 12h GMT, e não especificou janelas de manutenção, o trabalho será configurado para reiniciar em 7/8/2024, às 12h GMT.
nota
Se já estiver executando trabalhos de streaming, essa alteração afetará você a partir de 1º de julho de 2024. Você terá até 30 de junho para configurar as janelas de manutenção. Depois de 1º de julho, todos os trabalhos de streaming que iniciar serão reiniciados de acordo com esta documentação. Se precisar de mais suporte, entre em contato com o AWS Support.
Às vezes, pode não ser possível para o AWS Glue reiniciar o trabalho, especialmente quando o microlote em andamento não está processado. Nesses casos, o trabalho não será interrompido. O AWS Glue reiniciará o trabalho após 14 dias, e a janela de manutenção não será respeitada.
Monitorar trabalhos
Você pode monitorar os trabalhos na página Monitoramento do AWS Glue Studio.
Para ver o horário esperado para a próxima reinicialização dos trabalhos de streaming, mostre a coluna na tabela Execuções de trabalho na página Monitoramento.
Clique no ícone de engrenagem na parte superior direita da tabela.
Role para baixo e ative a coluna Hora esperada da reinicialização. As opções de horário UTC e local estão disponíveis.
Em seguida, você poderá visualizar as colunas na tabela.
O trabalho original terá o status "EXPIRADO", e a nova instância do trabalho terá o status "EM EXECUÇÃO". A ID de execução da nova execução da tarefa que foi reiniciada será uma concatenação do ID de execução inicial da tarefa mais o prefixo "restart_", representando a contagem de reinicializações. Por exemplo, se o ID de execução inicial da tarefa for jr_1234
, a execução da tarefa reiniciada terá o ID jr1234_restart_1
da primeira reinicialização. A segunda reinicialização será jr1234_restart_2
para a segunda reinicialização, e assim por diante.
Sua nova tentativa não será afetada pelas reinicializações. Se uma execução falhar e uma nova execução for iniciada devido a uma nova tentativa automática, o contador de reinicialização começará novamente em 1. Por exemplo, se uma execução falhar em jr_1234_attempt_3_restart_5
, uma nova tentativa automática iniciará uma nova execução com ID: jr_id1_attempt_4
, e, quando essa tentativa for reiniciada após 7 dias, o novo ID de execução será jr_id1_attempt_4_restart_1
.
Como tratar perda de dados
Durante a reinicialização da manutenção, o AWS Glue Streaming segue um processo que garante a integridade e a consistência dos dados entre a execução do trabalho anterior e do trabalho reiniciado. Observe que oAWS Glue não garante a integridade e a consistência dos dados entre as reinicializações dos trabalhos. Recomendamos considerar a arquitetura para lidar com dados duplicados nos trabalhos de streaming.
Detectar condições de reinicialização da manutenção: o AWS Glue Streaming monitora as condições que indicam quando uma reinicialização da manutenção deve ser acionada, como quando uma janela de manutenção é atingida após 7 dias ou uma reinicialização forçada é necessária após 14 dias.
Invocar um encerramento normal: quando as condições de reinicialização da manutenção são atendidas, o AWS Glue Streaming inicia um processo de encerramento normal para o trabalho em execução no momento. O processo inclui as seguintes etapas:
Interromper a ingestão de novos dados: o trabalho de streaming para de consumir novos dados das fontes de entrada (por exemplo, tópicos do Kafka, streams do Kinesis ou arquivos).
Processar dados pendentes: o trabalho continua processando todos os dados que já estão presentes em buffers ou filas internas.
Confirmar compensações e pontos de verificação: o trabalho transfere as compensações ou pontos de verificação mais recentes para sistemas externos (por exemplo, Kafka, Kinesis ou Amazon S3) para garantir que o trabalho reiniciado possa continuar de onde o trabalho anterior parou.
Reiniciar o trabalho: após a conclusão do processo de encerramento normal, o AWS Glue Streaming reinicia o trabalho usando o estado preservado e os pontos de verificação. A tarefa reiniciada retoma o processamento do último offset ou ponto de verificação confirmado, garantindo que nenhum dado seja perdido ou duplicado.
Retomar o processamento de dados: o trabalho reiniciado retoma o processamento de dados a partir do ponto em que o trabalho anterior parou. Ele continua ingerindo novos dados das fontes de entrada, a partir do último offset ou ponto de verificação confirmado, e os processa de acordo com a lógica de ETL definida.