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á.
Começando com a Amazon EMR em EKS
Este tópico ajuda você a começar a usar a EMR Amazon EKS implantando um aplicativo Spark em um cluster virtual. Inclui etapas para configurar as permissões corretas e iniciar um trabalho. Antes de começar, siga as etapas em Configurando a Amazon EMR em EKS. Isso ajuda você a obter ferramentas como a AWS CLI configurada antes de criar seu cluster virtual. Para outros modelos que podem ajudar você a começar, consulte nosso Guia de melhores práticas de EMR contêineres
Você precisará das seguintes informações para as etapas de configuração:
-
ID de cluster virtual para o EKS cluster Amazon e o namespace Kubernetes registrado na Amazon EMR
Importante
Ao criar um EKS cluster, use m5.xlarge como tipo de instância ou qualquer outro tipo de instância com maior CPU memória. Usar um tipo de instância com memória inferior CPU a m5.xlarge pode levar à falha do trabalho devido à insuficiência de recursos disponíveis no cluster.
-
Nome da IAM função usada para execução do trabalho
-
Etiqueta de lançamento do EMR lançamento da Amazon (por exemplo,
emr-6.4.0-latest
) -
As metas de destino para o registro em log e o monitoramento:
-
Nome do grupo de CloudWatch log da Amazon e prefixo do fluxo de registros
-
A localização do Amazon S3 para armazenar logs de eventos e de contêineres.
-
Importante
A Amazon EMR on EKS jobs usa a Amazon CloudWatch e o Amazon S3 como destinos para monitoramento e registro. Você pode monitorar o progresso do trabalho e solucionar falhas ao visualizar os logs de trabalho enviados para esses destinos. Para habilitar o registro, a IAM política associada à IAM função para execução do trabalho deve ter as permissões necessárias para acessar os recursos de destino. Se a IAM política não tiver as permissões necessárias, você deverá seguir as etapas descritas em Atualização da política de confiança do perfil de execução de trabalho Configurar uma execução de trabalho para usar registros do Amazon S3 e Configurar uma execução de trabalho para CloudWatch usar registros antes de executar esse exemplo de trabalho.
Execução de uma aplicação do Spark
Siga as etapas a seguir para executar um aplicativo Spark simples na Amazon EMR emEKS. O arquivo da aplicação entryPoint
para a aplicação em Python do Spark está localizado em s3://
. A ferramenta REGION
.elasticmapreduce/emr-containers/samples/wordcount/scripts/wordcount.pyREGION
é a região na qual seu cluster EKS virtual Amazon EMR on reside, como us-east-1
.
-
Atualize a IAM política para a função de execução do trabalho com as permissões necessárias, conforme demonstrado nas declarações de política a seguir.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "ReadFromLoggingAndInputScriptBuckets", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::*.elasticmapreduce", "arn:aws:s3:::*.elasticmapreduce/*", "arn:aws:s3:::
amzn-s3-demo-destination-bucket
", "arn:aws:s3:::amzn-s3-demo-destination-bucket
/*", "arn:aws:s3:::amzn-s3-demo-logging-bucket
", "arn:aws:s3:::amzn-s3-demo-logging-bucket
/*" ] }, { "Sid": "WriteToLoggingAndOutputDataBuckets", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:DeleteObject" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-destination-bucket
/*", "arn:aws:s3:::amzn-s3-demo-logging-bucket
/*" ] }, { "Sid": "DescribeAndCreateCloudwatchLogStream", "Effect": "Allow", "Action": [ "logs:CreateLogStream", "logs:DescribeLogGroups", "logs:DescribeLogStreams" ], "Resource": [ "arn:aws:logs:*:*:*" ] }, { "Sid": "WriteToCloudwatchLogs", "Effect": "Allow", "Action": [ "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:*:*:log-group:my_log_group_name
:log-stream:my_log_stream_prefix
/*" ] } ] }-
A primeira instrução
ReadFromLoggingAndInputScriptBuckets
nesta política concede acesso paraListBucket
eGetObjects
aos seguintes buckets do Amazon S3:-
: o bucket em que o arquivo da aplicaçãoREGION
.elasticmapreduceentryPoint
está localizado. -
amzn-s3-demo-destination-bucket
‐ um bucket que você define para seus dados de saída. -
amzn-s3-demo-logging-bucket
‐ um bucket que você define para seus dados de registro.
-
-
A segunda instrução
WriteToLoggingAndOutputDataBuckets
nesta política concede ao trabalho as permissões para gravar dados em seus buckets de saída e de registro em log, respectivamente. -
A terceira declaração
DescribeAndCreateCloudwatchLogStream
concede ao trabalho permissões para descrever e criar Amazon CloudWatch Logs. -
A quarta declaração
WriteToCloudwatchLogs
concede permissões para gravar registros em um grupo de CloudWatch registros da Amazon chamado
sob um fluxo de log chamadonome_do_grupo_do_meu_log
.prefixo my_log_stream
-
-
Para executar uma aplicação em Python do Spark, use o comando apresentado a seguir. Substitua todos os substituíveis
red italicized
valores com valores apropriados. A ferramentaREGION
é a região na qual seu cluster EKS virtual Amazon EMR on reside, comous-east-1
.aws emr-containers start-job-run \ --virtual-cluster-id
cluster_id
\ --namesample-job-name
\ --execution-role-arnexecution-role-arn
\ --release-labelemr-6.4.0-latest
\ --job-driver '{ "sparkSubmitJobDriver": { "entryPoint": "s3://REGION
.elasticmapreduce/emr-containers/samples/wordcount/scripts/wordcount.py", "entryPointArguments": ["s3://amzn-s3-demo-destination-bucket
/wordcount_output"], "sparkSubmitParameters": "--conf spark.executor.instances=2 --conf spark.executor.memory=2G --conf spark.executor.cores=2 --conf spark.driver.cores=1" } }' \ --configuration-overrides '{ "monitoringConfiguration": { "cloudWatchMonitoringConfiguration": { "logGroupName": "my_log_group_name
", "logStreamNamePrefix": "my_log_stream_prefix
" }, "s3MonitoringConfiguration": { "logUri": "s3://amzn-s3-demo-logging-bucket
" } } }'Os dados de saída deste trabalho estarão disponíveis em
s3://
.amzn-s3-demo-destination-bucket
/wordcount_outputVocê também pode criar um JSON arquivo com parâmetros especificados para a execução do seu trabalho. Em seguida, execute o
start-job-run
comando com um caminho para o JSON arquivo. Para obter mais informações, consulte Envio de uma execução de trabalho com StartJobRun. Para obter mais detalhes sobre como configurar parâmetros de execução de trabalho, consulte Opções para a configuração de uma execução de trabalho. -
Para executar um SQL aplicativo Spark, use o comando a seguir. Substitua todos os
red italicized
valores com valores apropriados. A ferramentaREGION
é a região na qual seu cluster EKS virtual Amazon EMR on reside, comous-east-1
.aws emr-containers start-job-run \ --virtual-cluster-id
cluster_id
\ --namesample-job-name
\ --execution-role-arnexecution-role-arn
\ --release-labelemr-6.7.0-latest
\ --job-driver '{ "sparkSqlJobDriver": { "entryPoint": "s3://query-file
.sql", "sparkSqlParameters": "--conf spark.executor.instances=2 --conf spark.executor.memory=2G --conf spark.executor.cores=2 --conf spark.driver.cores=1" } }' \ --configuration-overrides '{ "monitoringConfiguration": { "cloudWatchMonitoringConfiguration": { "logGroupName": "my_log_group_name
", "logStreamNamePrefix": "my_log_stream_prefix
" }, "s3MonitoringConfiguration": { "logUri": "s3://amzn-s3-demo-logging-bucket
" } } }'Um exemplo de arquivo de SQL consulta é mostrado abaixo. Você deve ter um armazenamento de arquivos externo, como o S3, no qual os dados das tabelas são armazenados.
CREATE DATABASE demo; CREATE EXTERNAL TABLE IF NOT EXISTS demo.amazonreview( marketplace string, customer_id string, review_id string, product_id string, product_parent string, product_title string, star_rating integer, helpful_votes integer, total_votes integer, vine string, verified_purchase string, review_headline string, review_body string, review_date date, year integer) STORED AS PARQUET LOCATION 's3://
URI to parquet files
'; SELECT count(*) FROM demo.amazonreview; SELECT count(*) FROM demo.amazonreview WHERE star_rating = 3;A saída desse trabalho estará disponível nos registros de stdout do driver no S3 ou CloudWatch, dependendo do
monitoringConfiguration
que estiver configurado. -
Você também pode criar um JSON arquivo com parâmetros especificados para a execução do seu trabalho. Em seguida, execute o start-job-run comando com um caminho para o JSON arquivo. Para obter mais informações, consulte Envio de uma execução de trabalho. Para obter mais detalhes sobre como configurar parâmetros de execução de trabalho, consulte Opções para a configuração de uma execução de trabalho.
Para monitorar o progresso do trabalho ou para depurar falhas, você pode inspecionar os logs enviados para o Amazon S3 CloudWatch , Logs ou ambos. Consulte o caminho do log no Amazon S3 em Configurar uma execução de trabalho para usar registros do S3 e para os registros do Cloudwatch em Configurar uma execução de trabalho para usar registros. CloudWatch Para ver os registros no CloudWatch Logs, siga as instruções abaixo.
-
Abra o CloudWatch console em https://console.aws.amazon.com/cloudwatch/
. -
No painel de navegação, selecione Logs. Em seguida, escolha Grupos de logs.
-
Escolha o grupo de registros da Amazon EMR em EKS e, em seguida, visualize os eventos de registro enviados.
-
Importante
Os trabalhos têm uma política de repetição padrão configurada. Para obter informações sobre como modificar ou desabilitar a configuração, consulte Uso de políticas de repetição de trabalho.