

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Detalhes de aplicações do Spark com versões anteriores da AMI do Amazon EMR
<a name="emr-3x-spark"></a>

## Usar o Spark interativamente ou no modo em lote
<a name="emr-3x-spark-interactive-batch"></a>

O Amazon EMR permite a execução de aplicações do Spark em dois modos: 
+ Interativo
+ Lote

Ao iniciar um cluster de longa execução usando o console ou o AWS CLI, você pode se conectar usando SSH ao nó principal como usuário do Hadoop e usar o shell do Spark para desenvolver e executar seus aplicativos Spark de forma interativa. Usar o Spark interativamente permite criar protótipos ou testar aplicativos Spark com mais facilidade do que em um ambiente em lote. Depois de revisar com sucesso a aplicação do Spark no modo interativo, você pode colocar a aplicação do JAR ou o programa do Python do sistema de arquivos local no nó principal do cluster do Amazon S3. Em seguida, você pode enviar o aplicativo como um fluxo de trabalho em lote.

No modo em lote, carregue o script do Spark no Amazon S3 ou no sistema de arquivos do nó principal local e, em seguida, envie o trabalho ao cluster como uma etapa. As etapas do Spark podem ser enviadas a um cluster de longa execução ou a um cluster transitório.

## Criar um cluster com o Spark instalado
<a name="emr-3x-spark-install"></a>

**Para executar um cluster com o Spark instalado usando o console**

1. Navegue até o novo console do Amazon EMR e selecione **Alternar para o console antigo** na navegação lateral. Para obter mais informações sobre o que esperar ao alternar para o console antigo, consulte [Usar o console antigo](https://docs.aws.amazon.com/emr/latest/ManagementGuide/whats-new-in-console.html#console-opt-in).

1. Selecione **Criar cluster**.

1. Para **Software Configuration (Configuração do software)**, escolha a versão da AMI de que você precisa.

1.  Para **Applications to be installed (Aplicativos a serem instalados)**, escolha **Spark** na lista e depois escolha **Configure and add (Configurar e adicionar)**.

1. Adicione argumentos para alterar a configuração do Spark conforme desejado. Para obter mais informações, consulte [Configurar o Spark](#emr-3x-spark-configure). Escolha **Adicionar**.

1.  Selecione outras opções conforme necessário e escolha **Create cluster (Criar cluster)**.

O seguinte exemplo mostra como criar um cluster com o Spark usando 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 o Spark
<a name="emr-3x-spark-configure"></a>

Você configura o Spark ao criar um cluster executando a ação bootstrap localizada no [awslabs/emr-bootstrap-actions/sparkrepositório no Github](https://github.com/awslabs/emr-bootstrap-actions/tree/master/spark). Para saber quais argumentos a ação de bootstrap aceita, consulte o arquivo [LEIAME](https://github.com/aws-samples/emr-bootstrap-actions/blob/master/spark/examples/README.md) nesse repositório. A ação de bootstrap configura propriedades no arquivo `$SPARK_CONF_DIR/spark-defaults.conf`. Para obter mais informações sobre configurações, consulte o tópico Configuração do Spark na documentação do Spark. Você pode substituir "latest" (mais recente) na URL a seguir pelo número da versão do Spark que você está instalando, por exemplo, `2.2.0` [http://spark.apache.org/docs/latest/configuration.html](http://spark.apache.org/docs/latest/configuration.html).

Você também pode configurar o Spark dinamicamente no momento do envio de cada aplicativo. Uma configuração para maximizar automaticamente a alocação de recursos para um executor está disponível usando o arquivo de configuração `spark`. Para obter mais informações, consulte [Substituir as definições de configuração padrão do Spark](#emr-3x-spark-dynamic-configuration).

### Alterar as configurações padrão do Spark
<a name="emr-3x-spark-default-settings"></a>

O seguinte exemplo mostra como criar um cluster com o `spark.executor.memory` definido como 2G usando a AWS CLI.

**nota**  
Os caracteres de continuação de linha do Linux (\$1) são incluídos para facilitar a leitura. Eles podem ser removidos ou usados ​​em comandos do Linux. No Windows, remova-os ou substitua-os por um sinal de interpolação (^).

```
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 trabalhos para o Spark
<a name="emr-3x-spark-submit-work"></a>

Para enviar trabalhos a um cluster, use uma etapa para executar o script `spark-submit` no seu cluster do EMR. Adicione a etapa usando o `addJobFlowSteps` método em [AmazonElasticMapReduceClient](https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/elasticmapreduce/AmazonElasticMapReduceClient.html):

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

### Substituir as definições de configuração padrão do Spark
<a name="emr-3x-spark-dynamic-configuration"></a>

Você pode querer substituir valores de configuração padrão do Spark para cada aplicativo. Você pode fazer isso ao enviar aplicativos usando uma etapa, que transmite essencialmente opções para `spark-submit`. Por exemplo, você pode querer alterar a memória alocada para um processo de executor modificando `spark.executor.memory`. Você pode fornecer ao switch `--executor-memory` um argumento semelhante ao seguinte:

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

Da mesma forma, você pode ajustar `--executor-cores` e `--driver-memory`. Em uma etapa, você forneceria os seguintes argumentos para a etapa:

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

Você também pode ajustar as configurações que não possam não ter uma opção interna usando `--conf`. Para obter mais informações sobre outras configurações que são ajustáveis, consulte o tópico [Dynamically loading Spark properties](https://spark.apache.org/docs/latest/configuration.html#dynamically-loading-spark-properties) na documentação do Apache Spark.