Especificações do aplicativo Spark com AMI versões anteriores da Amazon EMR - Amazon EMR

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á.

Especificações do aplicativo Spark com AMI versões anteriores da Amazon EMR

Usar o Spark interativamente ou no modo em lote

A Amazon EMR permite que você execute aplicativos 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 o 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 o aplicativo Spark no modo interativo, você pode colocar esse aplicativo ou programa JAR Python no sistema de arquivos local do nó principal do cluster no 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

Para executar um cluster com o Spark instalado usando o console
  1. Navegue até o novo EMR console da Amazon 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.

  2. Selecione Criar cluster.

  3. Para Configuração de software, escolha a versão de AMI lançamento que você precisa.

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

  5. Adicione argumentos para alterar a configuração do Spark conforme desejado. Para ter mais informações, consulte Configurar o Spark. Escolha Adicionar.

  6. 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

Você configura o Spark ao criar um cluster executando a ação bootstrap localizada no repositório awslabs/ emr-bootstrap-actions /spark no Github. Para argumentos que a ação de bootstrap aceita, consulte o READMEnesse 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 “mais recente” a seguir URL pelo número da versão do Spark que você está instalando, por exemplo, 2.2.0http://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 ter mais informações, consulte Substituir as definições de configuração padrão do Spark.

Alterar as configurações padrão do Spark

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 (\) 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

Para enviar trabalhos para um cluster, use uma etapa para executar o spark-submit script em seu EMR cluster. Adicione a etapa usando o addJobFlowSteps método em 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);

Substituir as definições de configuração padrão do Spark

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 na documentação do Apache Spark.