Amazon EMR sur Amazon EKS offre une option de déploiement pour Amazon DME qui vous permet d'exécuter des charges de travail d'analyse sur Service Amazon Elastic Kubernetes (Amazon EKS). Il s'agit d'une option intéressante car elle vous permet d'exécuter des applications sur un pool commun de ressources sans avoir à provisionner l'infrastructure. De plus, vous pouvez utiliser Amazon EMRStudio pour créer du code d'analyse exécuté sur des clusters Amazon EKS. EMR Studio est un environnement de développement intégré (IDE) basé sur le Web utilisant des notebooks Jupyter entièrement gérés qui peuvent être connectés à n'importe quel cluster EMR, y compris EMR sur EKS. Il utilise Authentification unique AWS (SSO) ou un fournisseur d'identité compatible (IdP) pour vous connecter directement à EMR Studio via une URL sécurisée à l'aide des informations d'identification de l'entreprise.
Le déploiement d'EMR Studio pour s'attacher à EMR sur EKS nécessite l'intégration de plusieurs services AWS :
De plus, vous devez installer l'EMR suivant sur les composants EKS :
Cet article vous aide à créer tous les composants nécessaires et à les assembler en exécutant un seul script. Nous décrivons également l'architecture de cette configuration et la manière dont les composants fonctionnent ensemble.
Aperçu de l'architecture
Avec EMR sur EKS, vous pouvez exécuter des applications Spark avec d'autres types d'applications sur le même cluster Amazon EKS, ce qui améliore l'allocation des ressources et simplifie la gestion de l'infrastructure. Pour plus d'informations sur le fonctionnement d'Amazon EMR au sein d'un cluster Amazon EKS, consultez Nouveau – Amazon EMR sur Amazon Elastic Kubernetes Service (EKS). EMR Studio fournit un IDE basé sur le Web qui facilite le développement, la visualisation et le débogage des applications exécutées dans EMR. Pour plus d'informations, voir Amazon EMR Studio (aperçu) : une nouvelle expérience IDE axée sur les ordinateurs portables avec Amazon EMR.
Les noyaux Spark sont des pods planifiés dans un espace de noms dans un cluster Amazon EKS. EMR Studio utilise Jupyter Enterprise Gateway (JEG) pour lancer les noyaux Spark sur Amazon EKS. Un point de terminaison géré de type JEG est provisionné en tant que déploiement Kubernetes dans l’espace de noms associé au cluster virtuel EMR et exposé en tant que service Kubernetes. Chaque cluster virtuel EMR est mappé à un espace de noms Kubernetes enregistré auprès du cluster Amazon EKS ; les clusters virtuels ne gèrent pas le calcul ou le stockage physique, mais pointent vers l'espace de noms Kubernetes où la charge de travail est planifiée. Chaque cluster virtuel peut avoir plusieurs points de terminaison gérés, chacun avec ses propres noyaux configurés pour différents cas d'utilisation et besoins. Les points de terminaison gérés par JEG fournissent des points de terminaison HTTPS, desservis par un Application Load Balancer (ALB), accessibles uniquement à partir d'EMR Studio et de blocs-notes auto-hébergés créés dans un sous-réseau privé du VPC Amazon EKS.
Le diagramme suivant illustre l'architecture de la solution.
Le point de terminaison géré est créé dans l'espace de noms Amazon EKS du cluster virtuel (dans ce cas, sparkns
) et les points de terminaison HTTPS sont desservis à partir de sous-réseaux privés. Les pods du noyau s'exécutent avec le rôle IAM d'exécution de tâches défini dans le point de terminaison géré. Lors de la création d'un point de terminaison géré, EMR sur EKS utilise le contrôleur AWS Load Balancer dans le kube-system
espace de noms pour créer un ALB avec un groupe cible qui se connecte au point de terminaison géré par JEG dans l’espace de noms Kubernetes du cluster virtuel.
Vous pouvez configurer différemment le noyau de chaque point de terminaison géré. Par exemple, pour permettre à un noyau Spark d'utiliser Colle AWS comme catalogue, vous pouvez appliquer le fichier JSON de configuration suivant dans le —configuration-overrides
indicateur lors de la création d'un point de terminaison géré :
Le point de terminaison géré est un déploiement Kubernetes dirigé par un service dans l'espace de noms configuré (dans ce cas, sparkns
). Lorsque nous suivons les informations du point de terminaison, nous pouvons voir comment le déploiement de Jupyter Enterprise Gateway se connecte à l'ALB et au groupe cible :
Pour voir comment cela se connecte, considérons deux sessions EMR Studio. L'ALB expose le port 18888 aux sessions EMR Studio. Le service JEG mappe le port externe 18888 sur l'ALB au port dynamique NodePort
sur le service JEG (dans ce cas, 30091). Le service JEG transmet le trafic au TargetPort
9547, qui achemine le trafic vers le pod de pilote Spark approprié. Chaque session de bloc-notes possède son propre noyau, qui possède ses propres modules de pilote et d'exécuteur Spark respectifs, comme l'illustre le diagramme suivant.
Attachez EMR Studio à un cluster virtuel et à un point de terminaison géré
Chaque fois qu'un utilisateur attache un cluster virtuel et un point de terminaison géré à son espace de travail Studio et lance une session Spark, les pilotes Spark et les exécuteurs Spark sont planifiés. Tu peux le voir quand tu cours kubectl
pour vérifier quels pods ont été lancés :
Chaque session du noyau Spark du notebook déploie un pod de pilotes et des pods d'exécution qui continuent de s'exécuter jusqu'à l'arrêt de la session du noyau.
Le code des cellules du bloc-notes s'exécute dans les pods d'exécution qui ont été déployés dans le cluster Amazon EKS.
Configurer EMR sur EKS et EMR Studio
Plusieurs étapes et éléments sont nécessaires pour configurer à la fois EMR sur EKS et EMR Studio. L'activation d'AWS SSO est une condition préalable. Vous pouvez utiliser les deux scripts de lancement fournis dans cette section ou le déployer manuellement en suivant les étapes fournies plus loin dans cet article.
Nous proposons deux scripts de lancement dans cet article. L'un est un script bash qui utilise AWS CloudFormation, eksctl, et Interface de ligne de commande AWS (AWS CLI) pour fournir un déploiement de bout en bout d'une solution complète. L'autre utilise le Kit de développement AWS Cloud (AWS CDK) pour ce faire.
Le diagramme suivant montre l'architecture et les composants que nous déployons.
Pré-requis
Assurez-vous de remplir les conditions préalables suivantes :
Pour plus d'informations sur les IdP pris en charge, voir Activer l'authentification unique AWS pour Amazon EMR Studio.
Script Bash
Le script est disponible sur GitHub.
Pré-requis
Le script vous oblige à utiliser AWSCloud9. Suivez les instructions dans le Atelier Amazon EKS. Assurez-vous de suivre attentivement ces instructions :
Après avoir déployé le bureau AWS Cloud9, passez aux étapes suivantes.
Préparation
Utilisez le code suivant pour cloner le dépôt GitHub et préparer les prérequis d'AWS Cloud9 :
Déployer la pile
Avant d'exécuter le script, fournissez les informations suivantes :
- L'ID de compte AWS et la région, si votre bureau AWS Cloud9 ne se trouve pas dans le même ID de compte ou la même région dans laquelle vous souhaitez déployer EMR sur EKS.
- Le nom du Service de stockage simple Amazon (Amazon S3) compartiment à créer
- L'utilisateur AWS SSO à associer à la session EMR Studio
Une fois que le script a déployé la pile, l'URL du studio EMR déployé s'affiche :
Script AWS CDK
Les scripts AWS CDK sont disponibles sur GitHub. Vous devez vérifier le main
bifurquer. Les piles déploient un cluster Amazon EKS et un cluster virtuel EMR sur EKS dans un nouveau VPC avec des sous-réseaux privés, et éventuellement un Flux d'air Apache géré par Amazon (Amazon MWAA) et EMR Studio.
Pré-requis
Vous avez besoin de la version AWS CDK 1.90.1 ou supérieure. Pour plus d'informations, voir Premiers pas avec AWS CDK.
Nous utilisons une liste de préfixes pour restreindre l'accès à certaines ressources aux plages IP du réseau que vous approuvez. Créer un liste des préfixes si vous n'en avez pas déjà un.
Si vous envisagez d'utiliser EMR Studio, vous avez besoin d'AWS SSO configuré dans votre compte.
Préparation
Après avoir cloné le référentiel et extrait le main
branchez, créez et activez un nouvel environnement virtuel Python :
Installez maintenant les dépendances Python :
Enfin, démarrez le AWS CDK :
Déployer les piles
Synthétisez les piles AWS CDK avec le code suivant :
Cette commande génère quatre piles :
- emr-eks-cdk – La pile principale
- mwaa-cdk – Ajoute Amazon MWAA
- studio-cdk – Ajoute les prérequis d’EMR Studio
- studio-cdk-live – Ajoute EMR Studio
Le diagramme suivant illustre les ressources déployées par les piles AWS CDK.
Commencez par déployer la première stack :
Si vous souhaitez utiliser Apache Airflow comme orchestrateur, déployez cette pile :
Déployez la première pile EMR Studio :
Attendez que le point de terminaison géré devienne actif. Vous pouvez vérifier l'état en exécutant le code suivant :
L'ID du cluster virtuel est disponible dans la sortie AWS CDK de la pile emr-eks-cdk.
Lorsque le point de terminaison est actif, déployez la deuxième pile EMR Studio :
Déploiement manuel
Si vous préférez déployer manuellement EMR sur EKS et EMR Studio, suivez les étapes de cette section.
Configurer un VPC
Si vous utilisez Amazon EKS v. 1.18, configurez un VPC doté également de sous-réseaux privés et correctement balisé pour les équilibreurs de charge externes. Pour le balisage, voir : Équilibrage de charge des applications sur Amazon EKS ainsi que Créer un rôle de service EMR Studio.
Créer un cluster Amazon EKS
Lancez un cluster Amazon EKS avec au moins un groupe de nœuds gérés. Pour les instructions, voir Mise en place ainsi que Premiers pas avec Amazon EKS.
Créez des stratégies IAM, des rôles, des IdP et des certificats SSL/TLS pertinents
Pour créer vos stratégies IAM, vos rôles, votre IdP et votre certificat SSL/TLS, procédez comme suit :
- Activer l'accès au cluster pour EMR sur EKS.
- Créer un IdP dans IAM basé sur l'URL du fournisseur EKS OIDC.
- Créez un certificat SSL/TLS et placez-le dans Gestionnaire de certificats AWS.
- Créez les stratégies et les rôles IAM pertinents :
- Rôle d'exécution du travail
- Mettre à jour la politique de confiance pour le rôle d'exécution du travail
- Déployer et créer la stratégie IAM pour le contrôleur AWS Load Balancer
- Rôle de service EMR Studio
- Rôle utilisateur EMR Studio
- Politiques utilisateur d'EMR Studio associé aux utilisateurs et groupes AWS SSO
- Enregistrer le cluster Amazon EKS auprès d'Amazon EMR pour créer le cluster EMR virtuel
- Créer le approprié groupes de sécurité à rattacher à chaque EMR Studio créé :
- Groupe de sécurité de l'espace de travail
- Groupe de sécurité du moteur
- Marquez les groupes de sécurité avec les balises appropriées. Pour les instructions, voir Créer un rôle de service EMR Studio.
Installations requises dans Amazon EKS
Déployez le Contrôleur d'équilibreur de charge AWS dans le cluster Amazon EKS si vous ne l'avez pas déjà fait.
Créez un DME sur les éléments pertinents d'EKS et mappez l'utilisateur à EMR Studio
Effectuez les étapes suivantes:
- Créez au moins un cluster virtuel EMR associé au cluster Amazon EKS. Pour obtenir des instructions, voir l'étape 1 de Configurer Amazon EMR sur EKS pour EMR Studio.
- Créez au moins un point de terminaison géré. Pour obtenir des instructions, voir l'étape 2 de Configurer Amazon EMR sur EKS pour EMR Studio.
- Créer au moins un studio EMR ; associez EMR Studio aux sous-réseaux privés configurés avec le cluster Amazon EKS. Pour les instructions, voir Créer un studio EMR.
- Lorsque le Studio EMR est disponible, mapper un utilisateur ou un groupe AWS SSO à EMR Studio et appliquez une stratégie IAM appropriée à cet utilisateur.
Utiliser EMR Studio
Pour commencer à utiliser EMR Studio, procédez comme suit :
- Recherchez l'URL d'EMR Studio par les studios d'une région :
- Avec l'URL répertoriée, connectez-vous en utilisant le nom d'utilisateur AWS SSO que vous avez utilisé précédemment.
Après authentification, l'utilisateur est redirigé vers le tableau de bord EMR Studio.
- Selectionnez Créer un espace de travail.
- Pour Nom de l'espace de travail, entrez un nom.
- Pour Sous-réseau, choisissez le sous-réseau qui correspond à l'un des sous-réseaux associés au groupe de nœuds gérés.
- Pour Emplacement S3, entrez un compartiment S3 dans lequel vous pouvez stocker le contenu du bloc-notes.
- Après avoir créé l'espace de travail, choisissez-en un qui se trouve dans le
Ready
état.
- Dans la barre latérale, choisissez l'icône du cluster EMR.
- Sous Type de grappe¸ choisissez Cluster EMR sur EKS.
- Choisissez le cluster virtuel disponible et le point de terminaison géré disponible.
- Selectionnez Attacher.
Une fois attaché, EMR Studio affiche les noyaux disponibles dans le Cahier ainsi que Console .
- Selectionnez PySpark (Kubernetes) pour lancer un noyau de notebook et démarrer une session Spark.
Étant donné que la configuration du point de terminaison utilise ici AWS Glue pour son métastore, vous pouvez répertorier les bases de données et les tables connectées au catalogue de données AWS Glue. Vous pouvez utiliser l'exemple de script suivant pour tester la configuration. Modifiez le script si nécessaire pour la base de données et la table appropriées que vous avez dans votre catalogue de données :
Nettoyer
Pour éviter d'encourir des frais futurs, supprimez les ressources lancées ici en exécutant remove_setup.sh :
Conclusion
EMR sur EKS vous permet d'exécuter des applications sur un pool commun de ressources au sein d'un cluster Amazon EKS sans avoir à provisionner l'infrastructure. EMR Studio est un bloc-notes et un outil Jupyter entièrement gérés qui provisionnent les noyaux qui s'exécutent sur des clusters EMR, y compris des clusters virtuels sur Amazon EKS. Dans cet article, nous avons décrit l'architecture de la façon dont EMR Studio se connecte à EMR sur EKS et fourni des scripts pour déployer automatiquement tous les composants permettant de connecter les deux services.
Si vous avez des questions ou des suggestions, veuillez laisser un commentaire.
À propos des auteurs
Randy DeFauw est architecte de solutions principal chez Amazon Web Services. Il travaille avec les clients AWS pour fournir des conseils et une assistance technique sur les projets de bases de données, les aidant ainsi à améliorer la valeur de leurs solutions lors de l'utilisation d'AWS.
Matthieu Tan est architecte senior de solutions d'analyse chez Amazon Web Services et fournit des conseils aux clients développant des solutions avec les services AWS Analytics sur leurs charges de travail d'analyse.
- '
- "
- 100
- 7
- 9
- accès
- Compte
- infection
- Tous
- allocation
- Amazon
- Amazon Web Services
- analytique
- Apache
- Application
- applications
- architecture
- Authentification
- AWS
- balancier
- construire
- cas
- certificat
- des charges
- Passer au paiement
- classification
- le cloud
- code
- Commun
- calcul
- contenu
- continuer
- contrôleur
- La création
- Lettres de créance
- Clients
- tableau de bord
- données
- Base de données
- bases de données
- développer
- Développement
- driver
- Endpoint
- Entreprise
- Environment
- exécution
- Découvrez
- PERSONNEL
- Prénom
- suivre
- Fronté
- avenir
- Git
- GitHub
- Réservation de groupe
- Hadoop
- ici
- Ruche
- Comment
- HTTPS
- IAM
- ICON
- Active
- Y compris
- d'information
- Infrastructure
- IP
- IT
- Emploi
- Jupyter Notebook
- Kubernetes
- lancer
- lance
- Gamme
- Liste
- charge
- gestion
- Localisation
- Map
- réseau et
- ordinateurs portables
- Option
- Autre
- Physique
- gousses
- politiques
- politique
- pool
- Aperçu
- Directeur
- Privé
- projets
- Python
- Exigences
- ressource
- Ressources
- Courir
- pour le running
- sécurité
- Services
- set
- étapes
- So
- Solutions
- SQL
- Commencer
- j'ai commencé
- Région
- Statut
- storage
- Boutique
- Appareils
- Target
- Technique
- tester
- fiable
- circulation
- La confiance
- utilisateurs
- Plus-value
- Salle de conférence virtuelle
- web
- services Web
- dans les
- des mots
- Activités:
- vos contrats