Iniziare da AWS CLI - Amazon EMR

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

Iniziare da AWS CLI

Passaggio 1: creare un'applicazione EMR serverless

Usa il emr-serverless create-applicationcomando per creare la tua prima applicazione EMR serverless. Devi specificare il tipo di applicazione e l'etichetta di EMR rilascio Amazon associata alla versione dell'applicazione che desideri utilizzare. Il nome dell'applicazione è facoltativo.

Spark

Per creare un'applicazione Spark, esegui il comando seguente.

aws emr-serverless create-application \ --release-label emr-6.6.0 \ --type "SPARK" \ --name my-application
Hive

Per creare un'applicazione Hive, esegui il comando seguente.

aws emr-serverless create-application \ --release-label emr-6.6.0 \ --type "HIVE" \ --name my-application

Annotate l'ID dell'applicazione restituito nell'output. Utilizzerai l'ID per avviare la candidatura e durante l'invio del lavoro, in seguito denominato. application-id

Prima di passare aFase 2: Inviare un job eseguito all'applicazione EMR Serverless, assicurati che la tua candidatura abbia raggiunto lo CREATED stato con. get-applicationAPI

aws emr-serverless get-application \ --application-id application-id

EMRServerless crea lavoratori per soddisfare i lavori richiesti. Per impostazione predefinita, questi vengono creati su richiesta, ma è anche possibile specificare una capacità preinizializzata impostando il initialCapacity parametro al momento della creazione dell'applicazione. È inoltre possibile limitare la capacità massima totale che un'applicazione può utilizzare con il maximumCapacity parametro. Per ulteriori informazioni su queste opzioni, consulta Configurazione di un'applicazione.

Fase 2: Inviare un job eseguito all'applicazione EMR Serverless

Ora la tua applicazione EMR Serverless è pronta per eseguire i lavori.

Spark

In questo passaggio, utilizziamo uno PySpark script per calcolare il numero di occorrenze di parole uniche in più file di testo. Un bucket S3 pubblico di sola lettura memorizza sia lo script che il set di dati. L'applicazione invia il file di output e i dati di registro dal runtime Spark /output e alle /logs directory del bucket S3 che hai creato.

Per eseguire un job Spark
  1. Usa il seguente comando per copiare lo script di esempio che eseguiremo nel tuo nuovo bucket.

    aws s3 cp s3://us-east-1.elasticmapreduce/emr-containers/samples/wordcount/scripts/wordcount.py s3://amzn-s3-demo-bucket/scripts/
  2. Nel comando seguente, sostituiscilo application-id con l'ID dell'applicazione. Sostituiscilo job-role-arn con il ruolo di runtime in ARN cui hai creato. Creare un ruolo Job Runtime Sostituto job-run-name con il nome che vuoi chiamare job run. Sostituisci tutte amzn-s3-demo-bucket le stringhe con il bucket Amazon S3 che hai creato e /output aggiungile al percorso. Questo crea una nuova cartella nel bucket in cui EMR Serverless può copiare i file di output dell'applicazione.

    aws emr-serverless start-job-run \ --application-id application-id \ --execution-role-arn job-role-arn \ --name job-run-name \ --job-driver '{ "sparkSubmit": { "entryPoint": "s3://amzn-s3-demo-bucket/scripts/wordcount.py", "entryPointArguments": ["s3://amzn-s3-demo-bucket/emr-serverless-spark/output"], "sparkSubmitParameters": "--conf spark.executor.cores=1 --conf spark.executor.memory=4g --conf spark.driver.cores=1 --conf spark.driver.memory=4g --conf spark.executor.instances=1" } }'
  3. Annotate l'ID di esecuzione del lavoro restituito nell'output. Sostituiscilo job-run-id con questo ID nei passaggi seguenti.

Hive

In questo tutorial, creiamo una tabella, inseriamo alcuni record ed eseguiamo una query di aggregazione del conteggio. Per eseguire il job Hive, devi prima creare un file che contenga tutte le query Hive da eseguire come parte di un singolo job, carica il file su S3 e specifica questo percorso S3 all'avvio del job Hive.

Per eseguire un lavoro Hive
  1. Crea un file chiamato hive-query.ql che contenga tutte le query che desideri eseguire nel tuo job Hive.

    create database if not exists emrserverless; use emrserverless; create table if not exists test_table(id int); drop table if exists Values__Tmp__Table__1; insert into test_table values (1),(2),(2),(3),(3),(3); select id, count(id) from test_table group by id order by id desc;
  2. Carica hive-query.ql nel tuo bucket S3 con il seguente comando.

    aws s3 cp hive-query.ql s3://amzn-s3-demo-bucket/emr-serverless-hive/query/hive-query.ql
  3. Nel comando seguente, sostituiscilo application-id con il tuo ID dell'applicazione. Sostituiscilo job-role-arn con il ruolo di runtime in ARN cui hai creato. Creare un ruolo Job Runtime Sostituisci tutte amzn-s3-demo-bucket le stringhe con il bucket Amazon S3 che hai creato e /output aggiungi /logs e al percorso. In questo modo vengono create nuove cartelle nel bucket, in cui EMR Serverless può copiare i file di output e di registro dell'applicazione.

    aws emr-serverless start-job-run \ --application-id application-id \ --execution-role-arn job-role-arn \ --job-driver '{ "hive": { "query": "s3://amzn-s3-demo-bucket/emr-serverless-hive/query/hive-query.ql", "parameters": "--hiveconf hive.log.explain.output=false" } }' \ --configuration-overrides '{ "applicationConfiguration": [{ "classification": "hive-site", "properties": { "hive.exec.scratchdir": "s3://amzn-s3-demo-bucket/emr-serverless-hive/hive/scratch", "hive.metastore.warehouse.dir": "s3://amzn-s3-demo-bucket/emr-serverless-hive/hive/warehouse", "hive.driver.cores": "2", "hive.driver.memory": "4g", "hive.tez.container.size": "4096", "hive.tez.cpu.vcores": "1" } }], "monitoringConfiguration": { "s3MonitoringConfiguration": { "logUri": "s3://amzn-s3-demo-bucket/emr-serverless-hive/logs" } } }'
  4. Annotate l'ID di esecuzione del processo restituito nell'output. Sostituiscilo job-run-id con questo ID nei passaggi seguenti.

Fase 3: Esaminate l'output dell'esecuzione del job

Il completamento dell'esecuzione del processo dovrebbe in genere richiedere 3-5 minuti.

Spark

Puoi controllare lo stato del tuo job Spark con il seguente comando.

aws emr-serverless get-job-run \ --application-id application-id \ --job-run-id job-run-id

Con la destinazione dei log impostata sus3://amzn-s3-demo-bucket/emr-serverless-spark/logs, puoi trovare i log relativi a questo specifico job in cui viene eseguito. s3://amzn-s3-demo-bucket/emr-serverless-spark/logs/applications/application-id/jobs/job-run-id

Per le applicazioni Spark, EMR Serverless invia i registri degli eventi ogni 30 secondi sparklogs nella cartella nella destinazione dei registri S3. Al termine del processo, i log di runtime di Spark relativi al driver e agli esecutori vengono caricati in cartelle denominate in modo appropriato in base al tipo di lavoratore, ad esempio o. driver executor L'output del lavoro viene caricato su. PySpark s3://amzn-s3-demo-bucket/output/

Hive

Puoi controllare lo stato del tuo lavoro in Hive con il seguente comando.

aws emr-serverless get-job-run \ --application-id application-id \ --job-run-id job-run-id

Con la destinazione del registro impostata sus3://amzn-s3-demo-bucket/emr-serverless-hive/logs, puoi trovare i log relativi a questo specifico processo in cui viene eseguito. s3://amzn-s3-demo-bucket/emr-serverless-hive/logs/applications/application-id/jobs/job-run-id

Per le applicazioni Hive, EMR Serverless carica continuamente il driver Hive HIVE_DRIVER nella cartella e i registri delle attività Tez nella TEZ_TASK cartella della destinazione del registro S3. Dopo che l'esecuzione del processo raggiunge SUCCEEDED lo stato, l'output della tua query Hive diventa disponibile nella posizione Amazon S3 che hai specificato monitoringConfiguration nel campo di. configurationOverrides

Fase 4: pulizia

Quando hai finito di lavorare con questo tutorial, valuta la possibilità di eliminare le risorse che hai creato. Ti consigliamo di rilasciare risorse che non intendi riutilizzare.

Elimina la tua applicazione

Per eliminare un'applicazione, utilizzare il seguente comando.

aws emr-serverless delete-application \ --application-id application-id

Elimina il tuo bucket di log S3

Per eliminare il bucket di registrazione e output S3, usa il seguente comando. Sostituisci amzn-s3-demo-bucket con il nome effettivo del bucket S3 creato in.. Prepara lo storage per EMR Serverless

aws s3 rm s3://amzn-s3-demo-bucket --recursive aws s3api delete-bucket --bucket amzn-s3-demo-bucket

Elimina il ruolo Job Runtime

Per eliminare il ruolo di runtime, scollega la policy dal ruolo. È quindi possibile eliminare sia il ruolo che la politica.

aws iam detach-role-policy \ --role-name EMRServerlessS3RuntimeRole \ --policy-arn policy-arn

Per eliminare il ruolo, utilizzare il comando seguente.

aws iam delete-role \ --role-name EMRServerlessS3RuntimeRole

Per eliminare la politica allegata al ruolo, utilizzare il comando seguente.

aws iam delete-policy \ --policy-arn policy-arn

Per altri esempi di esecuzione dei job Spark e Hive, consulta Offerte di lavoro Spark e. Lavori Hive