Administración de la conmutación por error de multi-AZ para clústeres de EMR mediante el Controlador de recuperación de aplicaciones - Recomendaciones de AWS

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.

Administración de la conmutación por error de multi-AZ para clústeres de EMR mediante el Controlador de recuperación de aplicaciones

Aarti Rajput, Ashish Bhatt, Neeti Mishra y Nidhi Sharma, Amazon Web Services

Resumen

Este patrón ofrece una estrategia de recuperación ante desastres eficiente para las cargas de trabajo de Amazon EMR a fin de garantizar la alta disponibilidad y la coherencia de datos en varias zonas de disponibilidad dentro de una sola Región de AWS. El diseño utiliza el Controlador de recuperación de aplicaciones de Amazon y un equilibrador de carga de aplicación para administrar las operaciones de conmutación por error y la distribución del tráfico para un clúster EMR basado en Apache Spark.

En condiciones estándar, la zona de disponibilidad principal aloja un clúster y una aplicación de EMR activos con funcionalidad completa read/write . Si se produce un error inesperado en una zona de disponibilidad, el tráfico se redirige automáticamente a la zona de disponibilidad secundaria, donde se inicializa un nuevo clúster de EMR. Ambas zonas de disponibilidad acceden a un bucket de Amazon Simple Storage Service (Amazon S3) compartido a través de puntos de conexión de puerta de enlace dedicados, lo que garantiza una administración de datos coherente. Este enfoque minimiza el tiempo de inactividad y permite una recuperación rápida de las cargas de trabajo críticas de macrodatos durante los errores de la zona de disponibilidad. La solución resulta útil en sectores como el financiero o el minorista, donde los análisis en tiempo real son fundamentales.

Requisitos previos y limitaciones

Requisitos previos 

  • Una Cuenta de AWS activa

  • Amazon EMR en Amazon Elastic Compute Cloud (Amazon) EC2

  • Acceda desde el nodo maestro del clúster de EMR a Amazon S3.

  • AWS Infraestructura Multi-AZ

Limitaciones

  • Algunas Servicios de AWS no están disponibles en todas Regiones de AWS. Para conocer la disponibilidad de las regiones, consulte Servicios de AWS by Region. Para ver los puntos de conexión específicos, consulte la página Service endpoints and quotas y elija el enlace del servicio.

Versiones de producto

Arquitectura

Pila de tecnología de destino

  • Clúster de Amazon EMR

  • Controlador de recuperación de aplicaciones de Amazon

  • Equilibrador de carga de aplicación

  • Bucket de Amazon S3

  • Puntos de conexión de puerta de enlace para Amazon S3

Arquitectura de destino

Arquitectura para un mecanismo de recuperación automatizado con el Controlador de recuperación de aplicaciones.

Esta arquitectura proporciona resiliencia a las aplicaciones mediante el uso de varias zonas de disponibilidad y la implementación de un mecanismo de recuperación automatizado a través del Controlador de recuperación de aplicaciones.

  1. El equilibrador de carga de aplicación dirige el tráfico al entorno de Amazon EMR activo, que suele ser el clúster de EMR principal de la zona de disponibilidad principal.

  2. El clúster de EMR activo procesa las solicitudes de las aplicaciones y se conecta a Amazon S3 a través de su punto de conexión de puerta de enlace de Amazon S3 dedicado para las operaciones de lectura y escritura.

  3. Amazon S3 sirve como repositorio de datos central y se puede utilizar como punto de control o como almacenamiento compartido entre clústeres de EMR. Los clústeres de EMR mantienen la coherencia de datos cuando escriben directamente en Amazon S3 mediante el protocolo s3:// y el sistema de archivos de EMR (EMRFS).

  4. El Controlador de recuperación de aplicaciones supervisa continuamente el estado de la zona de disponibilidad principal y, cuando es necesario, administra automáticamente las operaciones de conmutación por error.

  5. Si el Controlador de recuperación de aplicaciones detecta un error en el clúster de EMR principal, realiza las siguientes acciones:

    • Inicia el proceso de conmutación por error al clúster de EMR secundario en la zona de disponibilidad 2.

    • Actualiza las configuraciones de enrutamiento para dirigir el tráfico hacia el clúster secundario.

Tools (Herramientas)

Servicios de AWS

  • Amazon Application Recovery Controller le ayuda a gestionar y coordinar la recuperación de sus aplicaciones en todas Regiones de AWS las zonas de disponibilidad. Este servicio simplifica el proceso y mejora la fiabilidad de la recuperación de las aplicaciones al reducir los pasos manuales que necesitan las herramientas y los procesos tradicionales.

  • Un equilibrador de carga de aplicación trabaja en la capa de aplicación, es decir, la séptima capa del modelo de interconexión de sistemas abiertos (OSI). Distribuye el tráfico de aplicaciones entrante entre varios destinos, como EC2 instancias, en varias zonas de disponibilidad. Esto aumenta la disponibilidad de la aplicación.

  • AWS Command Line Interface (AWS CLI) es una herramienta de código abierto que le ayuda a interactuar Servicios de AWS mediante los comandos de su consola de línea de comandos.

  • Amazon EMR es una plataforma de macrodatos que proporciona procesamiento de datos, análisis interactivos y machine learning para marcos de código abierto como Apache Spark, Apache Hive y Presto.

  • AWS Identity and Access Management (IAM) le ayuda a administrar de forma segura el acceso a sus AWS recursos al controlar quién está autenticado y autorizado a usarlos.

  • Amazon S3 ofrece una interfaz de servicios web simple que puede utilizar para almacenar y recuperar cualquier cantidad de datos, en cualquier momento y desde cualquier ubicación. Con este servicio, puede crear fácilmente aplicaciones que utilicen el almacenamiento nativo en la nube.

  • Los puntos de enlace de Amazon S3 son puertas de enlace que se especifican en la tabla de enrutamiento para acceder a Amazon S3 desde la nube privada virtual (VPC) a través de la red. AWS

Prácticas recomendadas

Epics

TareaDescripciónHabilidades requeridas

Inicie sesión en Consola de administración de AWS.

Inicie sesión en la Consola de administración de AWS como usuario de IAM. Para obtener instrucciones, consulte la documentación de AWS.

AWS DevOps

Configure el AWS CLI.

Instálelo AWS CLI o actualícelo a la última versión para que pueda interactuar con Servicios de AWS él Consola de administración de AWS. Para obtener instrucciones, consulte la documentación de AWS CLI.

AWS DevOps
TareaDescripciónHabilidades requeridas

Cree un bucket de S3.

  1. Cree un bucket de S3 para almacenar el conjunto de datos de entrada, los registros, la aplicación y los datos de salida. Para obtener instrucciones, consulte la documentación de Amazon S3.

  2. Organice el bucket en carpetas separadas para los datos de entrada (dataset), los registros (logs), la aplicación de Spark (spark-app) y los datos de salida (output).

AWS DevOps

Cree un clúster de EMR.

  1. Use los siguientes AWS CLI comandos para crear un clúster de EMR (por ejemplo, versión 6.12 o posterior) con instancias que abarquen dos zonas de disponibilidad (como us-east-1a yus-east-1b) para una alta disponibilidad. El comando especifica el tipo de instancia m4.large como ejemplo.

    aws emr create-cluster \ --ec2-attributes AvailabilityZone=<AZ-name-1> \ --release-label emr-6.12.0 \ --instance-groups InstanceGroupType=MASTER,InstanceCount=1,InstanceType=m4.large InstanceGroupType=CORE,InstanceCount=2,InstanceType=m4.large
    aws emr create-cluster \ --ec2-attributes AvailabilityZone=<AZ-name-2> \ --release-label emr-6.12.0 \ --instance-groups InstanceGroupType=MASTER,InstanceCount=1,InstanceType=m4.large InstanceGroupType=CORE,InstanceCount=2,InstanceType=m4.large

    Para obtener más información, consulte el comando create-cluster y la documentación de Amazon EMR.

  2. Proporcione el par de claves, el rol de servicio y el perfil de instancia con los permisos necesarios, según sea necesario.

AWS DevOps

Configure los ajustes de seguridad para el clúster de EMR.

  1. Identifique el grupo de seguridad asociado al nodo principal del clúster de EMR mediante el comando AWS CLI describe-cluster:

    aws emr describe-cluster --cluster-id j-XXXXXXXX
  2. Para mejorar la seguridad, modifique la configuración del grupo de seguridad para permitir el acceso SSH (puerto TCP 22) al nodo maestro, pero restringiéndolo a la dirección IP específica.

    Para obtener más información, consulte la documentación de Amazon EMR.

AWS DevOps

Conéctese al clúster de EMR.

Conéctese al nodo maestro del clúster de EMR a través de SSH mediante el par de claves proporcionado.

Asegúrese de que el archivo del par de claves se encuentre en el mismo directorio que la aplicación.

Ejecute los siguientes comandos para configurar los permisos correctos para el par de claves y establecer la conexión SSH:

chmod 400 <key-pair-name> ssh -i ./<key-pair-name> hadoop@<master-node-public-dns>
AWS DevOps

Implemente la aplicación de Spark.

Tras establecer la conexión SSH, estará en la consola de Hadoop.

  1. Cree o edite el archivo de la aplicación de Spark (main.py) con un editor de texto como vim:

    vim main.py

    Para obtener más información sobre cómo crear y modificar la aplicación de Spark, consulte la documentación de Amazon EMR.

  2. Envíe la aplicación de Spark al clúster de EMR y especifique las ubicaciones de los datos de entrada y salida en el bucket de S3:

    spark-submit main.py —data_source <input-data-folder-in-s3> —output_uri <output-folder-in-s3>

    Este es un ejemplo basado en las carpetas que configuró anteriormente:

    spark-submit main.py —data_source dataset —output_uri output
  3. Compruebe los registros de la aplicación para supervisar el progreso de la aplicación:

    yarn logs -applicationId <application-id>
AWS DevOps

Supervise la aplicación de Spark.

  1. Abra otra ventana de terminal y establezca un túnel SSH hacia la interfaz de usuario web del administrador de recursos del clúster de EMR:

    ssh -i <key-pair-name> -N -L 8157:<resource-manager-public-dns>:8088 hadoop@<resource-manager-public-dns>
  2. Para supervisar la aplicación, acceda a la interfaz de usuario web del administrador de recursos en http://localhost:8157 en su navegador web.

AWS DevOps
TareaDescripciónHabilidades requeridas

Cree un Equilibrador de carga de aplicación.

Configure el grupo de destino que enruta el tráfico entre los nodos maestros de Amazon EMR que se implementan en dos zonas de disponibilidad dentro de una Región de AWS.

Para obtener instrucciones, consulte Crear un grupo objetivo para su Application Load Balancer en la documentación del ELB.

AWS DevOps

Configure el cambio de zona en el Controlador de recuperación de aplicaciones.

En este paso, usará la característica de cambio de zona del Controlador de recuperación de aplicaciones para cambiar el tráfico a otra zona de disponibilidad.

  1. Abra la consola del Controlador de recuperación de aplicaciones.

  2. En Comenzar, seleccione Cambio de zona e Iniciar cambio de zona.

  3. Seleccione la zona de disponibilidad de la que desea transferir el tráfico.

  4. Seleccione un recurso compatible (por ejemplo, un equilibrador de carga de aplicación) para el cambio de zona en la tabla “Recursos”.

  5. En Establecer caducidad de turno zonal, selecciona o introduce una caducidad para el turno zonal. Puede configurar una duración entre un minuto y tres días (72 horas).

    Todos los cambios de zona son temporales. Debe establecer un vencimiento, pero puede actualizar los cambios activos más adelante para establecer un vencimiento nuevo de hasta tres días.

  6. Escriba un comentario sobre este cambio de zona.

  7. Seleccione la casilla de verificación para confirmar que comenzar un cambio de zona reducirá la capacidad disponible de su aplicación al cambiar el tráfico de la zona de disponibilidad.

  8. Elija Inicio.

Para utilizarlos AWS CLI, consulte los ejemplos de uso del AWS CLI cambio zonal en la documentación de Application Recovery Controller.

AWS DevOps

Verifique la configuración y el progreso del cambio de zona.

  1. Verifique los recursos que se han registrado con el cambio de zona:

    aws arc-zonal-shift list-managed-resources --region <AWS-region-name>

    Por ejemplo, en la siguiente salida se confirma que los recursos están en funcionamiento en ambas zonas de disponibilidad.

    "appliedWeights": { "use1-az1": 1.0, "use1-az2": 1.0 },
  2. Para visualizar el cambio zonal, utilice el siguiente AWS CLI comando para iniciar el cambio zonal:

    aws arc-zonal-shift start-zonal-shift \ --resource-identifier <application-load-balancer-arn> \ --away-from <source-AZ> \ --expires-in 10m --comment "testing" \ --region <AWS-region-name>

    En este comando, <source-AZ> es el identificador de la zona de disponibilidad desde la que desea cambiar el tráfico y <application-load-balancer-arn> es el nombre de recurso de Amazon (ARN) del equilibrador de carga de aplicación.

  3. Compruebe que el tráfico se haya cambiado a otra zona de disponibilidad.

    aws arc-zonal-shift get-managed-resource \ --resource-identifier <application-load-balancer-arn> \ --region <AWS-region-name>

    Puede ver el cambio de zona que confirman estas ponderaciones:

    "appliedWeights": { "use1-az1": 0.0, "use1-az2": 1.0 },
AWS DevOps

Recursos relacionados