Quando configurar eventos do EMR em CloudWatch - Amazon EMR

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á.

Quando configurar eventos do EMR em CloudWatch

Para algumas APIs de pesquisa, como DescribeCluster,, e DescribeStep ListClusters, configurar um CloudWatch evento pode reduzir o tempo de resposta às mudanças e liberar suas cotas de serviço. Por exemplo, se você tiver uma função do Lambda configurada para ser executada quando o estado de um cluster for alterado, como quando uma etapa for concluída ou um cluster for encerrado, você poderá usar esse acionador para iniciar a próxima ação em seu fluxo de trabalho em vez de aguardar pela próxima sondagem. Caso contrário, se você tiver instâncias dedicadas do Amazon EC2 ou funções do Lambda sondando constantemente a API do EMR em busca de alterações, você não somente desperdiçará recursos de computação, mas também poderá atingir sua cota de serviço.

A seguir são apresentados alguns casos nos quais você pode se beneficiar ao migrar para uma arquitetura orientada a eventos.

Caso 1: Sondagem do EMR DescribeCluster usando chamadas de API para conclusão da etapa

exemplo Pesquisando o EMR DescribeCluster usando chamadas de API para conclusão da etapa

Um padrão comum é enviar uma etapa para um cluster em execução e consultar o Amazon EMR para obter o status da etapa, normalmente usando DescribeCluster as DescribeStep APIs ou. Essa tarefa também pode ser realizada com atraso mínimo ao se conectar ao evento de alteração de etapa ou de status do Amazon EMR.

Este evento inclui as informações apresentadas a seguir em sua carga útil.

{ "version": "0", "id": "999cccaa-eaaa-0000-1111-123456789012", "detail-type": "EMR Step Status Change", "source": "aws.emr", "account": "123456789012", "time": "2016-12-16T20:53:09Z", "region": "us-east-1", "resources": [], "detail": { "severity": "ERROR", "actionOnFailure": "CONTINUE", "stepId": "s-ZYXWVUTSRQPON", "name": "CustomJAR", "clusterId": "j-123456789ABCD", "state": "FAILED", "message": "Step s-ZYXWVUTSRQPON (CustomJAR) in Amazon EMR cluster j-123456789ABCD (Development Cluster) failed at 2016-12-16 20:53 UTC." } }

No mapa detalhado, uma função do Lambda pode analisar “state”, “stepId” ou “clusterId” para localizar informações pertinentes.

Caso 2: sondagem do EMR para clusters disponíveis para a execução de fluxos de trabalho

exemplo Sondagem do EMR para clusters disponíveis para a execução de fluxos de trabalho

Um padrão para clientes que executam vários clusters é executar fluxos de trabalho em clusters assim que estiverem disponíveis. Se houver muitos clusters em execução e um fluxo de trabalho precisar ser executado em um cluster que está aguardando, um padrão pode ser pesquisar o EMR DescribeCluster usando ListClusters chamadas de API para os clusters disponíveis. Outra maneira de reduzir o atraso em saber quando um cluster está pronto para uma etapa seria processar o evento de alteração de estado do cluster do Amazon EMR.

Este evento inclui as informações apresentadas a seguir em sua carga útil.

{ "version": "0", "id": "999cccaa-eaaa-0000-1111-123456789012", "detail-type": "EMR Cluster State Change", "source": "aws.emr", "account": "123456789012", "time": "2016-12-16T20:43:05Z", "region": "us-east-1", "resources": [], "detail": { "severity": "INFO", "stateChangeReason": "{\"code\":\"\"}", "name": "Development Cluster", "clusterId": "j-123456789ABCD", "state": "WAITING", "message": "Amazon EMR cluster j-123456789ABCD ..." } }

Para este evento, uma função do Lambda pode ser configurada para enviar imediatamente um fluxo de trabalho em espera para um cluster assim que seu status for alterado para WAITING.

Caso 3: sondagem do EMR para o encerramento de um cluster

exemplo Sondagem do EMR para o encerramento de um cluster

Um padrão comum para clientes que executam vários clusters do EMR é sondar o Amazon EMR em busca de clusters encerrados para que o trabalho não seja mais enviado a eles. Você pode implementar esse padrão com as chamadas de ListClusters API DescribeCluster e usando o evento Amazon EMR Cluster State Change em.

Após o encerramento do cluster, o evento emitido é semelhante ao exemplo apresentado a seguir.

{ "version": "0", "id": "1234abb0-f87e-1234-b7b6-000000123456", "detail-type": "EMR Cluster State Change", "source": "aws.emr", "account": "123456789012", "time": "2016-12-16T21:00:23Z", "region": "us-east-1", "resources": [], "detail": { "severity": "INFO", "stateChangeReason": "{\"code\":\"USER_REQUEST\",\"message\":\"Terminated by user request\"}", "name": "Development Cluster", "clusterId": "j-123456789ABCD", "state": "TERMINATED", "message": "Amazon EMR Cluster jj-123456789ABCD (Development Cluster) has terminated at 2016-12-16 21:00 UTC with a reason of USER_REQUEST." } }

A seção “Detalhes” da carga útil inclui o clusterId e o estado que podem ser utilizados.