Amazon EMR en Amazon EKS proporciona una opción de implementación para EMR de Amazon que le permite ejecutar cargas de trabajo analíticas en Servicio Amazon Elastic Kubernetes (Amazon EKS). Esta es una opción atractiva porque le permite ejecutar aplicaciones en un grupo común de recursos sin tener que aprovisionar infraestructura. Además, puede utilizar Estudio de Amazon EMR para crear código de análisis que se ejecute en clústeres de Amazon EKS. EMR Studio es un entorno de desarrollo integrado (IDE) basado en la web que utiliza cuadernos Jupyter totalmente administrados que se pueden conectar a cualquier clúster de EMR, incluido EMR en EKS. Usa Inicio de sesión único de AWS (SSO) o un proveedor de identidad compatible (IdP) para iniciar sesión directamente en EMR Studio a través de una URL segura con credenciales corporativas.
La implementación de EMR Studio para adjuntar a EMR en EKS requiere la integración de varios servicios de AWS:
Además, debe instalar el siguiente EMR en los componentes de EKS:
Esta publicación lo ayuda a construir todos los componentes necesarios y unirlos ejecutando un solo script. También describimos la arquitectura de esta configuración y cómo los componentes trabajan juntos.
Descripción de la arquitectura
Con EMR en EKS, puede ejecutar aplicaciones Spark junto con otros tipos de aplicaciones en el mismo clúster de Amazon EKS, lo que mejora la asignación de recursos y simplifica la administración de la infraestructura. Para obtener más información sobre cómo funciona Amazon EMR dentro de un clúster de Amazon EKS, consulte Nuevo: Amazon EMR en Amazon Elastic Kubernetes Service (EKS). EMR Studio proporciona un IDE basado en web que facilita el desarrollo, la visualización y la depuración de aplicaciones que se ejecutan en EMR. Para más información, ver Amazon EMR Studio (versión preliminar): una nueva experiencia IDE para portátiles con Amazon EMR.
Los kernels Spark son pods programados en un espacio de nombres en un clúster de Amazon EKS. EMR Studio utiliza Jupyter Enterprise Gateway (JEG) para lanzar núcleos Spark en Amazon EKS. Un extremo administrado de tipo JEG se aprovisiona como una implementación de Kubernetes en el espacio de nombres asociado del clúster virtual de EMR y se expone como un servicio de Kubernetes. Cada clúster virtual de EMR se asigna a un espacio de nombres de Kubernetes registrado con el clúster de Amazon EKS; Los clústeres virtuales no administran la computación física ni el almacenamiento, sino que apuntan al espacio de nombres de Kubernetes donde se programa la carga de trabajo. Cada clúster virtual puede tener varios puntos finales administrados, cada uno con sus propios kernels configurados para diferentes casos de uso y necesidades. Los puntos de enlace administrados por JEG proporcionan puntos de enlace HTTPS, atendidos por un balanceador de carga de aplicaciones (ALB), a los que solo se puede acceder desde EMR Studio y portátiles autohospedados que se crean dentro de una subred privada de la VPC de Amazon EKS.
El siguiente diagrama ilustra la arquitectura de la solución.
El punto de enlace administrado se crea en el espacio de nombres de Amazon EKS del clúster virtual (en este caso, sparkns
) y los puntos finales HTTPS reciben servicio desde subredes privadas. Los pods del kernel se ejecutan con el rol de IAM de ejecución de trabajos definido en el extremo administrado. Durante la creación de un punto de enlace administrado, EMR en EKS usa AWS Load Balancer Controller en el kube-system
espacio de nombres para crear un ALB con un grupo de destino que se conecta con el punto final administrado por JEG en el espacio de nombres de Kubernetes del clúster virtual.
Puede configurar el kernel de cada punto final administrado de manera diferente. Por ejemplo, para permitir que un kernel de Spark utilice Pegamento AWS como su catálogo, puede aplicar el siguiente archivo JSON de configuración en el -configuration-overrides
marca al crear un punto final administrado:
El punto final administrado es una implementación de Kubernetes liderada por un servicio dentro del espacio de nombres configurado (en este caso, sparkns
). Cuando rastreamos la información del punto final, podemos ver cómo la implementación de Jupyter Enterprise Gateway se conecta con el ALB y el grupo objetivo:
Para ver cómo se conecta esto, considere dos sesiones de EMR Studio. El ALB expone el puerto 18888 a las sesiones de EMR Studio. El servicio JEG asigna el puerto externo 18888 en el ALB a la dinámica NodePort
en el servicio JEG (en este caso, 30091). El servicio JEG reenvía el tráfico al TargetPort
9547, que enruta el tráfico al módulo de controladores Spark apropiado. Cada sesión de notebook tiene su propio kernel, que tiene sus respectivos pods de controlador y ejecutor Spark, como se ilustra en el siguiente diagrama.
Conecte EMR Studio a un clúster virtual y un punto final administrado
Cada vez que un usuario adjunta un clúster virtual y un punto final administrado a su espacio de trabajo de Studio y lanza una sesión de Spark, se programan controladores y ejecutores de Spark. Puedes ver eso cuando corres kubectl
para comprobar qué pods se lanzaron:
Cada sesión del kernel de Spark de notebook implementa un pod de controlador y pods de ejecutor que continúan ejecutándose hasta que se cierra la sesión del kernel.
El código de las celdas del cuaderno se ejecuta en los pods ejecutores que se implementaron en el clúster de Amazon EKS.
Configurar EMR en EKS y EMR Studio
Se requieren varios pasos y piezas para configurar EMR en EKS y EMR Studio. Habilitar AWS SSO es un requisito previo. Puede utilizar los dos scripts de inicio proporcionados en esta sección o implementarlo manualmente siguiendo los pasos que se proporcionan más adelante en esta publicación.
Proporcionamos dos scripts de lanzamiento en esta publicación. Uno es un script bash que usa Formación en la nube de AWS, eksctl y Interfaz de línea de comandos de AWS (AWS CLI) para proporcionar una implementación de un extremo a otro de una solución completa. El otro usa el Kit de desarrollo en la nube de AWS (AWS CDK) para hacerlo.
El siguiente diagrama muestra la arquitectura y los componentes que implementamos.
Requisitos previos
Asegúrese de completar los siguientes requisitos previos:
Para obtener información sobre los IdP admitidos, consulte Habilite el inicio de sesión único de AWS para Amazon EMR Studio.
Guión Bash
El script está disponible en GitHub.
Requisitos previos
El script requiere que uses Nube de AWS9. Siga las instrucciones del Taller de Amazon EKS. Asegúrese de seguir estas instrucciones cuidadosamente:
Después de implementar el escritorio de AWS Cloud9, continúe con los siguientes pasos.
PREPARACIÓN
Utilice el siguiente código para clonar el repositorio de GitHub y preparar los requisitos previos de AWS Cloud9:
Implementar la pila
Antes de ejecutar el script, proporcione la siguiente información:
- El ID y la región de la cuenta de AWS, si su escritorio de AWS Cloud9 no se encuentra en el mismo ID de cuenta o región donde desea implementar EMR en EKS
- El nombre de la Servicio de almacenamiento simple de Amazon (Amazon S3) bucket para crear
- El usuario de AWS SSO que se asociará con la sesión de EMR Studio
Una vez que el script implementa la pila, se muestra la URL del EMR Studio implementado:
Secuencia de comandos de AWS CDK
Los scripts de AWS CDK están disponibles en GitHub. Necesitas revisar el main
rama. Las pilas implementan un clúster de Amazon EKS y un EMR en un clúster virtual de EKS en una nueva VPC con subredes privadas y, opcionalmente, una Flujo de aire Apache administrado por Amazon (Amazon MWAA) y EMR Studio.
Requisitos previos
Necesita AWS CDK versión 1.90.1 o superior. Para más información, ver Introducción a AWS CDK.
Usamos una lista de prefijos para restringir el acceso a algunos recursos a los rangos de IP de red que usted aprueba. Crear un lista de prefijos si aún no tienes uno.
Si planea usar EMR Studio, necesita AWS SSO configurado en su cuenta.
PREPARACIÓN
Después de clonar el repositorio y verificar el main
branch, cree y active un nuevo entorno virtual de Python:
Ahora instale las dependencias de Python:
Por último, inicie AWS CDK:
Implementar las pilas
Sintetice las pilas de AWS CDK con el siguiente código:
Este comando genera cuatro pilas:
- emr-eks-cdk - La pila principal
- mwaa-cdk - Agrega Amazon MWAA
- estudio-cdk - Agrega los requisitos previos de EMR Studio
- estudio-cdk-live - Agrega EMR Studio
El siguiente diagrama ilustra los recursos implementados por las pilas de AWS CDK.
Comience implementando la primera pila:
Si desea utilizar Apache Airflow como su orquestador, implemente esa pila:
Implemente la primera pila de EMR Studio:
Espere a que el punto final administrado se active. Puede verificar el estado ejecutando el siguiente código:
El ID de clúster virtual está disponible en la salida de AWS CDK de la pila emr-eks-cdk.
Cuando el punto final esté activo, implemente la segunda pila de EMR Studio:
Despliegue manual
Si prefiere implementar EMR manualmente en EKS y EMR Studio, siga los pasos de esta sección.
Configurar una VPC
Si usa Amazon EKS v. 1.18, configure una VPC que también tenga subredes privadas y esté etiquetada adecuadamente para balanceadores de carga externos. Para etiquetar, consulte: Equilibrio de carga de aplicaciones en Amazon EKS y Crear un rol de servicio de EMR Studio.
Cree un clúster de Amazon EKS
Lance un clúster de Amazon EKS con al menos un grupo de nodos administrado. Para obtener instrucciones, consulte Configuración y Introducción a Amazon EKS.
Cree políticas, roles, IdP y certificados SSL / TLS relevantes de IAM
Para crear sus políticas de IAM, roles, IdP y certificado SSL / TLS, complete los siguientes pasos:
- Habilite el acceso al clúster para EMR en EKS.
- Cree un IdP en IAM basado en la URL del proveedor de EKS OIDC.
- Cree un certificado SSL / TLS y colóquelo en Administrador de certificados de AWS.
- Cree las políticas y roles de IAM relevantes:
- Rol de ejecución del trabajo
- Actualizar la política de confianza para el rol de ejecución del trabajo
- Implemente y cree la política de IAM para AWS Load Balancer Controller
- Rol de servicio de EMR Studio
- Rol de usuario de EMR Studio
- Políticas de usuario de EMR Studio asociado con usuarios y grupos de AWS SSO
- Registre el clúster de Amazon EKS con Amazon EMR para crear el clúster de EMR virtual
- Crea el apropiado grupos de seguridad que se adjuntará a cada EMR Studio creado:
- Grupo de seguridad del espacio de trabajo
- Grupo de seguridad del motor
- Etiquete los grupos de seguridad con las etiquetas adecuadas. Para obtener instrucciones, consulte Crear un rol de servicio de EMR Studio.
Instalaciones necesarias en Amazon EKS
Implementar el Controlador de balanceador de carga de AWS en el clúster de Amazon EKS si aún no lo ha hecho.
Cree EMR en piezas relevantes de EKS y asigne al usuario a EMR Studio
Complete los siguientes pasos:
- Cree al menos un clúster virtual de EMR asociado con el clúster de Amazon EKS. Para obtener instrucciones, consulte el Paso 1 de Configurar Amazon EMR en EKS para EMR Studio.
- Cree al menos un punto final administrado. Para obtener instrucciones, consulte el Paso 2 de Configurar Amazon EMR en EKS para EMR Studio.
- Cree al menos un EMR Studio; asociar EMR Studio con las subredes privadas configuradas con el clúster de Amazon EKS. Para obtener instrucciones, consulte Cree un estudio EMR.
- Cuando EMR Studio esté disponible, asignar un usuario o grupo de AWS SSO a EMR Studio y aplicar una política de IAM adecuada a ese usuario.
Utilice EMR Studio
Para comenzar a usar EMR Studio, complete los siguientes pasos:
- Busque la URL de EMR Studio por los estudios en una región:
- Con la URL que aparece en la lista, inicie sesión con el nombre de usuario de AWS SSO que utilizó anteriormente.
Después de la autenticación, se enruta al usuario al panel de EMR Studio.
- Elige Crear espacio de trabajo.
- Nombre del espacio de trabajo, ingresa un nombre.
- Subred, elija la subred que corresponda a una de las subredes asociadas con el grupo de nodos administrados.
- Ubicación S3, ingrese un bucket de S3 donde pueda almacenar el contenido del notebook.
- Después de crear el espacio de trabajo, elija uno que esté en el
Ready
de estado.
- En la barra lateral, elija el icono de clúster de EMR.
- under Tipo de clústerescoger Clúster EMR en EKS.
- Elija el clúster virtual disponible y el punto final administrado disponible.
- Elige Adjuntar.
Una vez adjunto, EMR Studio muestra los kernels disponibles en el Notebook y Consola .
- Elige PySpark (Kubernetes) para iniciar un kernel de cuaderno e iniciar una sesión de Spark.
Debido a que la configuración del punto de enlace aquí utiliza AWS Glue para su tienda de metadatos, puede enumerar las bases de datos y tablas conectadas al AWS Glue Data Catalog. Puede utilizar el siguiente script de ejemplo para probar la configuración. Modifique el script según sea necesario para la base de datos y la tabla adecuadas que tenga en su Catálogo de datos:
Limpiar
Para evitar incurrir en cargos futuros, elimine los recursos lanzados aquí ejecutando remove_setup.sh:
Conclusión
EMR en EKS le permite ejecutar aplicaciones en un grupo común de recursos dentro de un clúster de Amazon EKS sin tener que aprovisionar infraestructura. EMR Studio es una herramienta y un cuaderno de Jupyter totalmente administrado que aprovisiona los kernels que se ejecutan en clústeres de EMR, incluidos los clústeres virtuales en Amazon EKS. En esta publicación, describimos la arquitectura de cómo EMR Studio se conecta con EMR en EKS y proporcionamos scripts para implementar automáticamente todos los componentes para conectar los dos servicios.
Si tiene preguntas o sugerencias, deje un comentario.
Acerca de los autores
Randy DeFauw es arquitecto principal de soluciones en Amazon Web Services. Trabaja con los clientes de AWS para proporcionar orientación y asistencia técnica en proyectos de bases de datos, ayudándoles a mejorar el valor de sus soluciones cuando utilizan AWS.
mateo bronceado es arquitecto sénior de soluciones de análisis en Amazon Web Services y proporciona orientación a los clientes que desarrollan soluciones con los servicios de AWS Analytics en sus cargas de trabajo de análisis.
- '
- "
- 100
- 7
- 9
- de la máquina
- Mi Cuenta
- lector activo
- Todos
- asignación
- Amazon
- Amazon Web Services
- Analytics
- APACHE
- Aplicación
- aplicaciones
- arquitectura
- Autenticación
- AWS
- equilibrador
- build
- cases
- certificado
- cargos
- Pagar ahora
- clasificación
- Soluciones
- código
- Algunos
- Calcular
- contenido
- continue
- controlador
- Creamos
- Referencias
- Clientes
- página de información de sus operaciones
- datos
- Base de datos
- bases de datos
- desarrollar
- Desarrollo
- conductor
- Punto final
- Empresa
- Entorno
- ejecución
- experience
- personal
- Nombre
- seguir
- Frente
- futuras
- Git
- GitHub
- Grupo procesos
- Hadoop
- esta página
- Colmena
- Cómo
- HTTPS
- AMI
- ICON
- Identidad
- Incluye
- información
- EN LA MINA
- IP
- IT
- Trabajos
- Cuaderno Jupyter
- Kubernetes
- lanzamiento
- pone en marcha
- línea
- Lista
- carga
- Management
- mapa
- Mapas
- del sistema,
- ordenadores portátiles
- Optión
- Otro
- los libros físicos
- vainas
- políticas
- política
- alberca
- Vista previa
- Director de la escuela
- privada
- proyecta
- Python
- Requisitos
- Recurso
- Recursos
- Ejecutar
- correr
- EN LINEA
- Servicios
- set
- sencillos
- So
- Soluciones
- SQL
- comienzo
- fundó
- Estado
- Estado
- STORAGE
- tienda
- Soportado
- Target
- Técnico
- test
- equipo
- tráfico
- Confía en
- usuarios
- propuesta de
- Virtual
- web
- servicios web
- dentro de
- palabras
- Actividades:
- funciona