Spark-Anwendungsmerkmale bei früheren AMI-Versionen von Amazon EMR - Amazon EMR

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
  1. 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.

  2. Wählen Sie Cluster erstellen.

  3. Wählen Sie für Software Configuration (Softwarekonfiguration) die benötigte AMI-Version aus.

  4. 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.

  5. 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.

  6. 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 Informationen zu den Argumenten, die von der Bootstrap-Aktion akzeptiert werden, finden Sie in der README-Datei dieses Repositorys. Die Bootstrap-Aktion konfiguriert Eigenschaften in der Datei $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 in der Apache-Spark-Dokumentation.