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
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.
-
Selecione Criar cluster.
-
Para Configuração de software, escolha a versão de AMI lançamento que você precisa.
-
Para Applications to be installed (Aplicativos a serem instalados), escolha Spark na lista e depois escolha Configure and add (Configurar e adicionar).
-
Adicione argumentos para alterar a configuração do Spark conforme desejado. Para obter mais informações, consulte Configurar o Spark. Escolha Adicionar.
-
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 awslabs/emr-bootstrap-actions/sparkrepositório no Github$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.0
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.
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