Configurar aplicações ao criar um cluster - Amazon EMR

Configurar aplicações ao criar um cluster

Ao criar um cluster, você pode substituir as configurações padrão das aplicações usando o console do Amazon EMR, a AWS Command Line Interface (AWS CLI) ou o AWS SDK.

Para substituir a configuração padrão de uma aplicação, especifique valores personalizados em uma classificação de configuração. Uma classificação de configuração corresponde a um arquivo XML de configuração de uma aplicação, como hive-site.xml.

As classificações de configuração variam de acordo com a versão do Amazon EMR. Para obter uma lista de classificações de configuração que estão disponíveis em uma versão específica, consulte a página de detalhes da versão. Por exemplo, o Amazon EMR versão 6.4.0.

Fornecer uma configuração no console ao criar um cluster

Para fornecer uma configuração, navegue até a página Criar cluster e expanda Configurações do software. Você poderá inserir a configuração diretamente usando JSON ou uma sintaxe abreviada demonstrada no texto sombreado no console. Caso contrário, você pode fornecer um URI do Amazon S3 para um arquivo com um objeto JSON Configurations.

Para fornecer uma configuração para um grupo de instâncias, escolha um cluster na lista de clusters e selecione a guia Configurações. Na tabela de Configurações do grupo de instâncias, escolha o grupo de instâncias a ser editado e, em seguida, Reconfigurar.

Fornecer uma configuração usando a AWS CLI ao criar um cluster

Você pode fornecer uma configuração para create-cluster fornecendo um caminho para um arquivo JSON armazenado localmente ou no Amazon S3. O exemplo a seguir pressupõe que você esteja usando perfis padrão para o Amazon EMR e que esses perfis foram criados. Se você precisar criar as funções, execute aws emr create-default-roles primeiro.

Se a configuração estiver em seu diretório local, você poderá usar o exemplo de comando a seguir.

aws emr create-cluster --use-default-roles --release-label emr-7.3.0 --applications Name=Hive \ --instance-type m5.xlarge --instance-count 3 --configurations file://./configurations.json

Se a configuração estiver em um caminho do Amazon S3, você precisará configurar a seguinte solução alternativa antes de passar o caminho do Amazon S3 para o comando create-cluster.

#!/bin/sh # Assume the ConfigurationS3Path is not public, and its present in the same AWS account as the EMR cluster ConfigurationS3Path="s3://amzn-s3-demo-bucket/config.json" # Get a presigned HTTP URL for the s3Path ConfigurationURL=`aws s3 presign $ConfigurationS3Path --expires-in 300` # Fetch the presigned URL, and minify the JSON so that it spans only a single line Configurations=`curl $ConfigurationURL | jq -c .` aws emr create-cluster --use-default-roles --release-label emr-5.34.0 --instance-type m5.xlarge --instance-count 2 --applications Name=Hadoop Name=Spark --configurations $Configurations

Fornecer uma configuração usando o SDK do Java ao criar um cluster

O trecho de programa a seguir mostra como fornecer uma configuração usando o AWS SDK for Java.

Application hive = new Application().withName("Hive"); Map<String,String> hiveProperties = new HashMap<String,String>(); hiveProperties.put("hive.join.emit.interval","1000"); hiveProperties.put("hive.merge.mapfiles","true"); Configuration myHiveConfig = new Configuration() .withClassification("hive-site") .withProperties(hiveProperties); RunJobFlowRequest request = new RunJobFlowRequest() .withName("Create cluster with ReleaseLabel") .withReleaseLabel("emr-5.20.0") .withApplications(hive) .withConfigurations(myHiveConfig) .withServiceRole("EMR_DefaultRole") .withJobFlowRole("EMR_EC2_DefaultRole") .withInstances(new JobFlowInstancesConfig() .withEc2KeyName("myEc2Key") .withInstanceCount(3) .withKeepJobFlowAliveWhenNoSteps(true) .withMasterInstanceType("m4.large") .withSlaveInstanceType("m4.large") );