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-Anwendungsmerkmale bei früheren AMI-Versionen von Amazon EMR
Spark im interaktiven Modus oder im Batch-Modus verwenden
Amazon EMR ermöglicht die Ausführung von Spark-Anwendungen in zwei Modi:
-
Interactive
-
Stapel
Wenn Sie einen Cluster mit langer Laufzeit über die Konsole oder die starten AWS CLI, können Sie als Hadoop-Benutzer über SSH eine Verbindung zum Master-Knoten herstellen 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. Wenn Sie die Spark-Anwendung im interaktiven Modus erfolgreich überarbeitet haben, können Sie die JAR-Anwendungsdatei oder das Python-Programm im lokalen Dateisystem des Hauptknotens des Clusters in Amazon S3 ablegen. 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 Amazon-EMR-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 für Software Configuration (Softwarekonfiguration) die benötigte AMI-Version aus.
-
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 Repository auf Github befindet. awslabs/emr-bootstrap-actions/spark$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“ in der folgenden URL durch die Nummer der Spark-Version ersetzen, die Sie installieren, beispielsweise 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
Verwenden Sie einen Schritt, um das Skript spark-submit
auf Ihrem EMR-Cluster auszuführen und Arbeit an den Cluster zu senden. Fügen Sie den Schritt mit der folgenden addJobFlowSteps
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