Esegui comandi e script su un cluster Amazon EMR - 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à.

Esegui comandi e script su un cluster Amazon EMR

In questo argomento viene illustrato come eseguire un comando o uno script come fase del cluster. L'esecuzione di un comando o di uno script come fase è uno dei molti modi che puoi Invia lavoro a un cluster ed è utile nelle seguenti situazioni:

  • Quando non hai SSH accesso al tuo EMR cluster Amazon

  • Quando si desidera eseguire un comando bash o shell per risolvere i problemi del cluster

Puoi eseguire uno script sia quando crei un cluster che quando lo stato del cluster è WAITING. Per eseguire uno script prima dell'inizio dell'elaborazione delle fasi, utilizza invece un'operazione di bootstrap. Per ulteriori informazioni sulle azioni di bootstrap, consulta Creare azioni di bootstrap per installare software aggiuntivo nella Amazon EMR Management Guide.

Amazon EMR fornisce i seguenti strumenti per aiutarti a eseguire script, comandi e altri programmi sul cluster. Puoi richiamare entrambi gli strumenti utilizzando la console di EMR gestione Amazon o il AWS CLI.

command-runner.jar

Si trova su Amazon EMR AMI per il tuo cluster. Puoi utilizzare command-runner.jar per eseguire comandi sul cluster. Specificare command-runner.jar senza utilizzare il suo percorso completo.

script-runner.jar

Ospitato su Amazon S3 s3://<region>.elasticmapreduce/libs/script-runner/script-runner.jar dove si <region> trova la regione in cui risiede il EMR cluster Amazon. Puoi utilizzare script-runner.jar per eseguire script salvati localmente o su Amazon S3 sul cluster. È necessario specificare il valore completo URI di script-runner.jar quando si invia un passaggio.

Invia un JAR passaggio personalizzato per eseguire uno script o un comando

I seguenti AWS CLI esempi illustrano alcuni casi d'uso comuni di command-runner.jar e script-runner.jar su AmazonEMR.

Esempio : esecuzione di un comando su un cluster utilizzando command-runner.jar

Quando si utilizza command-runner.jar, si specificano comandi, opzioni e valori nell'elenco degli argomenti del passaggio.

L' AWS CLI esempio seguente invia un passaggio a un cluster in esecuzione che richiama. command-runner.jar Il comando specificato nell'Argselenco scarica uno script chiamato my-script.sh da Amazon S3 nella home directory dell'utente hadoop. Il comando modifica quindi le autorizzazioni dello script e viene eseguito. my-script.sh

Quando si utilizza il AWS CLI, gli elementi dell'Argselenco devono essere separati da virgole senza spazi bianchi tra gli elementi dell'elenco. Ad esempio, Args=[example-command,example-option,"example option value"] anziché Args=[example-command, example-option, "example option value"].

aws emr add-steps \ --cluster-id j-2AXXXXXXGAPLF \ --steps Type=CUSTOM_JAR,Name="Download a script from S3, change its permissions, and run it",ActionOnFailure=CONTINUE,Jar=command-runner.jar,Args=[bash,-c,"aws s3 cp s3://amzn-s3-demo-bucket/my-script.sh /home/hadoop; chmod u+x /home/hadoop/my-script.sh; cd /home/hadoop; ./my-script.sh"]
Esempio : esecuzione di uno script su un cluster utilizzando script-runner.jar

Quando si utilizza script-runner.jar, si specifica lo script che si desidera eseguire nell'elenco degli argomenti del passaggio.

L' AWS CLI esempio seguente invia un passaggio a un cluster in esecuzione che richiama. script-runner.jar In questo caso, lo script chiamato my-script.sh viene archiviato su Amazon S3. È possibile specificare anche script locali archiviati nel nodo principale del cluster.

aws emr add-steps \ --cluster-id j-2AXXXXXXGAPLF \ --steps Type=CUSTOM_JAR,Name="Run a script from S3 with script-runner.jar",ActionOnFailure=CONTINUE,Jar=s3://us-west-2.elasticmapreduce/libs/script-runner/script-runner.jar,Args=[s3://amzn-s3-demo-bucket/my-script.sh]

Altri modi per utilizzare command-runner.jar

È possibile utilizzare anche command-runner.jar per inviare lavori a un cluster con strumenti come spark-submit o hadoop-streaming. Quando si avvia un'applicazione utilizzando command-runner.jar, specifichi CUSTOM_JAR come tipo di passaggio invece di utilizzare un valore come SPARK, STREAMING, oppure PIG. La disponibilità degli strumenti varia a seconda delle applicazioni installate sul cluster.

Il seguente comando di esempio utilizza command-runner.jar per inviare un passaggio utilizzando spark-submit. L'Argselenco specifica spark-submit come comando, seguito da Amazon URI S3 dell'my-app.pyapplicazione Spark con argomenti e valori.

aws emr add-steps \ --cluster-id j-2AXXXXXXGAPLF \ --steps Type=CUSTOM_JAR,Name="Run spark-submit using command-runner.jar",ActionOnFailure=CONTINUE,Jar=command-runner.jar,Args=[spark-submit,S3://amzn-s3-demo-bucket/my-app.py,ArgName1,ArgValue1,ArgName2,ArgValue2]

La tabella seguente identifica gli strumenti aggiuntivi che è possibile eseguire utilizzando command-runner.jar.

Nome dello strumento Descrizione
hadoop-streaming Invia un programma di streaming Hadoop. Nella console e in alcuni casiSDKs, questa è una fase di streaming.
hive-script Esegue uno script Hive. Nella console eSDKs, questa è una fase di Hive.
pig-script Esegue uno script Pig. Nella console eSDKs, questo è un passo Pig.
spark-submit

Esegue un'applicazione Spark. Nella console, questa è una fase Spark.

hadoop-lzo Esegue l'LZOindicizzatore Hadoop su una directory.
s3-dist-cp Copia distribuita grandi quantità di dati da Amazon S3 in. HDFS Per ulteriori informazioni, consulta S3 (DistCp s3-dist-cp).