Configuración de las aplicaciones al crear un clúster
Al crear un clúster, puede anular las configuraciones predeterminadas para las aplicaciones mediante la consola de Amazon EMR, AWS Command Line Interface (AWS CLI) o el SDK de AWS.
Para anular la configuración predeterminada de una aplicación, debe especificar valores personalizados en una clasificación de configuración. Una clasificación de configuración corresponde a un archivo XML de configuración para una aplicación, como hive-site.xml
.
Las clasificaciones de configuración varían en función de la versión de Amazon EMR. Para ver una lista de las clasificaciones de configuración que están disponibles para cada versión de lanzamiento, consulte la página de detalles de lanzamiento. Por ejemplo, Versión 6.4.0. de Amazon EMR.
Proporcionar una configuración en la consola al crear un clúster
Para proporcionar una configuración, vaya a la página Crear clúster y amplíe la Configuración de software. A continuación, puede introducir la configuración directamente a través de JSON o una sintaxis abreviada mostrada en el texto en sombra en la consola. De lo contrario, puede proporcionar una URI de Amazon S3 para un archivo con un objeto Configurations
de JSON.
Para proporcionar una configuración para un grupo de instancias, elija un clúster de la lista de clústeres y, a continuación, elija la pestaña Configuraciones. En la tabla de Configuraciones de grupos de instancias, seleccione el grupo de instancias que desea editar y, a continuación, seleccione Reconfigurar.
Proporcione una configuración mediante AWS CLI al crear un clúster
Puede proporcionar una configuración para create-cluster suministrando una ruta a un archivo JSON almacenado localmente o en Amazon S3. En el siguiente ejemplo se supone que está utilizando los roles predeterminados de Amazon EMR y que roles ya se han creado. Si necesita crear los roles, ejecute aws emr create-default-roles
en primer lugar.
Si la configuración está en su directorio local, puede utilizar el siguiente comando de ejemplo.
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
Si su configuración está en una ruta de Amazon S3, tendrá que configurar la siguiente solución alternativa antes de pasar la ruta de Amazon S3 al 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
Proporcione una configuración mediante el SDK de Java al crear un clúster
El siguiente extracto de programa muestra cómo proporcionar una configuración utilizando 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") );