Creación de un clúster con Apache Spark - Amazon EMR

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Creación de un clúster con Apache Spark

El siguiente procedimiento crea un clúster con Spark instalado a través de las Opciones rápidas en la consola de Amazon EMR.

Como alternativa, puede usar Opciones avanzadas para personalizar aún más la configuración del clúster o para enviar pasos a fin de instalar aplicaciones mediante programación y, a continuación, ejecutar las aplicaciones personalizadas. Con alguna de las opciones de creación de clústeres, puede elegir utilizar AWS como metaalmacén de Spark SQL. Para obtener más información, consulte Usa el catálogo de datos de AWS Glue como metaalmacén para Spark SQL.

Para lanzar un clúster con Spark instalado
  1. Abra la consola Amazon EMR en https://console.aws.amazon.com/emr.

  2. Elija Crear clúster para utilizar Opciones rápidas.

  3. Ingrese un nombre de clúster. El nombre del clúster no puede contener los caracteres <, >, $, | o `(barra invertida).

  4. En Configuración de software, elija una opción de Versión.

  5. En Aplicaciones, elija el paquete de aplicaciones de Spark.

  6. Seleccione las demás opciones que necesite y, a continuación, elija Create cluster (Crear clúster).

    nota

    Para configurar Spark cuando se crea el clúster, consulte Configurar Spark.

Para lanzar un clúster con Spark instalado, usa el AWS CLI
  • Cree el clúster con el siguiente comando:

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

Se incluyen caracteres de continuación de línea de Linux (\) para facilitar la lectura. Se pueden eliminar o utilizar en los comandos de Linux. En Windows, elimínelos o sustitúyalos por un signo de intercalación (^).

Para lanzar un clúster con Spark instalado con el SDK para Java

Especifique Spark como una aplicación con SupportedProductConfig utilizado en RunJobFlowRequest.

  • El siguiente ejemplo muestra cómo crear un clúster con Spark mediante Java.

    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()); } }