Planificación y configuración de flotas de instancias para su clúster de Amazon EMR
nota
La configuración de las flotas de instancias está disponible solo en las versiones 4.8.0 y posteriores de Amazon EMR, excluidas las versiones 5.0.0 y 5.0.3.
La configuración de la flota de instancias para los clústeres de Amazon EMR le permite seleccionar una amplia variedad de opciones de aprovisionamiento para las instancias de Amazon EC2 y lo ayuda a desarrollar una estrategia de recursos flexible y elástica para cada tipo de nodo del clúster.
En una configuración de flota de instancias, debe especificar una capacidad de destino para las instancias bajo demanda y las instancias de spot dentro de cada flota. Cuando se lanza el clúster, Amazon EMR aprovisiona instancias hasta que se atienden los destinos. Cuando Amazon EC2 reclama una instancia de spot en un clúster en ejecución debido a un incremento de los precios, o una instancia devuelve un error, Amazon EMR intenta sustituir la instancia por cualquiera de los tipos de instancias que especifique. De ese modo, resulta más sencillo recuperar la capacidad durante un pico de los precios de spot.
Puede especificar hasta cinco tipos de instancias de Amazon EC2 por flota para que Amazon EMR los utilice al atender los destinos o un máximo de 30 tipos de instancias de Amazon EC2 por flota al crear un clúster mediante la AWS CLI o la API de Amazon EMR y una estrategia de asignación para instancias de spot y bajo demanda.
También puede seleccionar varias subredes para distintas zonas de disponibilidad. Cuando Amazon EMR lanza el clúster, busca en esas subredes para encontrar las instancias y las opciones de compra que especifique. Si Amazon EMR detecta un evento de AWS a gran escala en una o varias zonas de disponibilidad, Amazon EMR intenta automáticamente enrutar el tráfico de las zonas de disponibilidad afectadas e intenta lanzar nuevos clústeres que cree en zonas de disponibilidad alternativas de acuerdo con sus selecciones. Tenga en cuenta que la selección de la zona de disponibilidad del clúster solo se realiza en el momento de crear el clúster. Los nodos del clúster existentes no se vuelven a lanzar automáticamente en una nueva zona de disponibilidad en el caso de que se produzca una interrupción en la zona de disponibilidad.
Consideraciones para trabajar con flotas de instancias
Tenga en cuenta los siguientes aspectos al utilizar flotas de instancias con Amazon EMR.
-
Puede tener una flota de instancias, y solo una, por tipo de nodo (principal, básico, de tarea). Puede especificar hasta cinco tipos de instancias de Amazon EC2 para cada flota en la AWS Management Console (o un máximo de 30 tipos por flota de instancias al crear un clúster mediante AWS CLI o la API de Amazon EMR y una Estrategia de asignación para flotas de instancias).
-
Amazon EMR elige cualquiera o todos los tipos de instancia de Amazon EC2 especificados para aprovisionar con las opciones de compra de spot y bajo demanda.
-
Establezca las capacidades de destino para instancias de spot y bajo demanda para la flota de instancias básicas y de tarea. Utilice vCPU o una unidad genérica asignada a cada instancia de Amazon EC2 que se tiene en cuenta para los destinos. Amazon EMR aprovisiona instancias hasta que se ha satisfecho por completo cada capacidad de destino. Para la flota principal, el destino es siempre uno.
-
Puede elegir una subred (zona de disponibilidad) o un intervalo. Si elige un intervalo, Amazon EMR aprovisiona capacidad en la zona de disponibilidad que sea la mejor opción.
-
Cuando se especifica una capacidad de destino para las instancias de spot:
-
Para cada tipo de instancia, especifique un precio de spot máximo. Amazon EMR aprovisiona las instancias de spot si el precio de spot está por debajo del precio de spot máximo. Solo tiene que pagar el precio de spot, que no es necesariamente el precio de spot máximo.
-
Para cada flota, defina un período de tiempo de espera para aprovisionamiento de instancias de spot. Si Amazon EMR no puede aprovisionar la capacidad de spot, puede terminar el clúster o en su lugar cambiarlo a aprovisionamiento de capacidad bajo demanda. Esto solo se aplica al aprovisionamiento de clústeres, no a su cambio de tamaño. Si el tiempo de espera finaliza durante el proceso de cambio de tamaño del clúster, las solicitudes de spot no aprovisionadas se anularán sin transferirse a la capacidad bajo demanda.
-
-
En el caso de cada flota, puede especificar una de las siguientes estrategias de asignación para sus instancias de Spot: optimizadas en función de la relación precio-capacidad, optimizadas en función de la capacidad, priorizadas y optimizadas en función de la capacidad, con el precio más bajo o diversificadas en todos los grupos.
-
En el caso de cada flota, puede aplicar las siguientes estrategias de asignación para sus instancias bajo demanda: la estrategia con el precio más bajo o la estrategia con prioridad.
-
En el caso de cada flota con con instancias bajo demanda, puede optar por aplicar opciones de reserva de capacidad.
-
Si utiliza una estrategia de asignación para flotas de instancias, se deben tener en cuenta las siguientes consideraciones al elegir subredes para su clúster de EMR:
Cuando Amazon EMR aprovisiona un clúster con una flota de tareas, filtra las subredes que no tienen suficientes direcciones IP disponibles para aprovisionar todas las instancias del clúster de EMR solicitado. Esto incluye las direcciones IP necesarias para las flotas de instancias principales, básicas y de tareas durante el lanzamiento del clúster. A continuación, Amazon EMR aprovecha su estrategia de asignación para determinar el grupo de instancias, en función del tipo de instancia y las subredes restantes con direcciones IP suficientes, para lanzar el clúster.
Si Amazon EMR no puede lanzar todo el clúster debido a que no hay suficientes direcciones IP disponibles, intentará identificar las subredes con suficientes direcciones IP libres para lanzar las flotas de instancias esenciales (principales y básicas). En estos casos, la flota de instancias de la tarea pasará a un estado suspendido, en lugar de finalizar el clúster con un error.
Si ninguna de las subredes especificadas contiene direcciones IP suficientes para aprovisionar las flotas de instancias principales y básicas esenciales, el lanzamiento del clúster fallará y mostrará un VALIDATION_ERROR. Esto activa un evento de finalización del clúster de gravedad CRITICAL que le notifica de que el clúster no se puede lanzar. Para impedir este problema, se recomienda aumentar la cantidad de direcciones IP en las subredes.
-
Al lanzar instancias bajo demanda, puede utilizar reservas de capacidad abiertas o específicas en sus cuentas principales, básicas o de tareas. Es posible que vea una capacidad insuficiente con las instancias bajo demanda cuando utiliza la estrategia de asignación para flotas de instancias. Se recomienda que especifique varios tipos de instancias para diversificar y reducir la posibilidad de que la capacidad sea insuficiente. Para obtener más información, consulte Uso de las reservas de capacidad con flotas de instancias en Amazon EMR.
Opciones de flota de instancias
Utilice las siguientes directrices para comprender las opciones de flota de instancia.
Temas
Configuración de las capacidades de destino
Especifique las capacidades de destino que desee para la flota de instancias secundarias y la flota de instancias de tareas. Cuando lo haga, eso determina el número de instancias bajo demanda e instancias de spot que aprovisiona Amazon EMR. Cuando se especifica una instancia, decide la cantidad de cada instancia que se tiene en cuenta para el destino. Cuando se aprovisiona una instancia bajo demanda, se tiene en cuenta para el destino bajo demanda. Lo mismo sucede para las instancias de spot. A diferencia de las flotas de instancias básicas y de tarea, la flota de instancias principales siempre es una instancia. Por tanto, la capacidad de destino para esta flota es siempre uno.
Cuando se utiliza la consola, las vCPU del tipo de instancia de Amazon EC2 se utilizan como recuento para las capacidades de destino de forma predeterminada. Puede cambiar esto a Generic units (Unidades genéricas) y, a continuación, especificar el recuento de cada tipo de instancia EC2. Cuando se utiliza la AWS CLI, asigna manualmente unidades genéricas para cada tipo de instancia.
importante
Al elegir un tipo de instancia mediante la AWS Management Console, el número de vCPU que se muestra para cada tipo de instancia es el número de núcleos virtuales de YARN para ese tipo de instancia, no el número de vCPU de EC2 para ese tipo de instancia. Para más información sobre el número de vCPU para cada tipo de instancia, consulte Tipos de instancias de Amazon EC2
Para cada flota, se especifican hasta cinco tipos de instancia de Amazon EC2. Si usa una Estrategia de asignación para flotas de instancias y crea un clúster con AWS CLI o la API de Amazon EMR, puede especificar hasta 30 tipos de instancias de EC2 por flota de instancias. Amazon EMR elige cualquier combinación de estos tipos de instancias de EC2 para satisfacer sus capacidades de destino. Dado que Amazon EMR desea rellenar la capacidad de destino por completo, podría producirse un sobreuso. Por ejemplo, si hay dos unidades no atendidas y Amazon EMR solo puede aprovisionar una instancia con un recuento de cinco unidades, la instancia aún se aprovisionará, lo que significa que la capacidad de destino se excederá en tres unidades.
Si reduce la capacidad de destino para cambiar el tamaño de un clúster en ejecución, Amazon EMR intenta completar tareas de aplicación y termina instancias para satisfacer el nuevo destino. Para obtener más información, consulte Terminación al completar las tareas.
Opciones de lanzamiento
En el caso de cada grupo de instancias, especifique un precio de spot máximo por cada tipo de instancia en una flota. Puede configurar este precio como un porcentaje del precio bajo demanda o como un importe específico en dólares. Amazon EMR aprovisiona instancias de spot si el precio de spot actual en una zona de disponibilidad está por debajo de su precio de spot máximo. Solo tiene que pagar el precio de spot, que no es necesariamente el precio de spot máximo.
nota
Las instancias de spot con una duración definida (también conocidas como bloques de spot) dejarán de estar disponibles para los nuevos clientes a partir del 1 de julio de 2021. En el caso de los clientes que hayan utilizado previamente la característica, se continuará ofreciendo soporte a las instancias de spot con una duración definida hasta el 31 de diciembre de 2022.
Disponible en Amazon EMR 5.12.1 y versiones posteriores, tiene la opción de lanzar flotas de instancias de spot y bajo demanda con una asignación de capacidad optimizada. Esta opción de estrategia de asignación se puede configurar en la antigua AWS Management Console o mediante la API RunJobFlow
. Tenga en cuenta que no puede personalizar la estrategia de asignación en la nueva consola. El uso de la opción de estrategia de asignación requiere permisos de rol de servicio adicionales. Si utiliza el rol de servicio predeterminado de Amazon EMR y la política administrada (EMR_DefaultRole y AmazonEMRServicePolicy_v2
) para el clúster, los permisos para la opción de estrategia de asignación ya están incluidos. Si no utiliza el rol de servicio ni la política administrada de Amazon EMR predeterminados, debe agregarlos para utilizar esta opción. Consulte Rol de servicio para Amazon EMR (rol de EMR).
Para más información acerca de las instancias de Spot, consulte Instancias de Spot en la Guía del usuario de Amazon EC2. Para más información acerca de las instancias bajo demanda, consulte Instancias bajo demanda en la Guía del usuario de Amazon EC2.
Si opta por lanzar flotas de instancias bajo demanda con la estrategia de asignación con el precio más bajo, tiene la opción de utilizar las reservas de capacidad. Las opciones de reserva de capacidad se pueden establecer mediante la API RunJobFlow
de Amazon EMR. Las reservas de capacidad requieren permisos de rol de servicio adicionales que debe agregar para utilizar estas opciones. Consulte Permisos de estrategia de asignación. Tenga en cuenta que no puede personalizar las reservas de capacidad en la nueva consola.
Opciones para varias subredes (zonas de disponibilidad)
Cuando utilice flotas de instancias, puede especificar varias subredes de Amazon EC2 dentro de una VPC, cada una de ellas correspondiente a una zona de disponibilidad diferente. Si utiliza EC2-Classic, las zonas de disponibilidad se especifican de forma explícita. Amazon EMR identifica la mejor zona de disponibilidad para lanzar instancias de acuerdo con sus especificaciones de flota. Las instancias se aprovisionan siempre en una única zona de disponibilidad. Puede seleccionar subredes privadas o subredes públicas, pero no puede combinarlas y las subredes que especifique deben estar dentro de la misma VPC.
Configuración del nodo maestro
Dado que la flota de instancias principales es únicamente una sola instancia, su configuración es ligeramente distinta de las flotas de instancias básicas y de tarea. Solo seleccione bajo demanda o de spot para la flota de instancias principales, ya que se compone de una única instancia. Si utiliza la consola para crear la flota de instancias, la capacidad de destino para la opción de compra que seleccione se define en 1. Si utiliza la AWS CLI, defina siempre TargetSpotCapacity
o TargetOnDemandCapacity
en 1, según proceda. Aún puede elegir hasta cinco tipos de instancias para la flota de instancias principal (o un máximo de 30 si utiliza la opción de estrategia de asignación para las instancias de spot o bajo demanda). Sin embargo, a diferencia de las flotas de instancias básicas y de tarea, donde Amazon EMR podría aprovisionar varias instancias de tipos distintos, Amazon EMR selecciona un único tipo de instancia para aprovisionar la flota de instancias principales.
Estrategia de asignación para flotas de instancias
Con las versiones 5.12.1 y posteriores de Amazon EMR, puede utilizar la opción de estrategia de asignación con instancias de spot y bajo demanda para cada nodo del clúster. Al crear un clúster mediante AWS CLI, la API de Amazon EMR o la consola de Amazon EMR con una estrategia de asignación, puede especificar hasta 30 tipos de instancias de Amazon EC2 por flota. Con la configuración predeterminada de flota de instancias del clúster de Amazon EMR, puede tener hasta 5 tipos de instancias por flota. Se recomienda que utilice la opción de estrategia de asignación para un aprovisionamiento de clústeres más rápido, una asignación de instancias de spot más precisa y menos interrupciones de dichas instancias.
Temas
Estrategia de asignación con instancias bajo demanda
Las siguientes estrategias de asignación están disponibles para sus instancias bajo demanda:
lowest-price
(predeterminado)La estrategia de asignación de precios más bajos lanza instancias bajo demanda desde el grupo de precios más bajos que tiene capacidad disponible. Si el grupo con el precio más bajo no tiene capacidad disponible, las instancias bajo demanda provienen del siguiente grupo con el precio más bajo con capacidad disponible.
prioritized
La estrategia de asignación priorizada le permite especificar un valor de prioridad para cada tipo de instancia de su flota de instancias. Amazon EMR lanza las instancias bajo demanda que tienen la máxima prioridad. Si usa esta estrategia, debe configurar la prioridad para al menos un tipo de instancia. Si no configura el valor de prioridad para un tipo de instancia, Amazon EMR asigna la prioridad más baja a ese tipo de instancia. Cada flota de instancias (principal, básica o de tarea) de un clúster puede tener un valor de prioridad diferente para un tipo de instancia determinado.
nota
Si utiliza la estrategia de asignación de Spot priorizada y optimizada en función de la capacidad, Amazon EMR aplica las mismas prioridades tanto a las instancias bajo demanda como a las instancias de Spot cuando establece las prioridades.
Estrategia de asignación con instancias de spot
En el caso de las instancias de spot, puede elegir una de las siguientes estrategias de asignación:
price-capacity-optimized
(recomendado)-
La estrategia de asignación optimizada en función de la relación precio-capacidad lanza instancias de spot desde los grupos de instancias de spot que tienen la mayor capacidad disponible y el precio más bajo para la cantidad de instancias que se están lanzando. Como resultado, la estrategia optimizada en función de la relación precio-capacidad suele tener más probabilidades de conseguir capacidad de Spot y ofrece tasas de interrupción más bajas. Esta es la estrategia predeterminada para la versión 6.10.0 y versiones posteriores de Amazon EMR.
capacity-optimized
-
La estrategia de asignación optimizada en función de la capacidad lanza las instancias de spot en los grupos más disponibles con la menor probabilidad de interrupción a corto plazo. Esta es una buena opción para las cargas de trabajo que podrían tener un costo de interrupción más alto asociado con el trabajo que se reinicia. Esta es la estrategia predeterminada para las versiones 6.9.0 y anteriores de Amazon EMR.
capacity-optimized-prioritized
-
La estrategia de asignación de priorización y optimización en función de la capacidad le permite especificar un valor de prioridad para cada tipo de instancia de su flota de instancias. Amazon EMR optimiza primero la capacidad, pero respeta las prioridades del tipo de instancia sobre la base del mejor esfuerzo, por ejemplo, si la prioridad no afecta significativamente la capacidad de la flota para aprovisionar una capacidad óptima. Recomendamos esta opción si tiene cargas de trabajo que deben tener una cantidad mínima de interrupciones y que aún requieren ciertos tipos de instancias. Si usa esta estrategia, debe configurar la prioridad para al menos un tipo de instancia. Si no configura una prioridad para ningún tipo de instancia, Amazon EMR asigna el valor de prioridad más bajo a ese tipo de instancia. Cada flota de instancias (principal, básica o de tarea) de un clúster puede tener un valor de prioridad diferente para un tipo de instancia determinado.
nota
Si utiliza la estrategia de asignación bajo demanda priorizada, Amazon EMR aplica el mismo valor de prioridad a las instancias bajo demanda y de Spot al establecer las prioridades.
diversified
-
Con la estrategia de asignación diversificada, Amazon EC2 distribuye las instancias de spot entre todos los grupos de capacidad de spot.
lowest-price
-
La estrategia de asignación de precios más bajos lanza instancias de spot desde el grupo de precios más bajos que tiene capacidad disponible. Si el grupo con el precio más bajo no tiene capacidad disponible, las instancias de spot provienen del siguiente grupo con el precio más bajo que tenga capacidad disponible. Si un grupo se queda sin capacidad antes de cubrir la capacidad deseada, la flota de Amazon EC2 extraerá capacidad del siguiente grupo con el precio más bajo para cumplir su solicitud. Para garantizar que se logre la capacidad deseada, es posible que reciba instancias de spot de varios grupos. Dado que esta estrategia solo tiene en cuenta el precio de la instancia y no la disponibilidad de capacidad, podría generar tasas de interrupción elevadas.
Permisos de estrategia de asignación
La opción de estrategia de asignación requiere varios permisos de IAM que se incluyen automáticamente en el rol de servicio predeterminado de Amazon EMR y en la política administrada de Amazon EMR (EMR_DefaultRole
y AmazonEMRServicePolicy_v2
). Si utiliza un rol de servicio o una política administrada personalizados para su clúster, debe agregar estos permisos antes de crear el clúster. Para obtener más información, consulte Permisos de estrategia de asignación.
Las reservas de capacidad bajo demanda (ODCR) opcionales están disponibles cuando se utiliza la opción de estrategia de asignación bajo demanda. Las opciones de reserva de capacidad le permiten especificar una preferencia para utilizar primero la capacidad reservada para los clústeres de Amazon EMR. Puede utilizarlas para asegurarse de que sus cargas de trabajo críticas utilicen la capacidad que ya ha reservado mediante ODCR abiertas o específicas. En el caso de las cargas de trabajo que no son críticas, las preferencias de reserva de capacidad permiten especificar si se debe consumir la capacidad reservada.
Las reservas de capacidad solo las pueden utilizar instancias que tengan atributos coincidentes (tipo de instancia, plataforma, zona de disponibilidad). De forma predeterminada, Amazon EMR utiliza automáticamente las reservas de capacidad abiertas al aprovisionar instancias bajo demanda que coinciden con los atributos de la instancia. Si no dispone de instancias en ejecución que coincidan con los atributos de reserva de capacidad, permanecen sin utilizar hasta que lanza una instancia que coincide con sus atributos. Si no desea utilizar ninguna reserva de capacidad al lanzar el clúster, debe establecer la preferencia de reserva de capacidad como ninguna en las opciones de lanzamiento.
Sin embargo, también puede dirigir una reserva de capacidad para cargas de trabajo específicas. Esto le permite controlar de manera explícita qué instancias pueden ejecutarse en esa capacidad reservada. Para más información sobre las reservas de capacidad bajo demanda, consulte Uso de las reservas de capacidad con flotas de instancias en Amazon EMR.
Permisos de IAM necesarios para una estrategia de asignación
El Rol de servicio para Amazon EMR (rol de EMR) necesita permisos adicionales para crear un clúster que utilice la opción de estrategia de asignación para flotas de instancias de spot o bajo demanda.
Se incluyen automáticamente estos permisos en el rol de servicio predeterminado de Amazon EMR EMR_DefaultRole y en la política administrada de Amazon EMR AmazonEMRServicePolicy_v2.
Si utiliza un rol de servicio personalizado o una política administrada para su clúster, debe agregar los siguientes permisos:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:DeleteLaunchTemplate", "ec2:CreateLaunchTemplate", "ec2:DescribeLaunchTemplates", "ec2:CreateLaunchTemplateVersion", "ec2:CreateFleet" ], "Resource": "*" } }
Los siguientes permisos de rol de servicio son necesarios para crear un clúster que utilice reservas de capacidad abiertas o específicas. Debe incluir estos permisos además de los permisos necesarios para utilizar la opción de estrategia de asignación.
ejemplo Documento de política para las reservas de capacidad de los roles de servicio
Para utilizar reservas de capacidad abiertas, debe incluir los siguientes permisos adicionales.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:DescribeCapacityReservations", "ec2:DescribeLaunchTemplateVersions", "ec2:DeleteLaunchTemplateVersions" ], "Resource": "*" } ] }
Para utilizar reservas de capacidad específicas, debe incluir los siguientes permisos adicionales.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:DescribeCapacityReservations", "ec2:DescribeLaunchTemplateVersions", "ec2:DeleteLaunchTemplateVersions", "resource-groups:ListGroupResources" ], "Resource": "*" } ] }
Configuración de flotas de instancias para su clúster
Ejemplos: creación de un clúster con la configuración de flotas de instancia
Los siguientes ejemplos muestran comandos create-cluster
con una variedad de opciones que puede combinar.
nota
Si no ha creado con anterioridad el rol de servicio de Amazon EMR predeterminado y el perfil de instancia de EC2, utilice aws emr create-default-roles
para crearlos antes de utilizar el comando create-cluster
.
ejemplo Ejemplo: VPC predeterminada, principal bajo demanda, básica bajo demanda con tipo de instancia único
aws emr create-cluster --release-label
emr-5.3.1
--service-role EMR_DefaultRole \ --ec2-attributes InstanceProfile=EMR_EC2_DefaultRole \ --instance-fleets \ InstanceFleetType=MASTER,TargetOnDemandCapacity=1,InstanceTypeConfigs=['{InstanceType=m5.xlarge}'] \ InstanceFleetType=CORE,TargetOnDemandCapacity=1,InstanceTypeConfigs=['{InstanceType=m5.xlarge}']
ejemplo Ejemplo: VPC predeterminada, principal de spot, spot básica con tipo de instancia único
aws emr create-cluster --release-label emr-5.3.1 --service-role EMR_DefaultRole \ --ec2-attributes InstanceProfile=EMR_EC2_DefaultRole \ --instance-fleets \ InstanceFleetType=MASTER,TargetSpotCapacity=1,\ InstanceTypeConfigs=['{InstanceType=m5.xlarge,BidPrice=0.5}'] \ InstanceFleetType=CORE,TargetSpotCapacity=1,\ InstanceTypeConfigs=['{InstanceType=m5.xlarge,BidPrice=0.5}']
ejemplo Ejemplo: subred de EC2 única, principal bajo demanda, básica combinada con tipo de instancia único
aws emr create-cluster --release-label emr-5.3.1 --service-role EMR_DefaultRole \ --ec2-attributes InstanceProfile=EMR_EC2_DefaultRole,SubnetIds=['subnet-ab12345c'] \ --instance-fleets \ InstanceFleetType=MASTER,TargetOnDemandCapacity=1,\ InstanceTypeConfigs=['{InstanceType=m5.xlarge}'] \ InstanceFleetType=CORE,TargetOnDemandCapacity=2,TargetSpotCapacity=6,\ InstanceTypeConfigs=['{InstanceType=m5.xlarge,BidPrice=0.5,WeightedCapacity=2}']
ejemplo Ejemplo: intervalo de subredes de EC2, principal bajo demanda, básicas de spot con varios tipos de instancias ponderados, tiempo de espera para spot
aws emr create-cluster --release-label emr-5.3.1 --service-role EMR_DefaultRole \ --ec2-attributes InstanceProfile=EMR_EC2_DefaultRole,SubnetIds=['subnet-ab12345c','subnet-de67890f'] \ --instance-fleets \ InstanceFleetType=MASTER,TargetOnDemandCapacity=1,\ InstanceTypeConfigs=['{InstanceType=m5.xlarge}'] \ InstanceFleetType=CORE,TargetSpotCapacity=11,\ InstanceTypeConfigs=['{InstanceType=m5.xlarge,BidPrice=0.5,WeightedCapacity=3}',\ '{InstanceType=m4.2xlarge,BidPrice=0.9,WeightedCapacity=5}'],\ LaunchSpecifications={SpotSpecification='{TimeoutDurationMinutes=120,TimeoutAction=SWITCH_TO_ON_DEMAND}'}
ejemplo Ejemplo: intervalo de subredes de EC2, principal bajo demanda, básicas y de tarea mixtas con varios tipos de instancias ponderados, tiempo de espera para instancias de spot básicas
aws emr create-cluster --release-label emr-5.3.1 --service-role EMR_DefaultRole \ --ec2-attributes InstanceProfile=EMR_EC2_DefaultRole,SubnetIds=['subnet-ab12345c','subnet-de67890f'] \ --instance-fleets \ InstanceFleetType=MASTER,TargetOnDemandCapacity=1,InstanceTypeConfigs=['{InstanceType=m5.xlarge}'] \ InstanceFleetType=CORE,TargetOnDemandCapacity=8,TargetSpotCapacity=6,\ InstanceTypeConfigs=['{InstanceType=m5.xlarge,BidPrice=0.5,WeightedCapacity=3}',\ '{InstanceType=m4.2xlarge,BidPrice=0.9,WeightedCapacity=5}'],\ LaunchSpecifications={SpotSpecification='{TimeoutDurationMinutes=120,TimeoutAction=SWITCH_TO_ON_DEMAND}'} \ InstanceFleetType=TASK,TargetOnDemandCapacity=3,TargetSpotCapacity=3,\ InstanceTypeConfigs=['{InstanceType=m5.xlarge,BidPrice=0.5,WeightedCapacity=3}']
ejemplo Ejemplo: spot principal, sin básicos ni de tareas, configuración de Amazon EBS, VPC predeterminada
aws emr create-cluster --release-label Amazon EMR 5.3.1 --service-role EMR_DefaultRole \ --ec2-attributes InstanceProfile=EMR_EC2_DefaultRole \ --instance-fleets \ InstanceFleetType=MASTER,TargetSpotCapacity=1,\ LaunchSpecifications={SpotSpecification='{TimeoutDurationMinutes=60,TimeoutAction=TERMINATE_CLUSTER}'},\ InstanceTypeConfigs=['{InstanceType=m5.xlarge,BidPrice=0.5,\ EbsConfiguration={EbsOptimized=true,EbsBlockDeviceConfigs=[{VolumeSpecification={VolumeType=gp2,\ SizeIn GB=100}},{VolumeSpecification={VolumeType=io1,SizeInGB=100,Iop s=100},VolumesPerInstance=4}]}}']
ejemplo Ejemplo: varias AMI personalizadas, varios tipos de instancias, principal bajo demanda, básico bajo demanda
aws emr create-cluster --release-label Amazon EMR 5.3.1 --service-role EMR_DefaultRole \ --ec2-attributes InstanceProfile=EMR_EC2_DefaultRole \ --instance-fleets \ InstanceFleetType=MASTER,TargetOnDemandCapacity=1,\ InstanceTypeConfigs=['{InstanceType=m5.xlarge,CustomAmiId=ami-123456},{InstanceType=m6g.xlarge, CustomAmiId=ami-234567}'] \ InstanceFleetType=CORE,TargetOnDemandCapacity=1,\ InstanceTypeConfigs=['{InstanceType=m5.xlarge,CustomAmiId=ami-123456},{InstanceType=m6g.xlarge, CustomAmiId=ami-234567}']
ejemplo Ejemplo: agregar un nodo de tarea a un clúster en ejecución con varios tipos de instancias y varias AMI personalizadas
aws emr add-instance-fleet --cluster-id j-123456 --release-label Amazon EMR 5.3.1 \ --service-role EMR_DefaultRole \ --ec2-attributes InstanceProfile=EMR_EC2_DefaultRole \ --instance-fleet \ InstanceFleetType=Task,TargetSpotCapacity=1,\ InstanceTypeConfigs=['{InstanceType=m5.xlarge,CustomAmiId=ami-123456}',\ '{InstanceType=m6g.xlarge,CustomAmiId=ami-234567}']
ejemplo Ejemplo: utilizar un archivo de configuración JSON
Puede configurar parámetros de flota de instancias en un archivo JSON y, a continuación, hacer referencia al archivo JSON como único parámetro para las flotas de instancias. Por ejemplo, el siguiente comando hace referencia a un archivo de configuración JSON,
:my-fleet-config.json
aws emr create-cluster --release-label emr-5.30.0 --service-role EMR_DefaultRole \ --ec2-attributes InstanceProfile=EMR_EC2_DefaultRole \ --instance-fleets file://
my-fleet-config.json
El archivo my-fleet-config.json
especifica flotas de instancias principales, básicas y de tarea como se muestra en el siguiente ejemplo. La flota de instancias básica utiliza un precio de spot máximo (BidPrice
) como porcentaje del precio bajo demanda, mientras que las flotas de instancias de tarea y principales utilizan un precio de spot máximo (BidPriceAsPercentageofOnDemandPrice) como cadena en USD.
[ { "Name": "Masterfleet", "InstanceFleetType": "MASTER", "TargetSpotCapacity": 1, "LaunchSpecifications": { "SpotSpecification": { "TimeoutDurationMinutes": 120, "TimeoutAction": "SWITCH_TO_ON_DEMAND" } }, "InstanceTypeConfigs": [ { "InstanceType": "m5.xlarge", "BidPrice": "0.89" } ] }, { "Name": "Corefleet", "InstanceFleetType": "CORE", "TargetSpotCapacity": 1, "TargetOnDemandCapacity": 1, "LaunchSpecifications": { "OnDemandSpecification": { "AllocationStrategy": "lowest-price", "CapacityReservationOptions": { "UsageStrategy": "use-capacity-reservations-first", "CapacityReservationResourceGroupArn": "String" } }, "SpotSpecification": { "AllocationStrategy": "capacity-optimized", "TimeoutDurationMinutes": 120, "TimeoutAction": "TERMINATE_CLUSTER" } }, "InstanceTypeConfigs": [ { "InstanceType": "m5.xlarge", "BidPriceAsPercentageOfOnDemandPrice": 100 } ] }, { "Name": "Taskfleet", "InstanceFleetType": "TASK", "TargetSpotCapacity": 1, "LaunchSpecifications": { "OnDemandSpecification": { "AllocationStrategy": "lowest-price", "CapacityReservationOptions": { "CapacityReservationPreference": "none" } }, "SpotSpecification": { "TimeoutDurationMinutes": 120, "TimeoutAction": "TERMINATE_CLUSTER" } }, "InstanceTypeConfigs": [ { "InstanceType": "m5.xlarge", "BidPrice": "0.89" } ] } ]
Modificar capacidades de destino para una flota de instancias
Utilice el comando modify-instance-fleet
para especificar nuevas capacidades de destino para una flota de instancias. Debe especificar el ID del clúster y el ID de la flota de instancias. Utilice el comando list-instance-fleets
para recuperar los ID de la flota de instancias.
aws emr modify-instance-fleet --cluster-id
<cluster-id>
\ --instance-fleet \ InstanceFleetId='<instance-fleet-id>
',TargetOnDemandCapacity=1,TargetSpotCapacity=1
Agregar una flota de instancias de tarea a un clúster
Si un clúster tiene únicamente flotas de instancias principales y básicas, puede utilizar el comando add-instance-fleet
para agregar una flota de instancias de tarea. Solo puede utilizar esto para añadir las flotas de instancias de tareas.
aws emr add-instance-fleet --cluster-id
<cluster-id>
--instance-fleet \ InstanceFleetType=TASK,TargetSpotCapacity=1,\ LaunchSpecifications={SpotSpecification='{TimeoutDurationMinutes=20,TimeoutAction=TERMINATE_CLUSTER}'},\ InstanceTypeConfigs=['{InstanceType=m5.xlarge,BidPrice=0.5}']
Obtener detalles de configuración de flotas de instancias en un clúster
Utilice el comando list-instance-fleets
para obtener detalles de configuración de las flotas de instancias en un clúster. El comando toma un ID de clúster como entrada. El siguiente ejemplo muestra el comando y su salida de un clúster que contiene un grupo de instancias de tarea principal y un grupo de instancias de tarea básico. Para ver la sintaxis de respuesta completa, consulte ListInstanceFleets en la Referencia de la API de Amazon EMR.
list-instance-fleets --cluster-id
<cluster-id>
{ "InstanceFleets": [ { "Status": { "Timeline": { "ReadyDateTime": 1488759094.637, "CreationDateTime": 1488758719.817 }, "State": "RUNNING", "StateChangeReason": { "Message": "" } }, "ProvisionedSpotCapacity": 6, "Name": "CORE", "InstanceFleetType": "CORE", "LaunchSpecifications": { "SpotSpecification": { "TimeoutDurationMinutes": 60, "TimeoutAction": "TERMINATE_CLUSTER" } }, "ProvisionedOnDemandCapacity": 2, "InstanceTypeSpecifications": [ { "BidPrice": "0.5", "InstanceType": "m5.xlarge", "WeightedCapacity": 2 } ], "Id": "if-1ABC2DEFGHIJ3" }, { "Status": { "Timeline": { "ReadyDateTime": 1488759058.598, "CreationDateTime": 1488758719.811 }, "State": "RUNNING", "StateChangeReason": { "Message": "" } }, "ProvisionedSpotCapacity": 0, "Name": "MASTER", "InstanceFleetType": "MASTER", "ProvisionedOnDemandCapacity": 1, "InstanceTypeSpecifications": [ { "BidPriceAsPercentageOfOnDemandPrice": 100.0, "InstanceType": "m5.xlarge", "WeightedCapacity": 1 } ], "Id": "if-2ABC4DEFGHIJ4" } ] }