Reconfiguración de un grupo de instancias en un clúster en ejecución - Amazon EMR

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Reconfiguración de un grupo de instancias en un clúster en ejecución

Con la versión 5.21.0 y posteriores de Amazon EMR, puede volver a configurar las aplicaciones de clúster y especificar las clasificaciones de configuración adicionales para cada grupo de instancias en un clúster en ejecución. Para ello, puede utilizar la consola Amazon EMR, el AWS Command Line Interface (AWS CLI) o el AWS SDK.

Cuando actualiza la configuración de una aplicación para un grupo de instancias en la nueva consola de Amazon EMR, la consola intenta combinar la nueva configuración con la configuración existente para crear una nueva configuración activa. En el caso excepcional de que Amazon EMR no pueda combinar la configuración, la consola le avisará.

Después de enviar una solicitud de reconfiguración para un grupo de instancias, Amazon EMR asigna un número de versión para la nueva especificación de configuración. Para realizar un seguimiento del número de versión de una configuración o del estado de un grupo de instancias, consulta los CloudWatch eventos. Para obtener más información, consulta Supervisar CloudWatch eventos.

nota

Solo puede anular, pero no eliminar, las configuraciones de clúster que se hayan especificado durante la su creación. Si hay diferencias entre la configuración existente y el archivo que suministra, Amazon EMR restablece las configuraciones modificadas manualmente, como las que ha modificado mientras estaba conectado al clúster mediante SSH, a los valores predeterminados del clúster para el grupo de instancias especificado.

Consideraciones a la hora de volver a configurar un grupo de instancias

Acciones de reconfiguración

Cuando envía una solicitud de reconfiguración mediante la consola de Amazon EMR, AWS Command Line Interface el AWS CLI() o el SDK, Amazon EMR comprueba AWS el archivo de configuración existente en el clúster. Si hay diferencias entre la configuración existente y el archivo que suministra, Amazon EMR inicia las acciones de reconfiguración, reinicia algunas aplicaciones y restablece cualquiera de las configuraciones modificadas manualmente, como las que ha modificado mientras estaba conectado al clúster mediante SSH, a los valores predeterminados del clúster para el grupo de instancias especificado.

nota

Amazon EMR realiza algunas acciones predeterminadas durante la reconfiguración de cada grupo de instancias. Estas acciones predeterminadas pueden entrar en conflicto con las personalizaciones del clúster que haya realizado y provocar errores de reconfiguración. Para obtener información sobre cómo solucionar errores de reconfiguración, consulte Solución de problemas de reconfiguración de grupos de instancias.

Amazon EMR también inicia acciones de reconfiguración para las clasificaciones de configuración que especifique en su solicitud. Para obtener una lista completa de estas acciones, consulte la sección Clasificaciones de configuración de la versión de Amazon EMR que utilice. Por ejemplo, Clasificaciones de configuración 6.2.0.

nota

En la guía de versiones de Amazon EMR solo se enumeran las acciones de reconfiguración a partir de las versiones 5.32.0 y 6.2.0 de Amazon EMR.

Interrupción del servicio

Amazon EMR sigue un proceso continuo para volver a configurar las instancias de los grupos de instancias Task y Core. Solo el 10 por ciento de las instancias de un grupo de instancias se modifican y se reinicia a la vez. Este proceso tarda más en terminar pero reduce la posibilidad de error de la aplicación en un clúster en ejecución.

Para ejecutar trabajos de YARN durante un reinicio de YARN, puede crear un clúster de Amazon EMR con varios nodos maestros o establecer yarn.resourcemanager.recovery.enabled en true en su clasificación de configuración yarn-site. Para obtener más información sobre el uso de varios nodos maestros, consulte YARN de alta disponibilidad. ResourceManager

Validación de aplicaciones

Amazon EMR comprueba que todas las aplicaciones del clúster se estén ejecutando tras el proceso de reinicio de la reconfiguración. Si alguna aplicación no está disponible, se produce un error en la operación de reconfiguración general. Si una reconfiguración da error, Amazon EMR invierte los parámetros de configuración a la versión anterior que funcionaba.

nota

Para evitar un error de reconfiguración, le recomendamos que solo instale en el clúster las aplicaciones que tenga pensado utilizar. También le recomendamos que se asegure de que todas las aplicaciones del clúster estén en buen estado y en funcionamiento antes de enviar una solicitud de reconfiguración.

Tipos de reconfiguración

Puede volver a configurar un grupo de instancias de una de estas dos maneras:

  • Overwrite. Método de reconfiguración predeterminado y el único disponible en las versiones de Amazon EMR anteriores a las 5.35.0 y 6.6.0. Este método de reconfiguración sobrescribe indiscriminadamente todos los archivos del clúster con el conjunto de configuraciones recién enviado. El método borra cualquier cambio en los archivos de configuración realizado fuera de la API de reconfiguración.

  • Merge. Método de reconfiguración compatible con las versiones 5.35.0 y 6.6.0 y posteriores de Amazon EMR, excepto desde la consola de Amazon EMR, que no admite ninguna versión. Este método de reconfiguración combina las configuraciones recién enviadas con las configuraciones que ya existen en el clúster. Esta opción solo agrega o modifica las nuevas configuraciones que envíe. Conserva las configuraciones existentes.

nota

Amazon EMR sigue sobrescribiendo algunas configuraciones esenciales de Hadoop que necesita para garantizar que el servicio se ejecute correctamente.

Limitaciones

Cuando vuelva a configurar un grupo de instancias en un clúster en ejecución, tenga en cuenta las siguientes limitaciones:

  • Las aplicaciones que no son de YARN pueden fallar durante el reinicio o provocar problemas con el clúster, especialmente si no están configuradas correctamente. Los clústeres que se acerquen al uso máximo de memoria y CPU pueden tener problemas tras el proceso de reinicio. Esto es especialmente cierto en el caso del grupo de instancias maestro.

  • No puede enviar una solicitud de reconfiguración cuando se está cambiando el tamaño de un grupo de instancias. Si una reconfiguración mientras se inicia un grupo de instancias se está cambiando de reconfiguración, no puede comenzar hasta que se haya completado el grupo de instancias de tamaño y viceversa.

  • Después de configurar un grupo de instancias, Amazon EMR reinicia las aplicaciones para permitir que las nuevas configuraciones surtan efecto. Puede darse un error de trabajo u otro comportamiento de la aplicación inesperado si las aplicaciones están en uso durante la reconfiguración.

  • Si una reconfiguración para un grupo de instancias da error, Amazon EMR invierte los parámetros de configuración a la versión anterior que funcionaba. Si el proceso de reversión también da error, debe enviar una nueva solicitud ModifyInstanceGroup para recuperar el grupo de instancias desde el estado SUSPENDED.

  • Las solicitudes de reconfiguración para cualquier Phoenix clasificaciones de configuración solo se admiten en la versión 5.23.0 y versiones posteriores de Amazon EMR, y no son compatibles con la versión 5.21.0 o 5.22.0 de Amazon EMR.

  • Las solicitudes de reconfiguración para las clasificaciones de HBase configuración solo se admiten en la versión 5.30.0 y posteriores de Amazon EMR, y no se admiten en las versiones 5.23.0 a 5.29.0 de Amazon EMR.

  • Amazon EMR admite solicitudes de reconfiguración de aplicaciones en un clúster de Amazon EMR con varios nodos principales solo en las versiones 5.27.0 y posteriores de Amazon EMR.

  • La reconfiguración de la clasificación hdfs-encryption-zones o cualquiera de las clasificaciones de configuración de Hadoop KMS no se admite en clúster de Amazon EMR con varios nodos principales.

  • Amazon EMR actualmente no admite determinadas solicitudes de reconfiguración del programador de capacidad que requieren reiniciar el YARN. ResourceManager Por ejemplo, no puede eliminar por completo una cola.

Reconfiguración de un grupo de instancias en la consola

nota

La consola de Amazon EMR no admite reconfiguraciones de tipo Merge.

  1. Abra la consola Amazon EMR en /emr https://console.aws.amazon.com

  2. En la lista de clústeres llamada Nombre, seleccione el clúster activo que desea volver a configurar.

  3. Abra la página de detalles del clúster y vaya a la pestaña Configuraciones.

  4. En la lista desplegable Filter, seleccione el grupo de instancias que desea volver a configurar.

  5. En el menú desplegable Volver a configurar, elija Editar en la tabla o Editar en el archivo JSON.

    • Editar en la tabla: en la tabla de clasificación de configuración, edite la propiedad y el valor de las configuraciones existentes o elija Agregar configuración para suministrar clasificaciones de configuración adicionales.

    • Editar en el archivo JSON: ingrese la configuración directamente en el JSON o use la sintaxis abreviada (mostrada en el texto en sombra). De lo contrario, proporcione una URI de Amazon S3 para un archivo con un objeto Configurations de JSON.

    nota

    La columna Origen de la tabla de clasificación de configuración indica si la configuración se proporciona al crear un clúster o cuando se especifican configuraciones adicionales para este grupo de instancias. Puede editar las configuraciones para un grupo de instancias de ambas fuentes. No puede eliminar las configuraciones de clúster iniciales, pero puede anularlas para un grupo de instancias.

    También puede añadir o editar clasificaciones de configuración anidadas directamente a la tabla. Por ejemplo, para indicar una clasificación de subredes export adicionales hadoop-env, añada una clasificación de configuración hadoop.export a la tabla. A continuación, proporcione una propiedad específica y el valor de esta clasificación.

  6. (Opcional) Seleccione Apply this configuration to all active instance groups (Aplicar esta configuración a todos los grupos de instancias activas).

  7. Guarde los cambios.

Reconfiguración de un grupo de instancias con la CLI

Use el comando modify-instance-groups para especificar una nueva configuración para cada grupo de instancias en un clúster en ejecución.

nota

En los siguientes ejemplos, sustitúyelo por el <j-2AL4XXXXXX5T9> ID del clúster y <ig-1xxxxxxx9> sustitúyalo por el ID del grupo de instancias.

ejemplo – Sustitución de una configuración para un grupo de instancias

En el siguiente ejemplo, se hace referencia a un archivo JSON de configuración llamado instanceGroups.json para editar la propiedad del comprobador de estado del NodeManager disco YARN de un grupo de instancias.

  1. Prepare la clasificación de la configuración y guárdela como instanceGroups.json en el mismo directorio en el que ejecutará el comando.

    [ { "InstanceGroupId":"<ig-1xxxxxxx9>", "Configurations":[ { "Classification":"yarn-site", "Properties":{ "yarn.nodemanager.disk-health-checker.enable":"true", "yarn.nodemanager.disk-health-checker.max-disk-utilization-per-disk-percentage":"100.0" }, "Configurations":[] } ] } ]
  2. Ejecute el siguiente comando.

    aws emr modify-instance-groups --cluster-id <j-2AL4XXXXXX5T9> \ --instance-groups file://instanceGroups.json
ejemplo – Agregado de una configuración a un grupo de instancias

Si desea agregar una configuración a un grupo de instancias, debe incluir todas las configuraciones antes especificadas para ese grupo de instancias en su nueva solicitud ModifyInstanceGroup. De lo contrario, las configuraciones antes especificadas se eliminan.

En el siguiente ejemplo, se agrega una propiedad para el comprobador de memoria NodeManager virtual YARN. La configuración también incluye valores previamente especificados para el comprobador de estado del NodeManager disco YARN, de modo que los valores no se sobrescriban.

  1. Prepare los contenidos siguientes en instanceGroups.json y guárdelos en el mismo directorio en el que va a ejecutará el comando.

    [ { "InstanceGroupId":"<ig-1xxxxxxx9>", "Configurations":[ { "Classification":"yarn-site", "Properties":{ "yarn.nodemanager.disk-health-checker.enable":"true", "yarn.nodemanager.disk-health-checker.max-disk-utilization-per-disk-percentage":"100.0", "yarn.nodemanager.vmem-check-enabled":"true", "yarn.nodemanager.vmem-pmem-ratio":"3.0" }, "Configurations":[] } ] } ]
  2. Ejecute el siguiente comando.

    aws emr modify-instance-groups --cluster-id <j-2AL4XXXXXX5T9> \ --instance-groups file://instanceGroups.json
ejemplo – Agregar una configuración a un grupo de instancias con la reconfiguración de tipo Merge

Si desea usar el método de reconfiguración Overwrite predeterminado para agregar una configuración, debe incluir todas las configuraciones especificadas previamente para ese grupo de instancias en su nueva solicitud ModifyInstanceGroup. De lo contrario, el método Overwrite elimina las configuraciones que haya especificado anteriormente. No necesita hacer esto con la reconfiguración Merge. En su lugar, debe asegurarse de que su solicitud solo incluya las nuevas configuraciones.

En el siguiente ejemplo, se agrega una propiedad para el comprobador de memoria NodeManager virtual YARN. Como se trata de una reconfiguración de tipo Merge, no sobrescribe los valores previamente especificados para el comprobador de estado del NodeManager disco YARN.

  1. Prepare los contenidos siguientes en instanceGroups.json y guárdelos en el mismo directorio en el que va a ejecutará el comando.

    [ {"InstanceGroupId":"<ig-1xxxxxxx9>", "ReconfigurationType" :"MERGE", "Configurations":[ {"Classification":"yarn-site", "Properties":{ "yarn.nodemanager.vmem-check-enabled":"true", "yarn.nodemanager.vmem-pmem-ratio":"3.0" }, "Configurations":[] } ] } ]
  2. Ejecute el siguiente comando.

    aws emr modify-instance-groups --cluster-id <j-2AL4XXXXXX5T9> \ --instance-groups file://instanceGroups.json
ejemplo – Eliminación de una configuración para un grupo de instancias

Para eliminar una configuración para un grupo de instancias, envíe una nueva solicitud de reconfiguración que excluya la configuración anterior.

nota

Solo puede anular la configuración inicial del clúster. No puede eliminarla.

Por ejemplo, para eliminar la configuración del comprobador de estado del NodeManager disco YARN del ejemplo anterior, envíe una nueva instanceGroups.json con el siguiente contenido.

[ { "InstanceGroupId":"<ig-1xxxxxxx9>", "Configurations":[ { "Classification":"yarn-site", "Properties":{ "yarn.nodemanager.vmem-check-enabled":"true", "yarn.nodemanager.vmem-pmem-ratio":"3.0" }, "Configurations":[] } ] } ]
nota

Para eliminar todas las configuraciones de la última solicitud de reconfiguración, envíe una solicitud de reconfiguración con una matriz vacía de configuraciones. Por ejemplo:

[ { "InstanceGroupId":"<ig-1xxxxxxx9>", "Configurations":[] } ]
ejemplo — Reconfigurar y cambiar el tamaño de un grupo de instancias en una sola solicitud

En el siguiente ejemplo de JSON se demuestra cómo reconfigurar y cambiar el tamaño de un grupo de instancias en la misma solicitud.

[ { "InstanceGroupId":"<ig-1xxxxxxx9>", "InstanceCount":5, "EC2InstanceIdsToTerminate":["i-123"], "ForceShutdown":true, "ShrinkPolicy":{ "DecommissionTimeout":10, "InstanceResizePolicy":{ "InstancesToTerminate":["i-123"], "InstancesToProtect":["i-345"], "InstanceTerminationTimeout":20 } }, "Configurations":[ { "Classification":"yarn-site", "Configurations":[], "Properties":{ "yarn.nodemanager.disk-health-checker.enable":"true", "yarn.nodemanager.disk-health-checker.max-disk-utilization-per-disk-percentage":"100.0" } } ] } ]

Reconfiguración de un grupo de instancias con el SDK para Java

nota

En los siguientes ejemplos, <j-2AL4XXXXXX5T9> sustitúyala por tu ID de clúster y <ig-1xxxxxxx9> sustitúyela por tu ID de grupo de instancias.

El siguiente fragmento de código proporciona una nueva configuración para un grupo de instancias mediante AWS SDK for Java.

AWSCredentials credentials = new BasicAWSCredentials("access-key", "secret-key"); AmazonElasticMapReduce emr = new AmazonElasticMapReduceClient(credentials); Map<String,String> hiveProperties = new HashMap<String,String>(); hiveProperties.put("hive.join.emit.interval","1000"); hiveProperties.put("hive.merge.mapfiles","true"); Configuration configuration = new Configuration() .withClassification("hive-site") .withProperties(hiveProperties); InstanceGroupModifyConfig igConfig = new InstanceGroupModifyConfig() .withInstanceGroupId("<ig-1xxxxxxx9>") .withReconfigurationType("MERGE"); .withConfigurations(configuration); ModifyInstanceGroupsRequest migRequest = new ModifyInstanceGroupsRequest() .withClusterId("<j-2AL4XXXXXX5T9>") .withInstanceGroups(igConfig); emr.modifyInstanceGroups(migRequest);

Con el siguiente fragmento de código, se elimina una configuración especificada previamente para un grupo de instancias; para ello, se proporciona una matriz vacía de configuraciones.

List<Configuration> configurations = new ArrayList<Configuration>(); InstanceGroupModifyConfig igConfig = new InstanceGroupModifyConfig() .withInstanceGroupId("<ig-1xxxxxxx9>") .withConfigurations(configurations); ModifyInstanceGroupsRequest migRequest = new ModifyInstanceGroupsRequest() .withClusterId("<j-2AL4XXXXXX5T9>") .withInstanceGroups(igConfig); emr.modifyInstanceGroups(migRequest);

Solución de problemas de reconfiguración de grupos de instancias

Si se produce un error en el proceso de reconfiguración de un grupo de instancias, Amazon EMR revierte la reconfiguración y registra un mensaje de error mediante un evento de Amazon. CloudWatch El evento proporciona un breve resumen del error de reconfiguración. Enumera las instancias en las que la reconfiguración ha fallado y los mensajes de error correspondientes. A continuación se muestra el ejemplo de un mensaje de error.

The reconfiguration operation for instance group ig-1xxxxxxx9 in Amazon EMR cluster j-2AL4XXXXXX5T9 (ExampleClusterName) failed at 2021-01-01 00:00 UTC and took 2 minutes to fail. Failed configuration version is example12345. Failure message: Instance i-xxxxxxx1, i-xxxxxxx2, i-xxxxxxx3 failed with message "This is an example failure message".

Para recopilar más datos sobre un error de reconfiguración, puede consultar los registros de aprovisionamiento de nodos. Esto es especialmente útil cuando recibe un mensaje como el siguiente.

i-xxxxxxx1 failed with message “Unable to complete transaction and some changes were applied.”
On the node
Para acceder a los registros de aprovisionamiento de nodos al conectarse a un nodo
  1. Use SSH para conectarse al nodo en el que no se pudo realizar la reconfiguración. Para obtener instrucciones, consulta Conéctate a tu instancia de Linux en la Guía del EC2 usuario de Amazon para instancias de Linux.

  2. Navegue hasta el siguiente directorio, que contiene los archivos de registro de aprovisionamiento del nodo.

    /mnt/var/log/provision-node/
  3. Abra el subdirectorio reports y busque el informe de aprovisionamiento de nodos para la reconfiguración. El reports directorio organiza los registros por número de versión de reconfiguración, identificador único universal (UUID), dirección IP de la EC2 instancia de Amazon y marca de tiempo. Cada informe es un archivo YAML comprimido que contiene información detallada sobre el proceso de reconfiguración.

    A continuación, se muestra un ejemplo del nombre y la ruta de un archivo de informe.

    /reports/2/ca598xxx-cxxx-4xxx-bxxx-6dbxxxxxxxxx/ip-10-73-xxx-xxx.ec2.internal/202104061715.yaml.gz
  4. Puede examinar un informe con un visor de archivos como zless, como se muestra en el siguiente ejemplo.

    zless 202104061715.yaml.gz
Amazon S3
Para acceder a los registros de aprovisionamiento de nodos mediante Amazon S3
  1. Inicie sesión en la consola de Amazon S3 AWS Management Console y ábrala en https://console.aws.amazon.com/s3/.

  2. Abra el bucket de Amazon S3 que ha especificado al configurar el clúster para archivar los archivos de registro.

  3. Navegue hasta la siguiente carpeta, que contiene los archivos de registro de aprovisionamiento del nodo:

    amzn-s3-demo-bucket/elasticmapreduce/<cluster id>/node/<instance id>/provision-node/
  4. Abra la carpeta reports y busque el informe de aprovisionamiento de nodos para la reconfiguración. La reports carpeta organiza los registros por número de versión de reconfiguración, identificador único universal (UUID), dirección IP de la EC2 instancia de Amazon y marca de tiempo. Cada informe es un archivo YAML comprimido que contiene información detallada sobre el proceso de reconfiguración.

    A continuación, se muestra un ejemplo del nombre y la ruta de un archivo de informe.

    /reports/2/ca598xxx-cxxx-4xxx-bxxx-6dbxxxxxxxxx/ip-10-73-xxx-xxx.ec2.internal/202104061715.yaml.gz
  5. Para ver un archivo de registro, puede descargarlo de Amazon S3 en su máquina local como un archivo de texto. Para obtener instrucciones, consulte Descarga de un objeto.

Cada archivo de registro contiene un informe de aprovisionamiento detallado para la reconfiguración asociada. Para encontrar información sobre los mensajes de error, puede buscar el nivel de registro err de un informe. El formato del informe depende de la versión de Amazon EMR del clúster.

En el siguiente ejemplo se muestra información de error para las versiones de Amazon EMR anteriores a la 5.32.0 y la 6.2.0.

- !ruby/object:Puppet::Util::Log level: !ruby/sym err tags: - err message: "Example detailed error message." source: Puppet time: 2021-01-01 00:00:00.000000 +00:00

Las versiones 5.32.0, 6.2.0 y posteriores de Amazon EMR utilizan el siguiente formato en su lugar.

- level: err message: 'Example detailed error message.' source: Puppet tags: - err time: '2021-01-01 00:00:00.000000 +00:00' file: line: