Prácticas recomendadas para la configuración del clúster - 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.

Prácticas recomendadas para la configuración del clúster

Utilice la orientación de esta sección como ayuda para determinar los tipos de instancias, las opciones de compra y la cantidad de almacenamiento para aprovisionar cada tipo de nodo en un clúster de EMR.

¿Qué tipo de instancia debería utilizar?

Hay varias formas de agregar instancias de Amazon EC2 a su clúster. El método que debe elegir depende de si utiliza la configuración de grupos de instancias o la configuración de flotas de instancias para el clúster.

  • Grupos de instancias

    • Añada manualmente instancias del mismo tipo a los grupos de instancias de tareas y secundarias existentes.

    • Añada manualmente un grupo de instancias de tareas, que pueden utilizar un tipo de instancia diferente.

    • Configura el escalado automático en Amazon EMR para un grupo de instancias, añadiendo y eliminando instancias automáticamente en función del valor de una CloudWatch métrica de Amazon que especifiques. Para obtener más información, consulte Usar el escalado de clústeres.

  • Flotas de instancias

    • Añadir una única flota de instancias de tarea.

    • Cambiar la capacidad de destino de las instancias bajo demanda y de spot para las flotas de instancias secundarias y de tareas. Para obtener más información, consulte Configurar flotas de instancias.

Una forma de planificar las instancias del clúster consiste en ejecutar un clúster de prueba con un conjunto representativo de datos de ejemplo y monitorizar la utilización de los nodos del clúster. Para obtener más información, consulte Ver y monitorizar un clúster. Otra forma consiste en calcular la capacidad de las instancias que se estén planeando y comparar dicho valor con el tamaño de los datos.

En general, el tipo de nodo principal, que asigna tareas, no requiere una instancia de EC2 con una gran potencia de procesamiento; las instancias de Amazon EC2 para el tipo de nodo básico, que procesan tareas y almacenan datos en HDFS, necesitan tanto potencia de procesamiento como capacidad de almacenamiento; las instancias de Amazon EC2 para el tipo de nodo de tarea, que no almacenan datos, solo necesitan potencia de procesamiento. Para conocer directrices sobre las instancias de Amazon EC2 disponibles y su configuración, consulte Configuración de instancias de Amazon EC2.

Las siguientes directrices se aplican a la mayoría de los clústeres de Amazon EMR.

  • Hay un límite de vCPU para el número total de instancias de Amazon EC2 bajo demanda que ejecute en AWS una cuenta. Región de AWS Para más información sobre el límite de vCPU y cómo solicitar un aumento del límite para su cuenta, consulte Instancias bajo demanda en la Guía del usuario de Amazon EC2 para instancias de Linux.

  • Generalmente, el nodo principal no tiene grandes requisitos informáticos. Para los clústeres con una gran cantidad de nodos o para los clústeres con aplicaciones que se implementan específicamente en el nodo principal (HueJupyterHub, etc.), es posible que se requiera un nodo principal más grande que ayude a mejorar el rendimiento del clúster. Por ejemplo, considere la posibilidad de utilizar una instancia m5.xlarge para clústeres pequeños (50 nodos o menos) y aumentarla a un tipo de instancia más grande para clústeres más grandes.

  • Las necesidades informáticas de los nodos secundarios y de tareas dependen del tipo de procesamiento que realiza la aplicación. Muchos trabajos se pueden ejecutar en tipos de instancia de uso general, que ofrecen un rendimiento equilibrado en términos de CPU, espacio en disco y entrada/salida. Los clústeres con cálculo intensivo podrían beneficiarse de ejecutarse en instancias de uso elevado de CPU, que tienen en proporción más CPU que RAM. Las aplicaciones de base de datos y almacenamiento en memoria caché podrían beneficiarse al ejecutarse en instancias de memoria elevada. Las aplicaciones con uso intensivo de red y uso intensivo de CPU como análisis, NLP y machine learning pueden beneficiarse de las instancias de computación en clúster, que ofrecen proporcionalmente recursos de CPU elevada y mayor rendimiento de red.

  • Si distintas fases del clúster tienen diferentes necesidades de capacidad, puede empezar con un pequeño número de nodos secundarios y aumentar o reducir el número de nodos de tareas para satisfacer los requisitos de capacidad variable del flujo de trabajo.

  • La cantidad de datos que puede procesar depende de la capacidad de los nodos secundarios y del tamaño de los datos como entrada, durante el procesamiento y como salida. Los conjuntos de datos entrantes, intermedios y salientes residen en el clúster durante el procesamiento.

¿Cuándo se deben utilizar las instancias de spot?

Al lanzar un clúster en Amazon EMR, puede elegir lanzar instancias principales, básicas y de tarea en instancias de spot. Dado que cada tipo de grupo de instancias desempeña un papel diferente en el clúster, hay distintas consecuencias al lanzar cada tipo de nodo en instancias de spot. No se puede cambiar una opción de compra de instancias mientras se ejecuta un clúster. Para cambiar de instancias bajo demanda a instancias de spot o viceversa para el nodo principal y los nodos básicos, debe terminar el clúster y lanzar uno nuevo. Para los nodos de tareas, puede lanzar un nuevo grupo de instancias de tareas o una nueva flota de instancias y eliminar la anterior.

Configuración de Amazon EMR para evitar errores en los trabajos debido a la terminación de instancias de spot de los nodos de tarea

Dado que las instancias de spot se utilizan a menudo para ejecutar nodos de tarea, Amazon EMR tiene una funcionalidad predeterminada para programar trabajos de YARN, de modo que los trabajos en ejecución no presenten errores cuando los nodos de tarea que se ejecutan en las instancias de spot se terminen. Para ello, Amazon EMR permite que los procesos maestros de la aplicación se ejecuten únicamente en los nodos principales. El proceso maestro de la aplicación controla los trabajos en ejecución y debe mantenerse activo durante toda la vida del trabajo.

La versión 5.19.0 y posteriores de Amazon EMR utilizan la característica integrada de etiquetas de nodo YARN para lograrlo. (Las versiones anteriores utilizaban una revisión de código). Las propiedades en las clasificaciones de configuración yarn-site y capacity-scheduler se ajustan de forma predeterminada para que capacity-scheduler y fair-scheduler de YARN utilicen las etiquetas de nodo. Amazon EMR etiqueta automáticamente los nodos principales con la etiqueta CORE y establece las propiedades para que los maestros de la aplicación se programen únicamente en los nodos con la etiqueta CORE. La modificación manual de las propiedades relacionadas en las clasificaciones de configuración yarn-site y capacity-scheduler o directamente en los archivos XML asociados podría interrumpir esta característica o modificar esta funcionalidad.

Amazon EMR configura las siguientes propiedades y valores de forma predeterminada. Actúe con precaución al configurar estas propiedades.

nota

A partir de la serie de versiones 6.x de Amazon EMR, la característica de etiquetas de nodo YARN está desactivada de forma predeterminada. De forma predeterminada, los procesos principales de la aplicación se pueden ejecutar tanto en nodos básicos como en nodos de tarea. Puede habilitar la función de etiquetas de nodo YARN configurando las siguientes propiedades:

  • yarn.node-labels.enabled: true

  • yarn.node-labels.am.default-node-label-expression: 'CORE'

  • yarn-site (yarn-site.xml) en todos los nodos

    • yarn.node-labels.enabled: true

    • yarn.node-labels.am.default-node-label-expression: 'CORE'

    • yarn.node-labels.fs-store.root-dir: '/apps/yarn/nodelabels'

    • yarn.node-labels.configuration-type: 'distributed'

  • yarn-site (yarn-site.xml) en los nodos principal y básicos

    • yarn.nodemanager.node-labels.provider: 'config'

    • yarn.nodemanager.node-labels.provider.configured-node-partition: 'CORE'

  • capacity-scheduler (capacity-scheduler.xml) en todos los nodos

    • yarn.scheduler.capacity.root.accessible-node-labels: '*'

    • yarn.scheduler.capacity.root.accessible-node-labels.CORE.capacity: 100

    • yarn.scheduler.capacity.root.default.accessible-node-labels: '*'

    • yarn.scheduler.capacity.root.default.accessible-node-labels.CORE.capacity: 100

Nodo principal en una instancia de spot

El nodo principal controla y dirige el clúster. Cuando se termina, el clúster finaliza, por lo que solo debe lanzar el nodo principal como una instancia de spot si está ejecutando un clúster que se acepta que termine de forma repentina. Podría ser el caso si está probando una aplicación nueva, tiene un clúster que guarda periódicamente datos en un almacén externo como Amazon S3 o está ejecutando un clúster donde el costo es más importante que garantizar que este se complete.

Cuando se lanza el grupo de instancias principales como instancia de spot, el clúster no se inicia hasta que se completa la solicitud de instancia de spot. Esto es algo que debe considerar a la hora de seleccionar el precio de spot máximo.

Solo puede agregar un nodo principal de instancias de spot al lanzar el clúster. No se puede agregar ni eliminar nodos principales de un clúster en ejecución.

Normalmente, solo se ejecutaría el nodo principal como instancia de spot si se ejecuta todo el clúster (todos los grupos de instancia) como instancias de spot.

Nodos básicos en instancias de spot

Los nodos secundarios procesan los datos y almacenan información mediante HDFS. La terminación de una instancia secundaria conlleva el riesgo de pérdida de datos. Por este motivo, solo debe ejecutar los nodos secundarios en instancias de spot cuando sea admisible la pérdida parcial de datos de HDFS.

Cuando se lanza el grupo de instancias básicas como instancias de spot, Amazon EMR espera hasta que se puedan aprovisionar todas las instancias básicas solicitadas antes de lanzar el grupo de instancias. En otras palabras, si solicitas seis instancias de Amazon EC2 y solo hay cinco disponibles al precio de spot máximo o a un precio inferior, el grupo de instancias no se lanzará. Amazon EMR sigue esperando hasta que las seis instancias de Amazon EC2 estén disponibles o hasta que termine el clúster. Puede cambiar el número de instancias de spot de un grupo de instancias secundario para añadir capacidad a un clúster en ejecución. Para obtener más información sobre cómo trabajar con los grupos de instancias y cómo funcionan las instancias de spot con las flotas de instancias, consulte Crear un clúster con flotas de instancias o grupos de instancias uniformes.

Nodos de tarea en instancias de spot

Los nodos de tareas procesan datos pero no guardan datos persistentes en HDFS. Si se terminan porque el precio de spot ha superado su precio de spot máximo, no se pierden los datos y el efecto sobre el clúster es mínimo.

Al lanzar uno o varios grupos de instancias de tarea como instancias de spot, Amazon EMR aprovisiona tantos nodos de tarea como puede con su precio de spot máximo. Esto significa que, si solicita un grupo de instancias de tarea con seis nodos y solo hay cinco instancias de spot disponibles a su precio de spot máximo o por debajo de este, Amazon EMR lanza el grupo de instancias con cinco nodos y agrega el sexto más tarde, si es posible.

El lanzamiento de grupos de instancias de tareas como instancias de spot es una forma estratégica de ampliar la capacidad del clúster minimizando los costos. Si lanza los grupos de instancias principales y básicas como instancias bajo demanda, su capacidad está garantizada para la ejecución del clúster. Puede añadir instancias de tarea a los grupos de instancias de tarea según sea necesario para gestionar los picos de tráfico o acelerar el procesamiento de datos.

Puede añadir o eliminar nodos de tareas mediante la consola o la API. AWS CLI También puede añadir grupos de tareas adicionales, pero no puede quitar un grupo de tareas después de haberlo creado.

Configuraciones de instancias para escenarios de aplicaciones

La siguiente tabla es una referencia rápida para las opciones de compra de tipos de nodos y las configuraciones que suelen ser adecuadas para los distintos escenarios de aplicaciones. Haga clic en el enlace correspondiente para ver más información sobre cada escenario.

Escenario de aplicaciones Opción de compra del nodo principal Opción de compra de los nodos básicos Opción de compra de nodos de tarea
Clústeres en ejecución prolongada y almacenamientos de datos Bajo demanda Bajo demanda o combinación de flotas de instancias Spot o combinación de flotas de instancias
Cargas de trabajo dirigidas por costos Spot Spot Spot
Cargas de trabajo críticas para datos Bajo demanda Bajo demanda Spot o combinación de flotas de instancias
Prueba de aplicación Spot Spot Spot

Existen varios escenarios en las que las instancias de spot son útiles para ejecutar un clúster de Amazon EMR.

Clústeres en ejecución prolongada y almacenamientos de datos

Si ejecuta un clúster de Amazon EMR persistente que tiene una variación predecible de capacidad informática, como un almacenamiento de datos, puede gestionar los picos de demanda a menor costo con las instancias de spot. Puede lanzar los grupos de instancias principales y básicas como instancias bajo demanda para gestionar la capacidad normal y lanzar los grupos de instancias de tarea como instancias de spot para gestionar los requisitos de picos de carga.

Cargas de trabajo dirigidas por costos

Si está ejecutando clústeres transitorios para los que un costo inferior es más importante que el tiempo de finalización y es aceptable la pérdida parcial de trabajo, puede ejecutar todo el clúster (grupos de instancias principales, básicas y de tarea) como instancias de spot para beneficiarse de los mayores ahorros de costos.

Cargas de trabajo críticas para datos

Si está ejecutando un clúster para el que un costo inferior es más importante que el tiempo de finalización, pero no es aceptable la pérdida parcial de trabajo, lance los grupos de instancias principales y básicas como instancias bajo demanda y compleméntelas con uno o varios grupos de instancias de tarea de instancias de spot. La ejecución de los grupos de instancias principales y básicas como instancias bajo demanda garantiza que los datos se almacenen en HDFS y que el clúster se proteja de la terminación debido a fluctuaciones en el mercado de spot, además de proporcionar un ahorro de costos que supone la ejecución de los grupos de instancias de tarea como instancias de spot.

Prueba de aplicación

Cuando se prueba una nueva aplicación para prepararla para su lanzamiento en un entorno de producción, se puede ejecutar todo el clúster (grupos de instancias principales, básicas y de tarea) como instancias de spot para reducir los costos de las pruebas.

Cálculo de la capacidad de HDFS requerida de un clúster

La cantidad de almacenamiento HDFS disponible para su clúster depende de los siguientes factores:

  • El número de instancias de Amazon EC2 utilizadas para los nodos básicos.

  • La capacidad del almacén de instancias de Amazon EC2 para el tipo de instancia que se utilice. Para obtener más información sobre los volúmenes del almacén de instancias, consulte el almacén de instancias de Amazon EC2 en la Guía del usuario de Amazon EC2.

  • El número y el tamaño de los volúmenes de Amazon EBS asociados a los nodos básicos.

  • Un factor de replicación, que tiene en cuenta la cantidad de bloques de datos que se almacenan en HDFS para redundancia similar a RAID. De forma predeterminada, el factor de replicación es tres para un clúster de 10 o más nodos secundarios, dos para un clúster de 4-9 nodos secundarios y uno para un clúster de 3 nodos o menos.

Para calcular la capacidad de HDFS de un clúster, por cada nodo principal, agregue la capacidad del volumen del almacén de instancias a la capacidad de almacenamiento de Amazon EBS (si se utiliza). Multiplique el resultado por el número de nodos secundarios y, a continuación, divida el total por el factor de replicación que depende del número de nodos secundarios. Por ejemplo, un clúster con 10 nodos básicos de tipo i2.xlarge, que tiene 800 GB de almacenamiento de instancias y no tiene ningún volumen de Amazon EBS asociado, tiene un total de aproximadamente 2666 GB disponibles para HDFS (10 nodos x 800 GB ÷ 3 de factor de replicación).

Si el valor de capacidad de HDFS calculado es inferior a sus datos, puede aumentar la cantidad de almacenamiento de HDFS de las siguientes formas:

  • Creación de un clúster con volúmenes de Amazon EBS adicionales o adición de grupos de instancias con volúmenes de Amazon EBS asociados a un clúster existente

  • Agregar más nodos secundarios

  • Selección de un tipo de instancia de Amazon EC2 con una mayor capacidad de almacenamiento

  • Uso de la compresión de datos

  • Cambio de la configuración de Hadoop para reducir el factor de replicación

La reducción del factor de replicación se debería utilizar con precaución, ya que reduce la redundancia de los datos de HDFS y la capacidad del clúster de recuperarse frente a bloques de HDFS perdidos o dañados.