Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Inizia a usare Amazon EMR su EKS
Questo argomento ti aiuta a iniziare a utilizzare Amazon EMR on EKS distribuendo un'applicazione Spark su un cluster virtuale. Include i passaggi per configurare le autorizzazioni corrette e avviare un lavoro. Prima di iniziare, verifica di aver completato le fasi in Configurazione di Amazon EMR su EKS. Questo ti aiuta a ottenere strumenti come la AWS CLI configurazione prima di creare il tuo cluster virtuale. Per altri modelli che possono aiutarti a iniziare, consulta la nostra guida alle migliori pratiche per EMR i contenitori
Nella procedura di configurazione sono necessarie le seguenti informazioni:
-
ID cluster virtuale per il EKS cluster Amazon e lo spazio dei nomi Kubernetes registrati con Amazon EMR
Importante
Quando crei un EKS cluster, assicurati di utilizzare m5.xlarge come tipo di istanza o qualsiasi altro tipo di istanza con una memoria superiore. CPU L'utilizzo di un tipo di istanza con una memoria inferiore CPU a m5.xlarge può causare l'interruzione del processo a causa dell'insufficiente disponibilità di risorse nel cluster.
-
Nome del IAM ruolo utilizzato per l'esecuzione del job
-
Etichetta di rilascio per la EMR versione Amazon (ad esempio,
emr-6.4.0-latest
) -
I target di destinazione per la registrazione e il monitoraggio:
-
Nome del gruppo di CloudWatch log Amazon e prefisso del flusso di log
-
Ubicazione Amazon S3 per memorizzare i log degli eventi e del container
-
Importante
Amazon EMR on EKS jobs utilizza Amazon CloudWatch e Amazon S3 come destinazioni di destinazione per il monitoraggio e la registrazione. È possibile monitorare l'avanzamento dei processi e risolvere i fallimenti visualizzando i registri dei processi inviati a queste destinazioni. Per abilitare la registrazione, la IAM policy associata al IAM ruolo per l'esecuzione del lavoro deve disporre delle autorizzazioni necessarie per accedere alle risorse di destinazione. Se la IAM policy non dispone delle autorizzazioni richieste, devi seguire i passaggi descritti in Aggiornamento della policy di affidabilità del ruolo di esecuzione di processo Configurare un job run per usare i log di Amazon S3 e Configurare un job run to CloudWatch use Logs prima di eseguire questo job di esempio.
Esecuzione di un'applicazione Spark
Segui i passaggi seguenti per eseguire una semplice applicazione Spark su Amazon EMR suEKS. Il file entryPoint
di applicazione per le applicazioni Spark Python si trova in s3://
. Il REGION
.elasticmapreduce/emr-containers/samples/wordcount/scripts/wordcount.pyREGION
è la regione in cui risiede il tuo Amazon EMR on EKS virtual cluster, ad esempio us-east-1
.
-
Aggiorna la IAM politica per il ruolo di esecuzione del lavoro con le autorizzazioni richieste, come dimostrano le seguenti dichiarazioni politiche.
{ "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
/*" ] } ] }-
La prima istruzione
ReadFromLoggingAndInputScriptBuckets
in questa policy concedeListBucket
eGetObjects
l'accesso ai seguenti bucket Amazon S3:-
: il bucket in cui il file dell'applicazioneREGION
.elasticmapreduceentryPoint
si trova. -
amzn-s3-demo-destination-bucket
‐ un bucket definito dall'utente per i dati di output. -
amzn-s3-demo-logging-bucket
‐ un bucket definito dall'utente per i dati di registrazione.
-
-
La seconda istruzione
WriteToLoggingAndOutputDataBuckets
in questa policy concede al processo le autorizzazioni per scrivere i dati nei bucket di output e per registrarli rispettivamente. -
La terza istruzione
DescribeAndCreateCloudwatchLogStream
concede al job le autorizzazioni per descrivere e creare Amazon CloudWatch Logs. -
La quarta istruzione
WriteToCloudwatchLogs
concede le autorizzazioni per scrivere log su un gruppo di log Amazon denominato CloudWatch
in un flusso di log denominatomy_log_group_name
.mio_log_stream_prefix
-
-
Per eseguire un'applicazione Spark Python, utilizzare il comando seguente. Sostituisci tutti i sostituibili
red italicized
valori con valori appropriati. IlREGION
è la regione in cui risiede il tuo Amazon EMR on EKS virtual cluster, ad esempious-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
" } } }'I dati di output di questo processo saranno disponibili a
s3://
.amzn-s3-demo-destination-bucket
/wordcount_outputPuoi anche creare un JSON file con parametri specifici per l'esecuzione del processo. Quindi esegui il
start-job-run
comando con un percorso del JSON file. Per ulteriori informazioni, consulta Invio di un'esecuzione di processo con StartJobRun. Per ulteriori dettagli sulla configurazione dei parametri di esecuzione del processo, consulta Opzioni per la configurazione di un'esecuzione di processo. -
Per eseguire un'SQLapplicazione Spark, usa il seguente comando. Sostituisci tutti i
red italicized
valori con valori appropriati. IlREGION
è la regione in cui risiede il tuo Amazon EMR on EKS virtual cluster, ad esempious-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
" } } }'Di seguito è riportato un file di SQL query di esempio. È necessario disporre di un archivio file esterno, ad esempio S3, in cui sono archiviati i dati per le tabelle.
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;L'output di questo lavoro sarà disponibile nei log stdout del driver in S3 o CloudWatch, a seconda della
monitoringConfiguration
configurazione. -
È inoltre possibile creare un JSON file con parametri specifici per l'esecuzione del job. Quindi esegui il start-job-run comando con un percorso del JSON file. Per ulteriori informazioni, vedere Invio di un'esecuzione di processo. Per ulteriori informazioni sulla configurazione dei parametri di esecuzione del processo, vedere Opzioni per la configurazione di un'esecuzione di processo.
Per monitorare l'avanzamento del processo o eseguire il debug degli errori, puoi ispezionare i log caricati su Amazon S3, Logs o entrambi. CloudWatch Fai riferimento al percorso di log in Amazon S3 in Configure a job run per usare i log S3 e per i log di Cloudwatch in Configure a job run to use Logs. CloudWatch Per visualizzare i log in Logs, segui le istruzioni riportate di seguito. CloudWatch
-
Apri la CloudWatch console all'indirizzo. https://console.aws.amazon.com/cloudwatch/
-
Nel pannello Navigation (Navigazione), scegli Logs (Log). Quindi, scegli Log groups (Gruppi di log).
-
Scegli il gruppo di log per Amazon EMR EKS e poi visualizza gli eventi di log caricati.
-
Importante
I processi hanno una policy di ripetizione configurata predefinita. Per informazioni sulla modifica o la disabilitazione della configurazione, fai riferimento a Utilizzo delle policy di ripetizione dei processi.