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á.
Conceitos básicos do Amazon EMR no EKS
Este tópico ajuda você a começar a usar o Amazon EMR no EKS ao implantar uma aplicação do 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 Configuração do Amazon EMR no EKS. Isso ajuda você a obter ferramentas como a AWS CLI configurada antes de criar seu cluster virtual. Para obter outros modelos que podem ajudar você a começar a usar, consulte nosso EMR Containers Best Practices Guide
Você precisará das seguintes informações para as etapas de configuração:
-
O ID do cluster virtual para o cluster do Amazon EKS e o namespace do Kubernetes registrado no Amazon EMR.
Importante
Ao criar um cluster do EKS, certifique-se de usar m5.xlarge como tipo de instância ou qualquer outro tipo de instância com CPU e memória superiores. Usar um tipo de instância com CPU ou memória inferior ao m5.xlarge, pode levar à falha do trabalho devido à insuficiência de recursos disponíveis no cluster.
-
O nome do perfil do IAM usado para a execução do trabalho.
-
O rótulo de versão da versão do Amazon EMR (por exemplo,
emr-6.4.0-latest
). -
As metas de destino para o registro em log e o monitoramento:
-
O nome do grupo de logs do Amazon CloudWatch e o prefixo do fluxo de logs.
-
A localização do Amazon S3 para armazenar logs de eventos e de contêineres.
-
Importante
Os trabalhos do Amazon EMR no EKS usam o Amazon CloudWatch e o Amazon S3 como as metas de destino para o monitoramento e o registro em log. Você pode monitorar o progresso do trabalho e solucionar falhas ao visualizar os logs de trabalho enviados para esses destinos. Para ativar o registro em log, a política do IAM associada ao perfil do IAM para a execução do trabalho deve ter as permissões necessárias para acessar os recursos das metas. Se a política do IAM não tiver as permissões obrigatórias, você deverá seguir as etapas descritas em Atualização da política de confiança do perfil de execução de trabalho, 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 CloudWatch Logs antes de executar este exemplo de trabalho.
Execução de uma aplicação do Spark
Siga as etapas a seguir para executar uma aplicação simples do Spark no Amazon EMR no EKS. O arquivo da aplicação entryPoint
para a aplicação em Python do Spark está localizado em s3://
. A REGION
.elasticmapreduce/emr-containers/samples/wordcount/scripts/wordcount.pyREGION
corresponde à região na qual reside o cluster virtual do Amazon EMR no EKS, como us-east-1
.
-
Atualize a política do IAM para o perfil de execução de trabalho com as permissões necessárias, conforme demonstram as instruçõ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 os dados de saída. -
amzn-s3-demo-logging-bucket
: um bucket que você define para os dados de registro em log.
-
-
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 instrução
DescribeAndCreateCloudwatchLogStream
concede ao trabalho as permissões para descrever e criar com o Amazon CloudWatch Logs. -
A quarta instrução
WriteToCloudwatchLogs
concede as permissões para gravar logs em um grupo de logs do Amazon CloudWatch denominado
em um fluxo de logs chamadomy_log_group_name
.my_log_stream_prefix
-
-
Para executar uma aplicação em Python do Spark, use o comando apresentado a seguir. Substitua todos os valores substituíveis destacados
em itálico e em vermelho
por valores apropriados. AREGION
corresponde à região na qual reside o cluster virtual do Amazon EMR no EKS, 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 arquivo JSON com parâmetros especificados para sua execução de trabalho. Em seguida, execute o comando
start-job-run
com um caminho para o arquivo JSON. Para ter 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 uma aplicação em SQL do Spark, use o comando apresentado a seguir. Substitua todos os valores destacados
em itálico e em vermelho
por valores apropriados. AREGION
corresponde à região na qual reside o cluster virtual do Amazon EMR no EKS, 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 arquivo de consulta SQL de exemplo é 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 deste trabalho estará disponível nos logs stdout do driver no S3 ou no CloudWatch, dependendo do
monitoringConfiguration
que estiver configurado. -
Você também pode criar um arquivo JSON com parâmetros especificados para sua execução de trabalho. Em seguida, execute o comando start-job-run com um caminho para o arquivo JSON. 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 depurar falhas, é possível inspecionar os logs carregados no Amazon S3, no CloudWatch Logs ou em ambos. Consulte o caminho do log no Amazon S3 em Configuração de uma execução de trabalho para usar logs do S3 e dos logs do CloudWatch em Configuração de uma execução de trabalho para usar o CloudWatch Logs. Para visualizar os logs no CloudWatch Logs, siga as instruções abaixo.
-
Abra o console do CloudWatch em https://console.aws.amazon.com/cloudwatch/
. -
No painel de navegação, selecione Logs. Em seguida, escolha Grupos de logs.
-
Escolha o grupo de logs do Amazon EMR no EKS e, em seguida, visualize os eventos de log carregados.
-
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.