Flexibilidad de zona de disponibilidad para un clúster de Amazon EMR - Amazon EMR

Flexibilidad de zona de disponibilidad para un clúster de Amazon EMR

Cada Región de AWS tiene varias ubicaciones aisladas conocidas como zonas de disponibilidad. Cuando lanza una instancia, tiene la opción de especificar una zona de disponibilidad (AZ) en la Región de AWS que está utilizando. La flexibilidad de las zonas de disponibilidad consiste en la distribución de las instancias en varias zonas de disponibilidad. Si una instancia produce un error, puede diseñar la aplicación para que una instancia en otra zona de disponibilidad pueda manejar las solicitudes. Para más información acerca de las zonas de disponibilidad, consulte la documentación sobre Regiones y zonas de disponibilidad en la Guía del usuario de Amazon EC2.

La flexibilidad de las instancias consiste en el uso de varios tipos de instancias para satisfacer los requisitos de capacidad. Al expresar la flexibilidad con las instancias, puede utilizar la capacidad agregada en todos los tamaños, familias y generaciones de instancias. Una mayor flexibilidad mejora las posibilidades de encontrar y asignar la cantidad necesaria de capacidad de computación en comparación con un clúster que utiliza un solo tipo de instancia.

La flexibilidad de las instancias y de las zonas de disponibilidad reduce los errores de capacidad insuficiente (ICE) y las interrupciones de spot en comparación con un clúster con un solo tipo de instancia o zona de disponibilidad. Utilice las prácticas recomendadas que se describen aquí para determinar qué instancias debe diversificar una vez que conozca la familia y el tamaño iniciales de las instancias. Este enfoque maximiza la disponibilidad de los grupos de capacidad de Amazon EC2 con una variación mínima de rendimiento y costo.

Ser flexible en cuanto a las zonas de disponibilidad

Se recomienda que configure todas las zonas de disponibilidad para utilizarlas en su nube privada virtual (VPC) y que las seleccione para su clúster de EMR. Los clústeres deben existir en una sola zona de disponibilidad, pero con las flotas de instancias de Amazon EMR, 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. Al aprovisionar un clúster de EMR para varias subredes, el clúster puede acceder a un conjunto de capacidades de Amazon EC2 más amplio en comparación con los clústeres de una sola subred.

Si debe priorizar un número determinado de zonas de disponibilidad para utilizarlas en su nube privada virtual (VPC) para su clúster de EMR, puede utilizar la capacidad de puntuación de ubicación de spot con Amazon EC2. Con la puntuación de ubicación de spot, especifica los requisitos de computación para sus instancias de spot y, a continuación, EC2 devuelve las diez Regiones de AWS o zonas de disponibilidad mejor puntuadas en una escala del 1 al 10. Una puntuación de 10 indica que es muy probable que su solicitud de spot se complete correctamente y una puntuación de 1 indica que es poco probable que esto suceda. Para más información sobre cómo utilizar la puntuación de ubicación de Spot, consulte Puntuación de ubicación de Spot en la Guía del usuario de Amazon EC2.

Ser flexible en cuanto a los tipos de instancias

La flexibilidad de las instancias consiste en el uso de varios tipos de instancias para satisfacer los requisitos de capacidad. La flexibilidad de las instancias beneficia al uso de las instancias de spot y bajo demanda de Amazon EC2. Con las instancias de spot, la flexibilidad de las instancias permite a Amazon EC2 lanzar instancias desde grupos de capacidad más amplios utilizando datos de capacidad en tiempo real. También predice qué instancias están más disponibles. Esto ofrece menos interrupciones y puede reducir el costo total de una carga de trabajo. Con las instancias bajo demanda, la flexibilidad de las instancias reduce los errores de capacidad insuficiente (ICE) cuando la capacidad total se aprovisiona en un mayor número de grupos de instancias.

En el caso de los clústeres de grupos de instancias, puede especificar hasta 50 tipos de instancias de EC2. En el caso de las flotas de instancias con estrategia de asignación, puede especificar hasta 30 tipos de instancias de EC2 para cada grupo de nodos principales, básicos y de tarea. Una gama más amplia de instancias mejora las ventajas de la flexibilidad de las instancias.

Expresar la flexibilidad de las instancias

Tenga en cuenta las siguientes prácticas recomendadas para expresar la flexibilidad de las instancias de su aplicación.

Determinar la familia y el tamaño de las instancias

Amazon EMR admite varios tipos de instancias para distintos casos de uso. Estos tipos de instancias se enumeran en la documentación Tipos de instancias admitidas con Amazon EMR. Cada tipo de instancia pertenece a una familia de instancias que describe para qué aplicación se ha optimizado el tipo.

Para las cargas de trabajo nuevas, debe compararlas con los tipos de instancias de la familia de uso general, como m5 o c5. Luego, supervise las métricas del sistema operativo y de YARN de Ganglia y Amazon CloudWatch para determinar los cuellos de botella del sistema en momentos de máxima carga. Los cuellos de botella incluyen la CPU, la memoria, el almacenamiento y las operaciones de E/S. Después de identificar los cuellos de botella, elija la familia de instancias optimizadas para la computación, optimizadas para memoria, optimizadas para el almacenamiento u otra familia de instancias adecuada para sus tipos de instancias. Para más información, consulte la página Determine right infrastructure for your Spark workloads en la guía de prácticas recomendadas de Amazon EMR en GitHub.

A continuación, identifique el contenedor de YARN o el ejecutor de Spark más pequeño que requiere su aplicación. Es el tamaño de instancia más pequeño que cabe en el contenedor y el tamaño mínimo de instancia para el clúster. Utilice esta métrica para determinar las instancias con las que puede diversificar aún más. Una instancia más pequeña permitirá una mayor flexibilidad de instancias.

Para obtener la máxima flexibilidad de instancias, debe utilizar tantas instancias como sea posible. Se recomienda que diversifique con instancias que tengan especificaciones de hardware similares. Esto maximiza el acceso de los grupos de capacidad de EC2 con una variación mínima de rendimiento y costo. Diversifique en todos los tamaños. Para ello, priorice primero a AWS Graviton y a las generaciones anteriores. Como regla general, intente ser flexible con al menos 15 tipos de instancias para cada carga de trabajo. Se recomienda que comience con instancias de uso general, optimizadas para la computación u optimizadas para memoria. Estos tipos de instancias ofrecerán la mayor flexibilidad.

Incluir instancias adicionales

Para obtener la máxima diversidad, incluya tipos de instancias adicionales. Priorice primero la flexibilidad de tamaño de la instancia, Graviton y generación. Esto permite acceder a grupos de capacidad de EC2 adicionales con perfiles de costo y rendimiento similares. Si necesita más flexibilidad debido a los ICE o a interrupciones de spot, considere la flexibilidad de variantes y familias. Cada enfoque tiene sus ventajas y desventajas que dependen de su caso de uso y sus requisitos.

  • Flexibilidad de tamaño: en primer lugar, diversifique con instancias de diferentes tamaños dentro de la misma familia. Las instancias de la misma familia ofrecen el mismo costo y rendimiento, pero pueden lanzar una cantidad diferente de contenedores en cada host. Por ejemplo, si el tamaño mínimo de ejecutor que necesita es de 2 vCPU y 8 GB de memoria, el tamaño mínimo de instancia es m5.xlarge. Para mayor flexibilidad de tamaño, incluya m5.xlarge, m5.2xlarge, m5.4xlarge, m5.8xlarge, m5.12xlarge, m5.16xlarge y m5.24xlarge.

  • Flexibilidad de Graviton: además del tamaño, puede diversificar con las instancias de Graviton. Las instancias de Graviton funcionan con procesadores de AWS Graviton2 que ofrecen la mejor relación precio-rendimiento para las cargas de trabajo en la nube de Amazon EC2. Por ejemplo, con un tamaño de instancia mínimo de m5.xlarge, puede incluir m6g.xlarge, m6g.2xlarge, m6g.4xlarge, m6g.8xlarge y m6g.16xlarge para obtener flexibilidad de Graviton.

  • Flexibilidad de generación: al igual que la flexibilidad de Graviton y de tamaño, las instancias de las familias de generaciones anteriores comparten las mismas especificaciones de hardware. Esto se traduce en un perfil de costo y rendimiento similar, con un aumento en el total del grupo de Amazon EC2 accesible. Para mayor flexibilidad de generación, incluya m4.xlarge, m4.2xlarge, m4.10xlarge y m4.16xlarge.

  • Flexibilidad de familias y variantes

    • Capacidad: para optimizar la capacidad, se recomienda la flexibilidad de las instancias en todas las familias de instancias. Las instancias comunes de diferentes familias de instancias tienen grupos de instancias más amplios que pueden ayudar a cumplir los requisitos de capacidad. Sin embargo, las instancias de distintas familias tendrán diferentes proporciones de vCPU y memoria. Esto se traduce en una infrautilización si el tamaño del contenedor de aplicaciones esperado es adecuado para una instancia diferente. Por ejemplo, con m5.xlarge, incluya instancias optimizadas para la computación, como c5, o instancias optimizadas para memoria, como r5, para obtener flexibilidad de familias de instancias.

    • Costo: para optimizar el costo, se recomienda la flexibilidad de las instancias en todas las variantes. Estas instancias tienen la misma proporción de memoria y vCPU que la instancia inicial. La diferencia con la flexibilidad de variantes es que estas instancias tienen grupos de capacidad más pequeños, lo que puede dar como resultado una capacidad adicional limitada o un mayor número de interrupciones de spot. Con m5.xlarge como ejemplo, incluya instancias basadas en AMD (m5a), instancias basadas en SSD (m5d) o instancias optimizadas para la red (m5n) para obtener flexibilidad de variantes de instancias.