Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Spark-Anwendungsspezifikationen mit früheren AMI Versionen von Amazon EMR
Spark im interaktiven Modus oder im Batch-Modus verwenden
Amazon EMR ermöglicht es Ihnen, Spark-Anwendungen in zwei Modi auszuführen:
-
Interactive
-
Stapel
Wenn Sie einen Cluster mit langer Laufzeit über die Konsole oder die starten AWS CLI, können Sie SSH sich als Hadoop-Benutzer mit dem Master-Knoten verbinden und die Spark-Shell verwenden, um Ihre Spark-Anwendungen interaktiv zu entwickeln und auszuführen. Mit der interaktiven Verwendung von Spark ist das Entwickeln von Prototypen für Spark-Anwendungen und das Testen dieser Anwendungen einfacher als in einer Batch-Umgebung. Nachdem Sie die Spark-Anwendung erfolgreich im interaktiven Modus überarbeitet haben, können Sie diese Anwendung JAR oder das Python-Programm in das lokale Dateisystem des Master-Knotens des Clusters auf Amazon S3 einfügen. Anschließend können Sie die Anwendung als Batch-Workflow senden.
Laden Sie im Batch-Modus das Spark-Skript in Amazon S3 oder ins Dateisystem des lokalen Hauptknotens hoch und senden Sie dann die Arbeit als Schritt an den Cluster. Spark-Schritte können an lang- oder kurzlebige Cluster gesendet werden.
Erstellen eines Clusters mit installiertem Spark
So starten Sie einen Cluster mit installiertem Spark über die Console
Navigieren Sie zur neuen EMR Amazon-Konsole und wählen Sie in der Seitennavigation die Option Zur alten Konsole wechseln aus. Weitere Informationen darüber, was Sie erwartet, wenn Sie zur alten Konsole wechseln, finden Sie unter Verwenden der alten Konsole.
-
Wählen Sie Cluster erstellen.
-
Wählen Sie unter Softwarekonfiguration die AMI Release-Version aus, die Sie benötigen.
-
Wählen Sie unter Applications to be installed (Zu installierende Anwendungen) in der Liste Spark und anschließend Configure and add (Konfigurieren und hinzufügen) aus.
-
Sie können Argumente hinzufügen, um die Spark-Konfiguration bei Bedarf zu ändern. Weitere Informationen finden Sie unter Konfigurieren von Spark. Wählen Sie Hinzufügen aus.
-
Wählen Sie nach Bedarf weitere Optionen und anschließend Create cluster (Cluster erstellen) aus.
Das folgende Beispiel zeigt, wie Sie einen Cluster mit Spark mittels Java erstellen:
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);
Konfigurieren von Spark
Sie konfigurieren Spark, wenn Sie einen Cluster erstellen, indem Sie die Bootstrap-Aktion ausführen, die sich im awslabs/emr-bootstrap-actions/sparkRepository auf Github$SPARK_CONF_DIR/spark-defaults.conf
. Weitere Informationen zu den Einstellungen finden Sie im Thema zur Spark-Konfiguration in der Spark-Dokumentation. Sie können „latest“ im Folgenden URL durch die Versionsnummer von Spark ersetzen, den Sie installieren, zum Beispiel. 2.2.0
http://spark.apache.org/docs/latest/configuration.html
Ebenso ist es möglich, Spark dynamisch bei jeder Anwendungsübermittlung zu konfigurieren. Eine Einstellung, mit der die Ressourcenzuordnung für einen Executor automatisch erhöht wird, ist über die Konfigurationsdatei spark
verfügbar. Weitere Informationen finden Sie unter Überschreiben der standardmäßigen Spark-Konfigurationseinstellungen.
Ändern von Spark-Standardeinstellungen
Das folgende Beispiel zeigt, wie Sie einen Cluster mit der AWS CLI erstellen, bei dem spark.executor.memory
auf 2G gesetzt ist.
Anmerkung
Linux-Zeilenfortsetzungszeichen (\) sind aus Gründen der Lesbarkeit enthalten. Sie können entfernt oder in Linux-Befehlen verwendet werden. Entfernen Sie sie unter Windows oder ersetzen Sie sie durch ein Caret-Zeichen (^).
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
Aufträge an Spark übergeben
Um Arbeit an einen Cluster zu senden, führen Sie einen Schritt aus, um das spark-submit
Skript auf Ihrem EMR Cluster auszuführen. Fügen Sie den Schritt mithilfe der addJobFlowSteps
folgenden Methode hinzu 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);
Überschreiben der standardmäßigen Spark-Konfigurationseinstellungen
Vielleicht möchten Sie die standardmäßigen Spark-Konfigurationswerte je nach Anwendung überschreiben. Sie können dies tun, wenn Sie Anwendungen mithilfe eines Schritts senden, wodurch im Wesentlichen Optionen an spark-submit
übergeben werden. Sie möchten z. B. den Speicher ändern, der einem Executor-Prozess zugeordnet wurde. Dazu modifizieren Sie spark.executor.memory
. Sie können den Schalter --executor-memory
mit einem Argument wie dem folgenden angeben:
/home/hadoop/spark/bin/spark-submit --executor-memory 1g --class org.apache.spark.examples.SparkPi /home/hadoop/spark/lib/spark-examples*.jar 10
Auf ähnliche Weise können Sie --executor-cores
und --driver-memory
optimieren. In einem Schritt würden Sie die folgenden Argumente bereitstellen:
--executor-memory 1g --class org.apache.spark.examples.SparkPi /home/hadoop/spark/lib/spark-examples*.jar 10
Sie können mithilfe der Option --conf
auch Einstellungen optimieren, die eventuell über keinen integrierten Schalter verfügen. Weitere Informationen zu anderen optimierbaren Einstellungen finden Sie im Thema Dynamisches Laden von Spark-Eigenschaften