Specifiche dell'applicazione Spark con le AMI versioni precedenti di 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à.

Specifiche dell'applicazione Spark con le AMI versioni precedenti di Amazon EMR

Utilizzo di Spark in modalità interattiva o batch

Amazon ti EMR consente di eseguire le applicazioni Spark in due modalità:

  • Interactive

  • Archiviazione

Quando avvii un cluster di lunga durata utilizzando la console o il AWS CLI, puoi connetterti utilizzando SSH il nodo master come utente Hadoop e utilizzare la shell Spark per sviluppare ed eseguire le tue applicazioni Spark in modo interattivo. L'utilizzo di Spark in modalità interattiva ti consente di realizzare prototipi di applicazioni Spark o di testarle più facilmente rispetto a un ambiente batch. Dopo aver modificato correttamente l'applicazione Spark in modalità interattiva, puoi inserire l'applicazione o il programma JAR Python nel file system locale del nodo master del cluster su Amazon S3. Puoi quindi inviare l'applicazione come flusso di lavoro batch.

In modalità batch, carica lo script Spark in Amazon S3 o nel file system del nodo master locale, quindi invia il lavoro al cluster come fase. Le fasi Spark possono essere inviate a un cluster di lunga durata o a un cluster transitorio.

Creazione di un cluster con Spark installato

Per avviare un cluster con Spark installato mediante la console
  1. Passa alla nuova EMR console Amazon e seleziona Passa alla vecchia console dalla barra di navigazione laterale. Per ulteriori informazioni su cosa aspettarti quando passi alla vecchia console, consulta Utilizzo della vecchia console.

  2. Scegli Create cluster (Crea cluster).

  3. Per la configurazione del software, scegli la versione di AMI rilascio richiesta.

  4. Per Applications to be installed (Applicazioni da installare), scegliere Spark dall'elenco, quindi scegliere Configure and add (Configura e aggiungi).

  5. Aggiungere argomenti per modificare la configurazione di Spark, come desiderato. Per ulteriori informazioni, consulta Configurazione di Spark. Scegliere Aggiungi.

  6. Seleziona le altre opzioni come richiesto, quindi scegli Create cluster (Crea cluster).

L'esempio seguente mostra come creare un cluster con Spark utilizzando Java:

AmazonElasticMapReduceClient emr = new AmazonElasticMapReduceClient(credentials); SupportedProductConfig sparkConfig = new SupportedProductConfig() .withName("Spark"); RunJobFlowRequest request = new RunJobFlowRequest() .withName("Spark Cluster") .withAmiVersion("3.11.0") .withNewSupportedProducts(sparkConfig) .withInstances(new JobFlowInstancesConfig() .withEc2KeyName("myKeyName") .withInstanceCount(1) .withKeepJobFlowAliveWhenNoSteps(true) .withMasterInstanceType("m3.xlarge") .withSlaveInstanceType("m3.xlarge") ); RunJobFlowResult result = emr.runJobFlow(request);

Configurazione di Spark

Puoi configurare Spark quando crei un cluster eseguendo l'azione bootstrap che si trova nel repository awslabs/ emr-bootstrap-actions /spark su Github. Per gli argomenti accettati dall'azione bootstrap, consulta in that repository. README L'operazione di bootstrap configura proprietà nel file $SPARK_CONF_DIR/spark-defaults.conf. Per ulteriori informazioni sulle impostazioni, consulta l'argomento relativo alla configurazione di Spark nella documentazione di Spark. Puoi sostituire «latest» di seguito URL con il numero di versione di Spark che stai installando, ad esempio. 2.2.0 http://spark.apache.org/docs/latest/configuration.html

Puoi inoltre configurare Spark in modo dinamico al momento dell'invio di ogni applicazione. Un'impostazione che consente di massimizzare automaticamente l'allocazione delle risorse per un esecutore è disponibile nel file di configurazione spark. Per ulteriori informazioni, consulta Sostituzione delle impostazioni di configurazione predefinite di Spark.

Modifica delle impostazioni di default di Spark

L'esempio seguente mostra come creare un cluster con spark.executor.memory impostato su 2G utilizzando AWS CLI.

Nota

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

aws emr create-cluster --name "Spark cluster" --ami-version 3.11.0 \ --applications Name=Spark, Args=[-d,spark.executor.memory=2G] --ec2-attributes KeyName=myKey \ --instance-type m3.xlarge --instance-count 3 --use-default-roles

Invio di lavoro a Spark

Per inviare il lavoro a un cluster, esegui spark-submit lo script sul EMR cluster in un passaggio. Aggiungi il passaggio utilizzando il addJobFlowSteps metodo in AmazonElasticMapReduceClient:

AWSCredentials credentials = new BasicAWSCredentials(accessKey, secretKey); AmazonElasticMapReduceClient emr = new AmazonElasticMapReduceClient(credentials); StepFactory stepFactory = new StepFactory(); AddJobFlowStepsRequest req = new AddJobFlowStepsRequest(); req.withJobFlowId("j-1K48XXXXXXHCB"); List<StepConfig> stepConfigs = new ArrayList<StepConfig>(); StepConfig sparkStep = new StepConfig() .withName("Spark Step") .withActionOnFailure("CONTINUE") .withHadoopJarStep(stepFactory.newScriptRunnerStep("/home/hadoop/spark/bin/spark-submit","--class","org.apache.spark.examples.SparkPi","/home/hadoop/spark/lib/spark-examples-1.3.1-hadoop2.4.0.jar","10")); stepConfigs.add(sparkStep); req.withSteps(stepConfigs); AddJobFlowStepsResult result = emr.addJobFlowSteps(req);

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. Puoi fornire il parametro --executor-memory con un argomento simile al seguente:

/home/hadoop/spark/bin/spark-submit --executor-memory 1g --class org.apache.spark.examples.SparkPi /home/hadoop/spark/lib/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 /home/hadoop/spark/lib/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.