Uso de un personalizado AMI - 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.

Uso de un personalizado AMI

Si utiliza Amazon EMR 5.7.0 o una versión posterior, puede optar por especificar un Amazon Linux personalizado AMI en lugar del Amazon Linux predeterminado AMI para AmazonEMR. Una personalización AMI es útil si desea hacer lo siguiente:

  • Preinstalar aplicaciones y realizar otras personalizaciones en lugar de utilizar acciones de arranque. Esto puede mejorar el tiempo de inicio del clúster y simplificar el flujo de trabajo de inicio. Para obtener más información y un ejemplo, consulte Crear un Amazon Linux personalizado AMI a partir de una instancia preconfigurada.

  • Implementar configuraciones de clúster y de nodo más sofisticadas de lo que permiten las acciones de arranque.

  • Cifre los volúmenes de los dispositivos EBS raíz (volúmenes de arranque) de EC2 las instancias de su clúster si utiliza una EMR versión de Amazon anterior a la 5.24.0. Como ocurre con el valor predeterminadoAMI, el tamaño mínimo del volumen raíz de una personalización AMI es de 10 GiB para las EMR versiones 6.9 y anteriores de Amazon, y de 15 GiB para las versiones 6.10 y superiores de AmazonEMR. Para obtener más información, consulte Crear un volumen personalizado AMI con un dispositivo EBS raíz de Amazon cifrado.

    nota

    A partir de la EMR versión 5.24.0 de Amazon, puede utilizar una opción de configuración de seguridad para cifrar los dispositivos EBS raíz y los volúmenes de almacenamiento si lo especifica AWS KMS como proveedor de claves. Para obtener más información, consulte Cifrado de disco local.

AMIDebe existir una personalización en la misma AWS región en la que creó el clúster. También debe coincidir con la arquitectura de la EC2 instancia. Por ejemplo, una instancia m5.xlarge tiene una arquitectura x86_64. Por lo tanto, para aprovisionar un m5.xlarge mediante una personalizadaAMI, la configuración personalizada también AMI debe tener una arquitectura x86_64. Del mismo modo, para aprovisionar una instancia m6g.xlarge, que tiene una arquitectura arm64, la configuración personalizada debe tener una arquitectura arm64. AMI Para obtener más información sobre cómo identificar un Linux AMI para tu tipo de instancia, consulta Buscar un Linux AMI en la Guía del EC2 usuario de Amazon.

importante

EMRlos clústeres que ejecutan Amazon Linux o Amazon Machine Images (AMIs) de Amazon Linux 2 utilizan el comportamiento predeterminado de Amazon Linux y no descargan e instalan automáticamente actualizaciones importantes y críticas del núcleo que requieren un reinicio. Este comportamiento es el mismo que el de otras EC2 instancias de Amazon que ejecutan el Amazon Linux predeterminadoAMI. Si aparecen nuevas actualizaciones de software de Amazon Linux que requieren un reinicio (como el núcleo y CUDA las actualizaciones) después de que esté disponible una EMR versión de Amazon, las instancias de EMR clúster que se ejecutan de forma predeterminada AMI no descargan e instalan automáticamente esas actualizaciones. NVIDIA Para obtener actualizaciones del núcleo, puedes personalizar tu Amazon EMR AMI para que utilice la versión más reciente de Amazon Linux AMI.

Crear un Amazon Linux personalizado AMI a partir de una instancia preconfigurada

Los pasos básicos para preinstalar el software y realizar otras configuraciones para crear un Amazon Linux personalizado AMI para Amazon EMR son los siguientes:

  • Lance una instancia desde la base de Amazon LinuxAMI.

  • Conéctese a la instancia para instalar software y realizar otras personalizaciones.

  • Cree una nueva imagen (AMIinstantánea) de la instancia que configuró.

Después de crear la imagen en función de su instancia personalizada, puede copiar dicha imagen a un destino cifrado tal y como se describe en Crear un volumen personalizado AMI con un dispositivo EBS raíz de Amazon cifrado.

Tutorial: Crear una AMI a partir de una instancia con un software personalizado instalado

Para lanzar una EC2 instancia basada en la versión más reciente de Amazon Linux AMI
  1. Use AWS CLI para ejecutar el siguiente comando, que crea una instancia a partir de una existenteAMI. MyKeyNameSustitúyalo por el par de claves que utilizas para conectarte a la instancia y MyAmiId con el ID de un Amazon Linux adecuadoAMI. Para ver las más recientes AMIIDs, consulte Amazon Linux AMI.

    nota

    Se incluyen caracteres de continuación de línea de Linux (\) para facilitar la lectura. Se pueden eliminar o utilizar en los comandos de Linux. En Windows, elimínelos o sustitúyalos por un signo de intercalación (^).

    aws ec2 run-instances --image-id MyAmiID \ --count 1 --instance-type m5.xlarge \ --key-name MyKeyName --region us-west-2

    El valor de salida InstanceId se utiliza como MyInstanceId en el siguiente paso.

  2. Ejecute el siguiente comando:

    aws ec2 describe-instances --instance-ids MyInstanceId

    El valor de salida PublicDnsName se utiliza para conectarse a la instancia en el siguiente paso.

Para conectar a la instancia e instalar software
  1. Utilice una SSH conexión que le permita ejecutar comandos de shell en su instancia de Linux. Para obtener más información, consulta Cómo conectarse a tu instancia de Linux mediante SSH la Guía del EC2 usuario de Amazon.

  2. Realice las personalizaciones necesarias. Por ejemplo:

    sudo yum install MySoftwarePackage sudo pip install MySoftwarePackage
Para crear una instantánea desde su imagen personalizada

Cómo usar una personalización AMI en un EMR clúster de Amazon

Puedes usar una personalización AMI para aprovisionar un EMR clúster de Amazon de dos maneras:

  • Usa una única personalización AMI para todas las EC2 instancias del clúster.

  • Usa una personalización diferente AMIs para los distintos tipos de EC2 instancias que se usan en el clúster.

Solo puedes usar una de las dos opciones al aprovisionar un EMR clúster y no puedes cambiarla una vez que el clúster se haya iniciado.

Consideraciones sobre el uso de la personalización única frente a la personalización múltiple AMIs en un EMR clúster de Amazon
Consideración Personalización única AMI Personalización múltiple AMIs

Utilice procesadores x86 y Graviton2 con procesadores personalizados AMIs en el mismo clúster

No compatible

Compatible

AMIla personalización varía según el tipo de instancia

No compatible

Compatible

Cambia la personalización AMIs al añadir nuevos grupos o flotas de instancias de tareas a un clúster en ejecución. Nota: no puedes cambiar la costumbre de los grupos o flotas AMI de instancias existentes.

No compatible

Compatible

Usa la AWS consola para iniciar un clúster

Compatible

No compatible

Se utiliza AWS CloudFormation para iniciar un clúster

Compatible

Compatible

Utilice una única personalización AMI en un EMR clúster

Para especificar un AMI ID personalizado al crear un clúster, utilice una de las siguientes opciones:

Amazon EMR console
Para especificar una única personalización AMI desde la consola
  1. Inicia sesión y abre la AWS Management Console EMR consola de Amazon en https://console.aws.amazon.com/emr.

  2. EMREC2En el panel de navegación de la izquierda, selecciona Clústeres y, a continuación, selecciona Crear clúster.

  3. En Nombre y aplicaciones, busque Opciones del sistema operativo. Selecciona Personalizado AMI e introduce tu AMI ID en el AMI campo Personalizado.

  4. Elija cualquier otra opción que se aplique a su clúster.

  5. Para lanzar el clúster, elija Crear clúster.

AWS CLI
Para especificar una única personalización AMI con el AWS CLI
  • Utilice el --custom-ami-id parámetro para especificar el AMI ID al ejecutar el aws emr create-cluster comando.

    En el siguiente ejemplo, se especifica un clúster que utiliza una única personalización AMI con un volumen de arranque de 20 GiB. Para obtener más información, consulte Personalización del volumen del dispositivo EBS raíz de Amazon.

    nota

    Se incluyen caracteres de continuación de línea de Linux (\) para facilitar la lectura. Se pueden eliminar o utilizar en los comandos de Linux. En Windows, elimínelos o sustitúyalos por un signo de intercalación (^).

    aws emr create-cluster --name "Cluster with My Custom AMI" \ --custom-ami-id MyAmiID --ebs-root-volume-size 20 \ --release-label emr-5.7.0 --use-default-roles \ --instance-count 2 --instance-type m5.xlarge

Usa múltiples opciones personalizadas AMIs en un EMR clúster de Amazon

Para crear un clúster con varias opciones personalizadasAMIs, usa una de las siguientes opciones:

Actualmente, la consola de AWS administración no admite la creación de un clúster mediante la personalización múltipleAMIs.

ejemplo - AWS CLI Utilízalo para crear un clúster de grupos de instancias mediante múltiples ajustes personalizados AMIs

Con la AWS CLI versión 1.20.21 o superior, puedes asignar una única personalización AMI a todo el clúster, o puedes asignar varias personalizadas AMIs a cada nodo de instancia del clúster.

En el siguiente ejemplo, se muestra un clúster de grupos de instancias uniforme creado con dos tipos de instancias (m5.xlarge) que se utilizan en todos los tipos de nodos (principal, central y de tarea). Cada nodo tiene varias configuraciones personalizadas. AMIs El ejemplo ilustra varias características de la AMI configuración personalizada múltiple:

  • No hay ninguna AMI asignación personalizada a nivel de clúster. Esto sirve para evitar conflictos entre la personalización múltiple AMIs y una únicaAMI, lo que provocaría un error en el lanzamiento del clúster.

  • El clúster puede tener varias funciones personalizadas AMIs en los nodos de tareas principales, principales e individuales. Esto permite realizar AMI personalizaciones individuales, como aplicaciones preinstaladas, configuraciones de clústeres sofisticadas y volúmenes cifrados de dispositivos EBS raíz de Amazon.

  • El nodo principal del grupo de instancias solo puede tener un tipo de instancia y la correspondiente personalización. AMI Del mismo modo, el nodo principal solo puede tener un tipo de instancia y la personalización correspondienteAMI.

  • El clúster puede tener varios nodos de tarea.

aws emr create-cluster --instance-groups InstanceGroupType=PRIMARY,InstanceType=m5.xlarge,InstanceCount=1,CustomAmiId=ami-123456 InstanceGroupType=CORE,InstanceType=m5.xlarge,InstanceCount=1,CustomAmiId=ami-234567 InstanceGroupType=TASK,InstanceType=m6g.xlarge,InstanceCount=1,CustomAmiId=ami-345678 InstanceGroupType=TASK,InstanceType=m5.xlarge,InstanceCount=1,CustomAmiId=ami-456789
ejemplo - Usa la AWS CLI versión 1.20.21 o superior para agregar un nodo de tareas a un clúster de grupos de instancias en ejecución con varios tipos de instancias y múltiples instancias personalizadas AMIs

Con la AWS CLI versión 1.20.21 o superior, puedes añadir varios grupos personalizados AMIs a un grupo de instancias y añadirlos a un clúster en ejecución. El argumento CustomAmiId se puede usar con el comando add-instance-groups, como se muestra en el siguiente ejemplo. Ten en cuenta que el mismo AMI ID personalizado múltiple (ami-123456) se usa en más de un nodo.

aws emr create-cluster --instance-groups InstanceGroupType=PRIMARY,InstanceType=m5.xlarge,InstanceCount=1,CustomAmiId=ami-123456 InstanceGroupType=CORE,InstanceType=m5.xlarge,InstanceCount=1,CustomAmiId=ami-123456 InstanceGroupType=TASK,InstanceType=m5.xlarge,InstanceCount=1,CustomAmiId=ami-234567 { "ClusterId": "j-123456", ... } aws emr add-instance-groups --cluster-id j-123456 --instance-groups InstanceGroupType=Task,InstanceType=m6g.xlarge,InstanceCount=1,CustomAmiId=ami-345678
ejemplo - Use la AWS CLI versión 1.20.21 o superior para crear un clúster de flota de instancias, varios tipos de instancias personalizadas, múltiples tipos de instanciasAMIs, principales bajo demanda, núcleos bajo demanda, múltiples nodos de núcleo y tareas
aws emr create-cluster --instance-fleets InstanceFleetType=PRIMARY,TargetOnDemandCapacity=1,InstanceTypeConfigs=['{InstanceType=m5.xlarge, CustomAmiId=ami-123456}'] InstanceFleetType=CORE,TargetOnDemandCapacity=1,InstanceTypeConfigs=['{InstanceType=m5.xlarge,CustomAmiId=ami-234567},{InstanceType=m6g.xlarge, CustomAmiId=ami-345678}'] InstanceFleetType=TASK,TargetSpotCapacity=1,InstanceTypeConfigs=['{InstanceType=m5.xlarge,CustomAmiId=ami-456789},{InstanceType=m6g.xlarge, CustomAmiId=ami-567890}']
ejemplo - Utilice la AWS CLI versión 1.20.21 o superior para añadir nodos de tareas a un clúster en ejecución con varios tipos de instancias y varios personalizados AMIs
aws emr create-cluster --instance-fleets InstanceFleetType=PRIMARY,TargetOnDemandCapacity=1,InstanceTypeConfigs=['{InstanceType=m5.xlarge, CustomAmiId=ami-123456}'] InstanceFleetType=CORE,TargetOnDemandCapacity=1,InstanceTypeConfigs=['{InstanceType=m5.xlarge,CustomAmiId=ami-234567},{InstanceType=m6g.xlarge, CustomAmiId=ami-345678}'] { "ClusterId": "j-123456", ... } aws emr add-instance-fleet --cluster-id j-123456 --instance-fleet InstanceFleetType=TASK,TargetSpotCapacity=1,InstanceTypeConfigs=['{InstanceType=m5.xlarge,CustomAmiId=ami-234567},{InstanceType=m6g.xlarge, CustomAmiId=ami-345678}']

Administrar las actualizaciones AMI del repositorio de paquetes

En el primer arranque, Amazon Linux se AMIs conecta de forma predeterminada a los repositorios de paquetes para instalar las actualizaciones de seguridad antes de que se inicien otros servicios. En función de tus requisitos, puedes optar por deshabilitar estas actualizaciones cuando especifiques una personalizada AMI para AmazonEMR. La opción de deshabilitar esta función solo está disponible cuando utilizas una función personalizadaAMI. De forma predeterminada, las actualizaciones del kernel de Amazon Linux y otros paquetes de software que requieren un reinicio no se actualizan. Tenga en cuenta que la configuración de red debe permitir la HTTPS entrada HTTP y salida a los repositorios de Amazon Linux en Amazon S3; de lo contrario, las actualizaciones de seguridad no se realizarán correctamente.

aviso

Le recomendamos encarecidamente que opte por actualizar todos los paquetes instalados al reiniciar el sistema cuando especifique una opción personalizada. AMI Si se elige no actualizar paquetes se crean riesgos de seguridad adicionales.

Con el AWS Management Console, puede seleccionar la opción para deshabilitar las actualizaciones al elegir Personalizado AMI.

Con el AWS CLI, puede especificar --repo-upgrade-on-boot NONE y --custom-ami-id cuándo utilizar el create-cluster comando.

Con Amazon EMRAPI, puedes especificar NONE el RepoUpgradeOnBootparámetro.

Crear un volumen personalizado AMI con un dispositivo EBS raíz de Amazon cifrado

Para cifrar el volumen del dispositivo EBS raíz de Amazon de un Amazon Linux AMI para AmazonEMR, copie una imagen instantánea de un destino no cifrado AMI a uno cifrado. Para obtener información sobre la creación de EBS volúmenes cifrados, consulte el EBScifrado de Amazon en la Guía del EC2 usuario de Amazon. La fuente AMI de la instantánea puede ser la base de Amazon Linux AMI o puede copiar una instantánea de una AMI derivada de Amazon Linux base AMI que haya personalizado.

nota

A partir de la EMR versión 5.24.0 de Amazon, puede utilizar una opción de configuración de seguridad para cifrar los dispositivos EBS raíz y los volúmenes de almacenamiento si lo especifica AWS KMS como proveedor de claves. Para obtener más información, consulte Cifrado de disco local.

Puede utilizar un proveedor de claves externo o una AWS KMS clave para cifrar el volumen raíz. EBS El rol de servicio que EMR utiliza Amazon (normalmente el predeterminadoEMR_DefaultRole) debe permitir cifrar y descifrar el volumen, como mínimo, EMR para que Amazon cree un clúster con. AMI Si se utiliza AWS KMS como proveedor de claves, esto significa que se deben permitir las siguientes acciones:

  • kms:encrypt

  • kms:decrypt

  • kms:ReEncrypt*

  • kms:CreateGrant

  • kms:GenerateDataKeyWithoutPlaintext"

  • kms:DescribeKey"

La forma más sencilla de hacerlo consiste en agregar el rol como usuario clave, tal y como se describe en el siguiente tutorial. Se proporciona la siguiente instrucción de política de ejemplo por si tiene que personalizar políticas de rol.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "EmrDiskEncryptionPolicy", "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:CreateGrant", "kms:GenerateDataKeyWithoutPlaintext", "kms:DescribeKey" ], "Resource": [ "*" ] } ] }

Tutorial: Creación de un volumen personalizado AMI con un dispositivo raíz cifrado mediante una KMS clave

El primer paso de este ejemplo es encontrar ARN la KMS clave o crear una nueva. Para más información sobre la creación de claves, consulte Creación de claves en la Guía para desarrolladores de AWS Key Management Service . El siguiente procedimiento muestra cómo añadir el rol de servicio predeterminado, EMR_DefaultRole, como un usuario clave a la política de claves. Anote el ARNvalor de la clave al crearla o editarla. Usas el ARN más alto cuando creas elAMI.

Para añadir el rol de servicio de Amazon EC2 a la lista de usuarios de claves de cifrado con la consola
  1. Inicia sesión en la consola AWS Key Management Service (AWS KMS) AWS Management Console y ábrela en https://console.aws.amazon.com/kms.

  2. Para cambiarla Región de AWS, usa el selector de regiones en la esquina superior derecha de la página.

  3. Elija el alias de la KMS clave que desee utilizar.

  4. En la página de detalles de la clave, en Key Users (Usuarios de claves), seleccione Add (Añadir).

  5. En el cuadro de diálogo Adjuntar, selecciona el rol de EMR servicio de Amazon. El nombre del rol predeterminado es EMR_DefaultRole.

  6. Elija Adjuntar.

Para crear un cifrado AMI con el AWS CLI
  • Utilice el aws ec2 copy-image comando del AWS CLI para crear un AMI con un volumen de dispositivo EBS raíz cifrado y la clave que modificó. Sustituya el --kms-key-id valor especificado por el valor completo ARN de la clave que creó o modificó más abajo.

    nota

    Se incluyen caracteres de continuación de línea de Linux (\) para facilitar la lectura. Se pueden eliminar o utilizar en los comandos de Linux. En Windows, elimínelos o sustitúyalos por un signo de intercalación (^).

    aws ec2 copy-image --source-image-id MyAmiId \ --source-region us-west-2 --name MyEncryptedEMRAmi \ --encrypted --kms-key-id arn:aws:kms:us-west-2:12345678910:key/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

El resultado del comando proporciona el identificador del clúster AMI que ha creado, que puede especificar al crear un clúster. Para obtener más información, consulte Utilice una única personalización AMI en un EMR clúster. También puede optar por personalizarlo AMI instalando software y realizando otras configuraciones. Para obtener más información, consulte Crear un Amazon Linux personalizado AMI a partir de una instancia preconfigurada.

Prácticas recomendadas y consideraciones

Cuando crees una personalizada AMI para AmazonEMR, ten en cuenta lo siguiente:

  • La serie Amazon EMR 7.x se basa en Amazon Linux 2023. Para estas EMR versiones de Amazon, debe usar imágenes basadas en Amazon Linux 2023 para personalizarlasAMIs. Para encontrar una personalización básicaAMI, consulta Cómo encontrar un Linux AMI.

  • Para EMR las versiones de Amazon anteriores a 7.x, no AMIs se admite Amazon Linux 2023.

  • Amazon EMR 5.30.0 y versiones posteriores y la serie Amazon EMR 6.x se basan en Amazon Linux 2. Para estas EMR versiones de Amazon, debe utilizar imágenes basadas en Amazon Linux 2 para personalizarlasAMIs. Para encontrar una base personalizadaAMI, consulte Cómo encontrar un Linux AMI.

  • Para EMR las versiones de Amazon anteriores a 5.30.0 y 6.x, no AMIs se admite Amazon Linux 2.

  • Debe utilizar Amazon Linux de 64 bitsAMI. No se admite una versión AMI de 32 bits.

  • No se admite Amazon Linux AMIs con varios EBS volúmenes de Amazon.

  • Base su personalización en la versión más reciente EBS de Amazon Linux AMI respaldada. Para obtener una lista de Amazon Linux AMIs y sus correspondientes AMI IDs productos, consulte Amazon Linux AMI.

  • No copies una instantánea de una EMR instancia de Amazon existente para crear una personalizadaAMI. Esto provoca errores.

  • Solo se admiten el tipo de HVM virtualización y las instancias compatibles con AmazonEMR. Asegúrate de seleccionar la HVM imagen y un tipo de instancia compatibles con Amazon a EMR medida que avanzas en el proceso de AMI personalización. Para conocer las instancias y tipos de virtualización compatibles, consulte Tipos de instancias admitidas.

  • Tu rol de servicio debe tener permisos de lanzamiento en elAMI, por lo que AMI debe ser público o tú debes ser el propietario del mismo AMI o hacer que el propietario lo comparta contigo.

  • Si se crean usuarios AMI con el mismo nombre que las aplicaciones, se producen errores (por ejemplohadoop,hdfs,yarn, ospark).

  • El contenido de /tmp/var, y /emr (si existe enAMI) se mueve a y/mnt/tmp, /mnt/emr respectivamente/mnt/var, durante el inicio. Los archivos se conservan, pero si hay una gran cantidad de datos, el startup puede tardar más de lo esperado.

  • Si utilizas un Amazon Linux personalizado AMI basado en un Amazon Linux AMI con una fecha de creación del 11 de agosto de 2018, el servidor Oozie no podrá iniciarse. Si utilizas Oozie, crea una personalizada AMI basada en un Amazon Linux AMI ID con una fecha de creación diferente. Puedes usar el siguiente AWS CLI comando para obtener una lista de imágenes IDs para todos los HVM Amazon Linux AMIs con una versión 2018.03, junto con la fecha de lanzamiento, para que puedas elegir un Amazon Linux adecuado AMI como base. MyRegion Sustitúyalo por tu identificador de región, como us-west-2.

    aws ec2 --region MyRegion describe-images --owner amazon --query 'Images[?Name!=`null`]|[?starts_with(Name, `amzn-ami-hvm-2018.03`) == `true`].[CreationDate,ImageId,Name]' --output text | sort -rk1
  • En los casos en que utilice un VPC nombre de dominio no estándar AmazonProvidedDNS, no debe utilizar la rotate opción en la configuración del sistema operativo. DNS

Para obtener más información, consulta Cómo crear un Linux EBS respaldado por Amazon AMI en la Guía del EC2 usuario de Amazon.