Especificaciones de la aplicación Spark con AMI versiones anteriores de Amazon EMR - 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.

Especificaciones de la aplicación Spark con AMI versiones anteriores de Amazon EMR

Usar Spark interactivamente o en modo de lote

Amazon te EMR permite ejecutar aplicaciones de Spark en dos modos:

  • Interactivo

  • Lote

Cuando lanzas un clúster de larga duración desde la consola o desde la consola AWS CLI, puedes conectarte SSH al nodo maestro como usuario de Hadoop y usar el shell de Spark para desarrollar y ejecutar tus aplicaciones de Spark de forma interactiva. El uso de Spark de forma interactiva le permite crear prototipos o probar aplicaciones de Spark con mayor facilidad en un entorno de lotes. Después de revisar correctamente la aplicación Spark en modo interactivo, puede colocar esa aplicación JAR o programa Python en el sistema de archivos local del nodo maestro del clúster en Amazon S3. A continuación, puede enviar la aplicación como un flujo de trabajo por lotes.

En el modo de lotes, cargue su script de Spark en Amazon S3 o el sistema de archivos del nodo maestro local y, a continuación, envíe el trabajo al clúster como un paso. Los pasos de Spark se pueden enviar a un clúster en ejecución prolongada o a un clúster transitorio.

Creación de un clúster con Spark instalado

Para lanzar un clúster con Spark instalado utilizando la consola
  1. Ve a la nueva EMR consola de Amazon y selecciona Cambiar a la consola anterior en el panel de navegación lateral. Para más información sobre lo que puede esperar al cambiar a la consola antigua, consulte Uso de la consola antigua.

  2. Elija Create cluster.

  3. Para la configuración del software, elige la versión de AMI lanzamiento que necesites.

  4. Para Applications to be installed (Aplicaciones que hay que instalar), elija Spark en la lista y, a continuación, elija Configure and add (Configurar y añadir).

  5. Añada argumentos para cambiar la configuración de Spark como desee. Para obtener más información, consulte Configurar Spark. Elija Add (Agregar).

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

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

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

Configurar Spark

Para configurar Spark al crear un clúster, ejecute la acción de arranque ubicada en el awslabs/emr-bootstrap-actions/sparkrepositorio de Github. Para ver los argumentos que acepta la acción de arranque, consulta los de ese READMErepositorio. La acción de arranque configura propiedades en el archivo $SPARK_CONF_DIR/spark-defaults.conf. Para obtener más información acerca de la configuración, consulte el tema Spark Configuration en la documentación de Spark. Puedes sustituir la palabra «más reciente» en lo que sigue URL por el número de versión de Spark que estás instalando, por ejemplo, 2.2.0http://spark.apache.org/docs/latest/configuration.html.

También es posible configurar Spark dinámicamente en el momento de enviar la aplicación. Existe un valor para maximizar automáticamente la asignación de recursos para un ejecutor utilizando el archivo de configuración spark. Para obtener más información, consulte Anulación de las opciones de configuración predeterminadas de Spark.

Cambio de la configuración predeterminada de Spark

El siguiente ejemplo muestra cómo crear un clúster con spark.executor.memory establecido en 2G mediante la AWS CLI.

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 (^).

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

Enviar trabajo a Spark

Para enviar el trabajo a un clúster, sigue un paso para ejecutar el spark-submit script en tu EMR clúster. Agrega el paso mediante el addJobFlowSteps método que se muestra en 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);

Anulación de las opciones de configuración predeterminadas de Spark

Es posible que desee anular los valores de configuración predeterminados de Spark por aplicación. Puede hacerlo cuando envíe aplicaciones utilizando un paso, que básicamente transfiere opciones a spark-submit. Por ejemplo, es posible que desee cambiar la memoria asignada a un proceso de ejecutor cambiando spark.executor.memory. Puede proporcionar el modificador --executor-memory con un argumento como el siguiente:

/home/hadoop/spark/bin/spark-submit --executor-memory 1g --class org.apache.spark.examples.SparkPi /home/hadoop/spark/lib/spark-examples*.jar 10

Del mismo modo, puede ajustar --executor-cores y --driver-memory. En un paso, debería proporcionar los siguientes argumentos al paso:

--executor-memory 1g --class org.apache.spark.examples.SparkPi /home/hadoop/spark/lib/spark-examples*.jar 10

También puede ajustar la configuración que puede no tener un modificador integrado utilizando la opción --conf. Para obtener más información sobre otras opciones que se pueden ajustar, consulte el tema Dynamically loading Spark properties en la documentación de Apache Spark.