Einen Cluster mit Spark erstellen - Amazon EMR

Einen Cluster mit Spark erstellen

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.

Sie können alternativ Erweiterte Optionen verwenden, um Ihre Cluster-Einrichtung weiter anzupassen oder Schritte zur programmgesteuerten Installation von Anwendungen und zur anschließenden Ausführung benutzerdefinierter Anwendungen zu senden. Bei diesen beiden erweiterten Optionen zur Clustererstellung können Sie AWS Glue als Spark-SQL-Metastore verwenden. Weitere Informationen finden Sie unter Verwenden Sie den AWS Glue Data Catalog als Metastore für Spark SQL.

So starten Sie einen Cluster mit installiertem Spark
  1. Öffnen Sie die Amazon-EMR-Konsole unterhttps://console.aws.amazon.com/emr.

  2. Wählen Sie Cluster erstellen aus, um Schnelle Optionen zu verwenden.

  3. Geben Sie einen Clusternamen ein.

  4. Wählen Sie unter Softwarekonfiguration die Option Version aus.

  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 AWS CLI
  • Erstellen Sie den Cluster mit dem folgenden Befehl.

    aws emr create-cluster --name "Spark cluster" --release-label emr-5.36.1 --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 unter Windows oder ersetzen Sie sie durch ein Caret-Zeichen (^).

So starten Sie einen Cluster mit installiertem Spark über SDK für 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()); } }