Gerenciamento de execuções de trabalhos com a AWS CLI - 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á.

Gerenciamento de execuções de trabalhos com a AWS CLI

Esta página aborda como gerenciar execuções de trabalhos com a AWS Command Line Interface (AWS CLI).

Opções para a configuração de uma execução de trabalho

Use as seguintes opções para configurar os parâmetros de execução de trabalho:

  • --execution-role-arn: você deve fornecer um perfil do IAM que é usado para a execução de trabalhos. Para obter mais informações, consulte Uso de perfis de execução de trabalho com o Amazon EMR no EKS.

  • --release-label: você pode implantar o Amazon EMR no EKS com as versões 5.32.0 e 6.2.0 e posteriores do Amazon EMR. O Amazon EMR no EKS não é compatível com as versões anteriores do Amazon EMR. Para obter mais informações, consulte Amazon EMR em EKS lançamentos.

  • --job-driver: o driver de trabalho usado para fornecer entradas sobre o trabalho principal. Este é um campo do tipo união no qual você só pode transferir um dos valores para o tipo de trabalho que deseja executar. Os tipos de trabalho com suporte incluem:

    • Trabalhos do Spark-submit: usados ​​para executar um comando por meio do spark-submit. Você pode usar este tipo de trabalho para executar o Scala, o PySpark, o Spark R, o Spark SQL e quaisquer outros trabalhos com suporte por meio do spark-submit. Esse tipo de trabalho tem os seguintes parâmetros:

      • Entrypoint: esta é a referência do HCFS (sistema de arquivos compatível com Hadoop) para o arquivo principal em JAR/PY que você deseja executar.

      • EntryPointArguments: esta é uma matriz de argumentos que você deseja transferir para seu arquivo principal em JAR/PY. Você deve realizar a leitura desses parâmetros usando seu código de Entrypoint. Cada argumento na matriz deve ser separado por uma vírgula. Os argumentos do EntryPointArguments não podem conter colchetes ou parênteses, como (), {} ou [].

      • SparkSubmitParameters: esses são os parâmetros adicionais do Spark que você deseja enviar para o trabalho. Use este parâmetro para substituir as propriedades padrão do Spark, como a memória do driver ou o número de executores, como —conf ou —class. Para obter informações adicionais, consulte Launching Applications with spark-submit.

    • Trabalhos do Spark SQL: usados ​​para executar um arquivo de consulta SQL por meio do Spark SQL. Você pode usar esse tipo de trabalho para executar trabalhos do Spark SQL. Esse tipo de trabalho tem os seguintes parâmetros:

      • Entrypoint: esta é a referência do HCFS (sistema de arquivos compatível com Hadoop) para o arquivo de consulta SQL que você deseja executar.

        Para obter uma lista de parâmetros adicionais do Spark que você pode usar para um trabalho do Spark SQL, consulte Execução de scripts do Spark SQL por meio da API StartJobRun.

  • --configuration-overrides: você pode substituir as configurações padrão para as aplicações ao fornecer um objeto de configuração. Você pode usar uma sintaxe abreviada para fornecer a configuração ou fazer referência ao objeto de configuração em um arquivo JSON. Os objetos de configuração consistem em uma classificação, propriedades e configurações opcionais aninhadas As propriedades consistem nas configurações que você deseja substituir neste arquivo. Você pode especificar várias classificações para diversas aplicações em um único objeto JSON. As classificações de configuração disponíveis variam de acordo com a versão do Amazon EMR. Para obter uma lista das classificações de configuração disponíveis para cada versão de liberação do Amazon EMR, consulte Amazon EMR em EKS lançamentos.

    Se você transferir a mesma configuração em uma substituição de aplicação e nos parâmetros do spark-submit, os parâmetros do spark-submit terão precedência. A lista completa de prioridades de configuração é apresentada a seguir, na ordem da prioridade mais alta para a prioridade mais baixa.

    • Configuração fornecida ao criar SparkSession.

    • Configuração fornecida como parte do sparkSubmitParameters usando —conf.

    • Configuração fornecida como parte das substituições de aplicações.

    • Configurações otimizadas escolhidas pelo Amazon EMR para a versão.

    • Configurações padrão de código aberto para a aplicação.

    Para monitorar as execuções de trabalhos usando o Amazon CloudWatch ou o Amazon S3, você deve fornecer os detalhes de configuração do CloudWatch. Para obter mais informações, consulte Configuração de uma execução de trabalho para usar logs do Amazon S3 e Configuração de uma execução de trabalho para usar o Amazon CloudWatch Logs. Se o bucket do S3 ou o grupo de logs do CloudWatch não existir, o Amazon EMR realizará a criação antes de fazer o upload dos logs para o bucket.

  • Para obter uma lista adicional de opções de configuração do Kubernetes, consulte Spark Properties on Kubernetes.

    As configurações do Spark apresentadas a seguir não têm suporte.

    • spark.kubernetes.authenticate.driver.serviceAccountName

    • spark.kubernetes.authenticate.executor.serviceAccountName

    • spark.kubernetes.namespace

    • spark.kubernetes.driver.pod.name

    • spark.kubernetes.container.image.pullPolicy

    • spark.kubernetes.container.image

      nota

      Você pode usar spark.kubernetes.container.image para imagens do Docker personalizadas. Para obter mais informações, consulte Personalizando imagens do Docker para a Amazon em EMR EKS.

Configuração de uma execução de trabalho para usar logs do Amazon S3

Para poder monitorar o progresso do trabalho e solucionar falhas, você deve configurar os trabalhos para enviar informações de log ao Amazon S3, ao Amazon CloudWatch Logs ou a ambos. Este tópico ajuda você a começar a publicar logs de aplicações no Amazon S3 em trabalhos iniciados com o Amazon EMR no EKS.

Política do IAM para logs do S3

Antes que os trabalhos possam enviar dados de log ao Amazon S3, as permissões apresentadas a seguir devem ser inclusas na política de permissões para o perfil de execução do trabalho. Substitua DOC-EXAMPLE-BUCKET-LOGGING pelo nome do bucket de registro em log.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-BUCKET-LOGGING", "arn:aws:s3:::DOC-EXAMPLE-BUCKET-LOGGING/*", ] } ] }
nota

O Amazon EMR no EKS também pode criar um bucket do Amazon S3. Se um bucket do Amazon S3 não estiver disponível, inclua a permissão “s3:CreateBucket” na política do IAM.

Depois de conceder ao perfil de execução as permissões adequadas para enviar logs ao Amazon S3, os dados de log serão enviados para os locais do Amazon S3 apresentados a seguir quando s3MonitoringConfiguration for transmitida na seção monitoringConfiguration de uma solicitação start-job-run, conforme mostrado em Gerenciamento de execuções de trabalhos com a AWS CLI.

  • Logs do controlador: /logUri/virtual-cluster-id/jobs/job-id/containers/pod-name/(stderr.gz/stdout.gz)

  • Logs do driver: /logUri/virtual-cluster-id/jobs/job-id/containers/spark-application-id/spark-job-id-driver/(stderr.gz/stdout.gz)

  • Logs do executor: /logUri/virtual-cluster-id/jobs/job-id/containers/spark-application-id/executor-pod-name/(stderr.gz/stdout.gz)

Configuração de uma execução de trabalho para usar o Amazon CloudWatch Logs

Para monitorar o progresso do trabalho e solucionar falhas, você deve configurar os trabalhos para enviar informações de log ao Amazon S3, ao Amazon CloudWatch Logs ou a ambos. Este tópico ajuda você a começar a usar o CloudWatch Logs em trabalhos iniciados com o Amazon EMR no EKS. Para obter mais informações sobre o CloudWatch Logs, consulte Monitoring Log Files no Guia do usuário do Amazon CloudWatch.

Política do IAM para o CloudWatch Logs

Para que seus trabalhos enviem dados de log ao CloudWatch Logs, as permissões apresentadas a seguir devem ser inclusas na política de permissões para o perfil de execução do trabalho. Substitua my_log_group_name e my_log_stream_prefix pelos nomes do grupo de logs do CloudWatch e pelos nomes do fluxo de logs, respectivamente. O Amazon EMR no EKS cria o grupo de logs e o fluxo de logs se eles não existirem, desde que o ARN do perfil de execução tenha as permissões apropriadas.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogStream", "logs:DescribeLogGroups", "logs:DescribeLogStreams" ], "Resource": [ "arn:aws:logs:*:*:*" ] }, { "Effect": "Allow", "Action": [ "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:*:*:log-group:my_log_group_name:log-stream:my_log_stream_prefix/*" ] } ] }
nota

O Amazon EMR no EKS também pode criar um fluxo de logs. Se um fluxo de logs não existir, a política do IAM deverá incluir a permissão "logs:CreateLogGroup".

Depois que você conceder as permissões adequadas ao perfil de execução, a aplicação enviará os dados de log para o CloudWatch Logs quando cloudWatchMonitoringConfiguration for transmitida na seção monitoringConfiguration de uma solicitação start-job-run, conforme mostrado em Gerenciamento de execuções de trabalhos com a AWS CLI.

Na API StartJobRun, log_group_name é o nome do grupo de logs do CloudWatch e log_stream_prefix é o prefixo do nome do fluxo de logs do CloudWatch. Você pode visualizar e pesquisar esses logs no AWS Management Console.

  • Logs do controlador: logGroup/logStreamPrefix/virtual-cluster-id/jobs/job-id/containers/pod-name/(stderr/stdout)

  • Logs do driver: logGroup/logStreamPrefix/virtual-cluster-id/jobs/job-id/containers/spark-application-id/spark-job-id-driver/(stderrstdout)

  • Logs do executor: logGroup/logStreamPrefix/virtual-cluster-id/jobs/job-id/containers/spark-application-id/executor-pod-name/(stderr/stdout)

Listagem de execuções de trabalhos

Você pode executar list-job-run para mostrar os estados das execuções de trabalhos, como demonstra o exemplo a seguir.

aws emr-containers list-job-runs --virtual-cluster-id <cluster-id>

Descrição de uma execução de trabalho

Você pode executar describe-job-run para obter mais detalhes sobre o trabalho, como o estado do trabalho, os detalhes do estado e o nome do trabalho, como demonstra o exemplo a seguir.

aws emr-containers describe-job-run --virtual-cluster-id cluster-id --id job-run-id

Cancelamento de uma execução de trabalho

Você pode executar cancel-job-run para cancelar trabalhos em execução, como demonstra o exemplo a seguir.

aws emr-containers cancel-job-run --virtual-cluster-id cluster-id --id job-run-id