Erstellen Sie einen Cluster mit Spark - 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.

Erstellen Sie einen Cluster mit Spark

Mit der folgenden Prozedur wird ein Cluster mit Spark erstellt, der mithilfe von Quick Options (Optionen für das schnelle Erstellen eines Clusters) in der EMR-Konsole installiert wurde.

Alternativ können Sie die erweiterten Optionen verwenden, um Ihr Cluster-Setup weiter anzupassen oder Schritte einzureichen, um Anwendungen programmgesteuert zu installieren und dann benutzerdefinierte Anwendungen auszuführen. Mit beiden Optionen zur Cluster-Erstellung können SieAWS Glue als Ihren Spark-SQL-Metastore verwenden. Weitere Informationen finden Sie unter Verwenden Sie denAWS Glue-Datenkatalog als Metastore für Spark SQL.

So starten Sie einen Cluster mit installiertem Spark

  1. Öffnen Sie die Amazon-EMR-Konsole unter https://console.aws.amazon.com/emr.

  2. Wählen Sie Cluster erstellen, um die Schnelloptionen zu verwenden.

  3. Geben Sie einen Clusternamen ein.

  4. Wählen Sie für die Softwarekonfiguration eine Release-Option.

  5. Wählen Sie für Anwendungen das Spark-Anwendungspaket.

  6. Wählen Sie nach Bedarf weitere Optionen und anschließend Create cluster (Cluster erstellen) aus.

    Anmerkung

    Weitere Informationen zum Konfigurieren von Spark beim Erstellen des Clusters finden Sie unter Konfigurieren von Spark.

So starten Sie einen Cluster mit installiertem Spark über die AWS CLI

  • Erstellen Sie den Cluster mit dem folgenden Befehl.

    aws emr create-cluster --name "Spark cluster" --release-label emr-5.36.0 --applications Name=Spark \ --ec2-attributes KeyName=myKey --instance-type m5.xlarge --instance-count 3 --use-default-roles
Anmerkung

Linux-Zeilenfortsetzungszeichen (\) sind aus Gründen der Lesbarkeit enthalten. Sie können entfernt oder in Linux-Befehlen verwendet werden. Entfernen Sie sie für Windows oder ersetzen Sie sie durch ein Caret (^).

Zum Starten eines Clusters mit dem SDK for Java

Geben Sie Spark als Anwendung mit SupportedProductConfig an, die in RunJobFlowRequest verwendet wird.

  • Das folgende Beispiel zeigt, wie Sie einen Cluster mit Spark mittels Java erstellen.

    import com.amazonaws.AmazonClientException; import com.amazonaws.auth.AWSCredentials; import com.amazonaws.auth.AWSStaticCredentialsProvider; import com.amazonaws.auth.profile.ProfileCredentialsProvider; import com.amazonaws.services.elasticmapreduce.AmazonElasticMapReduce; import com.amazonaws.services.elasticmapreduce.AmazonElasticMapReduceClientBuilder; import com.amazonaws.services.elasticmapreduce.model.*; import com.amazonaws.services.elasticmapreduce.util.StepFactory; public class Main { public static void main(String[] args) { AWSCredentials credentials_profile = null; try { credentials_profile = new ProfileCredentialsProvider("default").getCredentials(); } catch (Exception e) { throw new AmazonClientException( "Cannot load credentials from .aws/credentials file. " + "Make sure that the credentials file exists and the profile name is specified within it.", e); } AmazonElasticMapReduce emr = AmazonElasticMapReduceClientBuilder.standard() .withCredentials(new AWSStaticCredentialsProvider(credentials_profile)) .withRegion(Regions.US_WEST_1) .build(); // create a step to enable debugging in the AWS Management Console StepFactory stepFactory = new StepFactory(); StepConfig enabledebugging = new StepConfig() .withName("Enable debugging") .withActionOnFailure("TERMINATE_JOB_FLOW") .withHadoopJarStep(stepFactory.newEnableDebuggingStep()); Application spark = new Application().withName("Spark"); RunJobFlowRequest request = new RunJobFlowRequest() .withName("Spark Cluster") .withReleaseLabel("emr-5.20.0") .withSteps(enabledebugging) .withApplications(spark) .withLogUri("s3://path/to/my/logs/") .withServiceRole("EMR_DefaultRole") .withJobFlowRole("EMR_EC2_DefaultRole") .withInstances(new JobFlowInstancesConfig() .withEc2SubnetId("subnet-12ab3c45") .withEc2KeyName("myEc2Key") .withInstanceCount(3) .withKeepJobFlowAliveWhenNoSteps(true) .withMasterInstanceType("m4.large") .withSlaveInstanceType("m4.large") ); RunJobFlowResult result = emr.runJobFlow(request); System.out.println("The cluster ID is " + result.toString()); } }