Aggiungi una fase Spark - 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à.

Aggiungi una fase Spark

Puoi utilizzare Amazon EMR Steps per inviare lavori al framework Spark installato su un EMR cluster. Per ulteriori informazioni, consulta i passaggi nella Amazon EMR Management Guide. Nella consoleCLI, puoi farlo utilizzando una fase dell'applicazione Spark, che esegue lo spark-submit script come passaggio per tuo conto. ConAPI, si usa un passaggio per invocare usingspark-submit. command-runner.jar

Per ulteriori informazioni su come inviare applicazioni a Spark, consulta l'argomento Submitting applications (Invio di applicazioni) nella documentazione di Apache Spark.

Per inviare una fase Spark mediante la console
  1. Apri la EMR console Amazon all'indirizzo https://console.aws.amazon.com/emr.

  2. In Cluster List (Elenco cluster), scegliere il nome del cluster.

  3. Scorrere fino alla sezione Steps (Fasi) ed espanderla, quindi scegliere Add step (Aggiungi fase).

  4. Nella finestra di dialogo Add Step (Aggiungi fase):

    • Per Tipo di fase, scegli Applicazione Spark.

    • Per Name (Nome), accettare il nome predefinito (applicazione Spark) o digitare un nuovo nome.

    • Per Deploy mode (Modalità di distribuzione), scegliere la modalità Client o Cluster. La modalità Client avvia il programma driver nell'istanza primaria del cluster, mentre la modalità Cluster avvia il programma driver nel cluster. Per la modalità client, l'output del log del driver viene visualizzato nei log dei passaggi, mentre per la modalità cluster, l'output del log del driver viene visualizzato nei log del primo YARN contenitore. Per ulteriori informazioni, consulta Cluster mode overview (Panoramica della modalità cluster) nella documentazione di Apache Spark.

    • Specificare le Spark-submit options (Opzioni Spark-submit) desiderate. Per ulteriori informazioni sulle opzioni spark-submit, consulta Avvio di applicazioni con spark-submit.

    • Per la posizione dell'applicazione, specifica il URI percorso locale o S3 dell'applicazione.

    • Lasciare vuoto il campo Arguments (Argomenti).

    • Per Action on failure (Operazione in caso di errore), accettare l'opzione predefinita, ovvero Continue (Continua).

  5. Scegliere Add (Aggiungi). La fase viene visualizzata nella console con lo stato Pending (In attesa).

  6. Durante l'esecuzione della fase, lo stato passa da Pending (In attesa) a Running (In esecuzione) a Completed (Completata). Per aggiornare lo stato, scegliere l'icona Refresh (Aggiorna) sopra la colonna Actions (Operazioni).

  7. I risultati del passaggio sono disponibili nella pagina Dettagli del cluster della EMR console Amazon accanto alla fase in File di registro se la registrazione è configurata. È eventualmente possibile trovare informazioni sulla fase nel bucket di log configurato all'avvio del cluster.

Per inviare lavori a Spark, utilizza il AWS CLI

Inviare una fase quando si crea il cluster o si utilizza il sottocomando aws emr add-steps in un cluster esistente.

  1. Utilizzare create-cluster come mostrato nell'esempio seguente.

    Nota

    I caratteri di continuazione della riga Linux (\) sono inclusi per la leggibilità. Possono essere rimossi o utilizzati nei comandi Linux. Per Windows, rimuoverli o sostituirli con un accento circonflesso (^).

    aws emr create-cluster --name "Add Spark Step Cluster" --release-label emr-7.2.0 --applications Name=Spark \ --ec2-attributes KeyName=myKey --instance-type m5.xlarge --instance-count 3 \ --steps Type=Spark,Name="Spark Program",ActionOnFailure=CONTINUE,Args=[--class,org.apache.spark.examples.SparkPi,/usr/lib/spark/examples/jars/spark-examples.jar,10] --use-default-roles

    È anche possibile utilizzare command-runner.jar come mostrato nell'esempio seguente.

    aws emr create-cluster --name "Add Spark Step Cluster" --release-label emr-7.2.0 \ --applications Name=Spark --ec2-attributes KeyName=myKey --instance-type m5.xlarge --instance-count 3 \ --steps Type=CUSTOM_JAR,Name="Spark Program",Jar="command-runner.jar",ActionOnFailure=CONTINUE,Args=[spark-example,SparkPi,10] --use-default-roles
    Nota

    I caratteri di continuazione della riga Linux (\) sono inclusi per la leggibilità. Possono essere rimossi o utilizzati nei comandi Linux. Per Windows, rimuoverli o sostituirli con un accento circonflesso (^).

  2. In alternativa, aggiungere fasi a un cluster in esecuzione. Utilizza add-steps.

    aws emr add-steps --cluster-id j-2AXXXXXXGAPLF --steps Type=Spark,Name="Spark Program",ActionOnFailure=CONTINUE,Args=[--class,org.apache.spark.examples.SparkPi,/usr/lib/spark/examples/jars/spark-examples.jar,10]

    È anche possibile utilizzare command-runner.jar come mostrato nell'esempio seguente.

    aws emr add-steps --cluster-id j-2AXXXXXXGAPLF --steps Type=CUSTOM_JAR,Name="Spark Program",Jar="command-runner.jar",ActionOnFailure=CONTINUE,Args=[spark-example,SparkPi,10]
Per inviare lavori a Spark utilizzando la versione per Java SDK
  1. L'esempio seguente mostra come aggiungere una fase a un cluster con Spark utilizzando Java.

    AWSCredentials credentials = new BasicAWSCredentials(accessKey, secretKey); AmazonElasticMapReduce emr = new AmazonElasticMapReduceClient(credentials); StepFactory stepFactory = new StepFactory(); AmazonElasticMapReduceClient emr = new AmazonElasticMapReduceClient(credentials); AddJobFlowStepsRequest req = new AddJobFlowStepsRequest(); req.withJobFlowId("j-1K48XXXXXXHCB"); List<StepConfig> stepConfigs = new ArrayList<StepConfig>(); HadoopJarStepConfig sparkStepConf = new HadoopJarStepConfig() .withJar("command-runner.jar") .withArgs("spark-submit","--executor-memory","1g","--class","org.apache.spark.examples.SparkPi","/usr/lib/spark/examples/jars/spark-examples.jar","10"); StepConfig sparkStep = new StepConfig() .withName("Spark Step") .withActionOnFailure("CONTINUE") .withHadoopJarStep(sparkStepConf); stepConfigs.add(sparkStep); req.withSteps(stepConfigs); AddJobFlowStepsResult result = emr.addJobFlowSteps(req);
  2. Visualizzare i risultati della fase esaminando i log relativi alla stessa. Puoi farlo AWS Management Console se hai abilitato la registrazione scegliendo Steps, selezionando il tuo passaggio e poi, per i file di log, scegliendo ostdout. stderr Per visualizzare i log disponibili, scegliere View Logs (Visualizza log).

Sostituzione delle impostazioni di configurazione predefinite di Spark

I valori di configurazione predefiniti di Spark possono essere sostituiti per ogni applicazione. Puoi eseguire questa operazione quando invii applicazioni utilizzando una fase, che in pratica passa opzioni a spark-submit. Ad esempio, puoi cambiare la memoria assegnata a un processo esecutore modificando spark.executor.memory. In tal caso, devi fornire il parametro --executor-memory con un argomento come il seguente:

spark-submit --executor-memory 1g --class org.apache.spark.examples.SparkPi /usr/lib/spark/examples/jars/spark-examples.jar 10

Nello stesso modo, puoi regolare --executor-cores e --driver-memory. In una fase, forniresti i seguenti argomenti alla fase:

--executor-memory 1g --class org.apache.spark.examples.SparkPi /usr/lib/spark/examples/jars/spark-examples.jar 10

Puoi anche regolare impostazioni che possono non avere un parametro integrato utilizzando l'opzione --conf. Per ulteriori informazioni su altre impostazioni regolabili, consulta l'argomento Dynamically loading Spark properties (Caricamento dinamico delle proprietà Spark) nella documentazione di Apache Spark.