Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
| eadl:bloc5:fm3:td2 [2026/09/27 18:05] – [1.2 Choisir les logiciels] jcheron | eadl:bloc5:fm3:td2 [2026/09/28 15:37] (Version actuelle) – jcheron | ||
|---|---|---|---|
| Ligne 13: | Ligne 13: | ||
| Ce TD utilise la console AWS et quelques commandes exécutées depuis un terminal. Il s’agit d’une découverte **manuelle** d’Amazon EMR. N’utilisez ni Terraform ni CloudFormation dans ce TD : l’automatisation de cette infrastructure fera l’objet du TD3. | Ce TD utilise la console AWS et quelques commandes exécutées depuis un terminal. Il s’agit d’une découverte **manuelle** d’Amazon EMR. N’utilisez ni Terraform ni CloudFormation dans ce TD : l’automatisation de cette infrastructure fera l’objet du TD3. | ||
| - | AWS est un environnement payant. | + | AWS est un environnement payant. |
| </ | </ | ||
| Ligne 81: | Ligne 81: | ||
| - récupérez `mapper.py` et `reducer.py` du TD1 ; | - récupérez `mapper.py` et `reducer.py` du TD1 ; | ||
| - vérifiez que vous avez accès à la console AWS ; | - vérifiez que vous avez accès à la console AWS ; | ||
| - | - sélectionnez la région | + | - sélectionnez la région AWS '' |
| - | - récupérez ou créez une paire de clés EC2 selon la procédure du cours ; | + | |
| - | - identifiez le bucket S3 attribué à votre binôme ou créez-en un uniquement si l’enseignant l’autorise. | + | |
| - | + | ||
| - | <WRAP important round> | + | |
| - | **Ne mettez jamais une clé AWS, un mot de passe, une clé privée SSH ou un jeton dans un fichier envoyé sur S3.** Une clé SSH privée doit rester sur votre poste, avec des permissions restrictives : | + | |
| - | + | ||
| - | <sxh bash; | + | |
| - | chmod 400 ma-cle-emr.pem | + | |
| - | </ | + | |
| - | </ | + | |
| ---- | ---- | ||
| Ligne 139: | Ligne 129: | ||
| | Applications non sélectionnées | Pig, Oozie, HBase, Presto, Trino, Zeppelin, Flink, TensorFlow, Zookeeper, Phoenix, Hue, JupyterHub, HCatalog, AmazonCloudWatchAgent | hors périmètre du TD (streaming, NoSQL, ML, orchestration, | | Applications non sélectionnées | Pig, Oozie, HBase, Presto, Trino, Zeppelin, Flink, TensorFlow, Zookeeper, Phoenix, Hue, JupyterHub, HCatalog, AmazonCloudWatchAgent | hors périmètre du TD (streaming, NoSQL, ML, orchestration, | ||
| + | <WRAP info round> | ||
| **Remarque** : YARN, HDFS et MapReduce ne sont pas des cases à cocher séparées dans la console EMR — ils font partie intégrante du socle Hadoop installé dès que " | **Remarque** : YARN, HDFS et MapReduce ne sont pas des cases à cocher séparées dans la console EMR — ils font partie intégrante du socle Hadoop installé dès que " | ||
| + | </ | ||
| ===== 1.3 Comprendre les nœuds ===== | ===== 1.3 Comprendre les nœuds ===== | ||
| - | Dans la section matériel | + | Dans la section matériel, |
| - | * **1 nœud primaire (master)** ; | + | La console affiche alors trois rôles : |
| - | * **2 nœuds core** ; | + | |
| - | * **0 ou 1 nœud task** selon le quota et la consigne de l’enseignant. | + | |
| - | Le type d’instance | + | * **Primaire** ; |
| + | * **Unité principale** ; | ||
| + | * **Tâche - 1** (et suivantes si plusieurs nœuds de ce type). | ||
| + | |||
| + | Remplacez le type d'instance | ||
| <sxh text> | <sxh text> | ||
| - | Exemple pédagogique à adapter aux quotas du compte | + | Configuration recommandée pour ce TD : |
| - | | + | |
| - | | + | |
| - | | + | |
| </ | </ | ||
| - | ^ Groupe EMR ^ Nombre choisi ^ Type d’instance ^ Rôle attendu ^ | + | ^ Groupe EMR ^ Nombre choisi ^ Type d'instance ^ Rôle attendu ^ |
| - | | Primary / Master | + | | Primaire |
| - | | Core | | | stockage HDFS et exécution YARN | | + | | Unité principale |
| - | | Task | | | exécution YARN sans stockage HDFS durable du cluster | | + | | Tâche - 1 | 1 | m5.xlarge |
| + | |||
| + | <WRAP tip round> | ||
| + | La famille **m5** est une famille d' | ||
| + | |||
| + | À noter : avec une seule instance d' | ||
| + | </ | ||
| ===== 1.4 Faire le rapprochement avec le TD1 ===== | ===== 1.4 Faire le rapprochement avec le TD1 ===== | ||
| Ligne 179: | Ligne 180: | ||
| - Le nombre de nœuds choisi suffit-il à démontrer une tolérance de panne réelle ? Pourquoi ? | - Le nombre de nœuds choisi suffit-il à démontrer une tolérance de panne réelle ? Pourquoi ? | ||
| - | ===== 1.5 Configurer les rôles IAM ===== | + | ===== 1.5 Réseau |
| - | La console propose des rôles IAM pour EMR et EC2, souvent créés automatiquement ou sélectionnés parmi des rôles | + | Sur un compte AWS standard, un **VPC par défaut** existe déjà dans chaque région, avec un subnet public dans chaque zone de disponibilité. EMR le sélectionne automatiquement |
| - | - rôle de service EMR ; | + | Dans la section réseau |
| - | - profil d’instance EC2 pour les nœuds ; | + | |
| - | - rôle souvent associé à l’auto-scaling selon les options retenues. | + | |
| - | Utilisez les rôles pédagogiques déjà fournis lorsque l’enseignant les a préparés. Sinon, choisissez l’option de création recommandée | + | 1. vérifiez que le VPC proposé est bien le VPC par défaut (``vpc-xxxxxxxx (default)``) ; |
| + | 2. un subnet est présélectionné : laissez | ||
| + | 3. les security groups sont créés automatiquement par EMR (un pour le master, un pour les core/task) si vous ne modifiez rien. | ||
| - | ^ Élément IAM ^ Valeur sélectionnée ^ À quoi sert-il ? ^ | + | Notez les valeurs proposées automatiquement : |
| - | | EMR service role | | autoriser EMR à gérer | + | |
| - | | EC2 instance profile | | permettre aux instances d’appeler les services autorisés, notamment S3 selon la configuration | | + | |
| - | | Rôle d’auto-scaling | | seulement si l’option est utilisée | | + | |
| - | < | + | ^ Paramètre réseau ^ Valeur ^ Observation ^ |
| - | **Ne confondez | + | | VPC | | par défaut | |
| + | | Subnet | | public (zone de disponibilité) | | ||
| + | | Security group master | | créé automatiquement par EMR | | ||
| + | | Security group core/task | | créé automatiquement par EMR | | ||
| + | | Adresse publique du master | | oui, par défaut sur subnet public | | ||
| + | |||
| + | < | ||
| + | Le security group du master créé par défaut n' | ||
| </ | </ | ||
| - | Question | + | Répondez |
| - | ===== 1.6 Choisir le réseau | + | - Pourquoi un cluster peut-il avoir besoin d'une communication interne même si vous ne vous connectez qu'au master ? |
| + | - Pourquoi les nœuds core et task ne doivent-ils généralement pas être ouverts directement à Internet ? | ||
| + | - Dans Docker Compose, quelles règles de réseau étaient implicites ou locales ? | ||
| + | ===== 1.6 Paire de clés EC2 (accès SSH) ===== | ||
| - | Dans la section réseau : | + | Pour pouvoir se connecter en SSH au nœud primaire du cluster (console, exécution manuelle de commandes Hadoop, consultation de fichiers de logs), une **paire de clés EC2** est nécessaire. |
| - | | + | |
| - | | + | |
| - | 3. si le master doit être joint en SSH depuis Internet, vérifiez que le subnet est public et qu’une route vers une Internet Gateway existe, selon la consigne | + | |
| - | 4. choisissez ou créez les security groups recommandés par la formation ; | + | |
| - | 5. activez l’accès SSH uniquement depuis votre adresse IP lorsque la console | + | |
| - | Notez : | + | <sxh text> |
| + | Étapes (en dehors de la création du cluster EMR) : | ||
| + | EC2 > Réseau et sécurité > Paires de clés > Créer une paire de clés | ||
| + | Nom : td-hadoop-votrenom | ||
| + | Type de clé : RSA | ||
| + | Format de fichier privé : | ||
| + | - .pem si vous vous connectez depuis Linux/Mac ou WSL | ||
| + | - .ppk si vous utilisez PuTTY sous Windows | ||
| + | </ | ||
| - | ^ Paramètre réseau ^ Valeur ^ Observation ^ | + | <WRAP important> |
| - | | VPC | | | | + | Le fichier de clé privée est **téléchargé une seule fois**. Conservez-le précieusement (par exemple dans votre dossier utilisateur, avec des droits restreints) : il ne pourra pas être retéléchargé depuis la console AWS. |
| - | | Subnet | | public, privé ou autre | | + | |
| - | | Security group master | | ports autorisés | | + | |
| - | | Security group core/task | | accès interne entre nœuds | | + | |
| - | | Adresse publique du master | | oui / non | | + | |
| - | Répondez | + | Sous Linux/Mac, pensez à restreindre les droits du fichier avant de l' |
| + | <sxh bash> | ||
| + | chmod 400 td-hadoop-votrenom.pem | ||
| + | </ | ||
| + | </ | ||
| - | - Pourquoi un cluster | + | Dans la configuration du cluster |
| - | - Pourquoi les nœuds core et task ne doivent-ils généralement pas être ouverts directement | + | |
| - | - Dans Docker Compose, quelles règles de réseau étaient implicites ou locales ? | + | ===== 1.7 Rôles IAM ===== |
| + | |||
| + | EMR nécessite deux rôles IAM pour fonctionner : | ||
| + | |||
| + | * un **rôle de service EMR** (permet à EMR de gérer les ressources EC2, réseau, etc. en votre nom) ; | ||
| + | * un **rôle de profil | ||
| + | |||
| + | Dans la section **Rôle IAM**, AWS propose deux options pour chacun de ces deux rôles : | ||
| + | |||
| + | * **Choisir | ||
| + | * **Créer une fonction du service** : AWS crée automatiquement le rôle nécessaire. | ||
| + | |||
| + | <WRAP tip round> | ||
| + | **Cas attendu : votre compte est un compte AWS standard (personnel, free tier ou passé en basic)** | ||
| + | |||
| + | Sur ce type de compte, | ||
| + | - ``EMR_DefaultRole`` ou ``AmazonEMR-ServiceRole-xxxx`` (rôle de service) ; | ||
| + | - ``EMR_EC2_DefaultRole`` ou ``AmazonEMR-InstanceProfile-xxxx`` (profil d' | ||
| + | |||
| + | Ces rôles seront ensuite proposés automatiquement lors des prochaines créations de cluster. C'est le cas normal et attendu pour ce TD. | ||
| + | </ | ||
| + | |||
| + | <WRAP important> | ||
| + | **Cas exceptionnel : erreur de création (droits IAM restreints ou rôle déjà partiellement créé)** | ||
| + | |||
| + | Il peut arriver, même sur un compte standard, qu' | ||
| + | |||
| + | Si vous tentez **Créer une fonction du service** pour le champ **Fonction du service EC2** et obtenez une erreur du type : | ||
| + | |||
| + | < | ||
| + | Échec de la création du rôle EMR_EC2_DefaultRole. Vous n' | ||
| + | </ | ||
| + | |||
| + | **Marche | ||
| + | |||
| + | - Retournez sur **Choisir une fonction du service existant** pour le champ **Fonction du service EC2** ; | ||
| + | - vérifiez si un rôle apparaît dans la liste déroulante, par exemple ``EMR_EC2_DefaultRole`` (déjà créé lors d'un essai précédent) ; | ||
| + | - sélectionnez-le s'il apparaît. | ||
| + | </ | ||
| - | ===== 1.7 Associer la clé SSH et créer le cluster ===== | + | ===== 1.8 Associer la clé SSH et créer le cluster ===== |
| 1. Sélectionnez la paire de clés EC2 fournie ou créée pour le TD. | 1. Sélectionnez la paire de clés EC2 fournie ou créée pour le TD. | ||
| Ligne 237: | Ligne 288: | ||
| </ | </ | ||
| - | ===== Bilan de la mission 1 ===== | ||
| - | |||
| - | Complétez : | ||
| - | |||
| - | - Le temps entre le clic sur « créer » et l’état utilisable est de : `__________`. | ||
| - | - Les choix qui ont demandé le plus de réflexion sont : `__________`. | ||
| - | - La différence principale entre un cluster EMR et les conteneurs du TD1 est : `__________`. | ||
| - | |||
| - | ---- | ||
| ====== Mission 2 — Explorer le cluster depuis le master ====== | ====== Mission 2 — Explorer le cluster depuis le master ====== | ||
| Ligne 261: | Ligne 303: | ||
| </ | </ | ||
| - | Le nom d’utilisateur dépend de l’image | + | Le nom d’utilisateur dépend de l’image. Pour une AMI EMR standard, `hadoop` est couramment utilisé ; ne remplacez pas ce nom au hasard si la consigne de votre compte indique autre chose. |
| À la première connexion, vérifiez l’empreinte proposée. Si vous obtenez `Permission denied (publickey)`, | À la première connexion, vérifiez l’empreinte proposée. Si vous obtenez `Permission denied (publickey)`, | ||
| Ligne 348: | Ligne 390: | ||
| ===== 3.2 Mettre en place un tunnel local ===== | ===== 3.2 Mettre en place un tunnel local ===== | ||
| - | Gardez une première session SSH ouverte. Dans un second terminal, créez des redirections locales vers les ports web du master. Les numéros de ports peuvent varier selon la release ; utilisez ceux affichés dans la console | + | Gardez une première session SSH ouverte. Dans un second terminal, créez des redirections locales vers les ports web du master. Les numéros de ports peuvent varier selon la release ; utilisez ceux affichés dans la console. |
| <sxh bash> | <sxh bash> | ||
| Ligne 576: | Ligne 618: | ||
| </ | </ | ||
| - | Hadoop refuse généralement d’écrire dans un répertoire de sortie déjà présent. Utilisez un nouveau préfixe ou supprimez uniquement votre ancien résultat de test si l’enseignant l’autorise. | + | Hadoop refuse généralement d’écrire dans un répertoire de sortie déjà présent. |
| ===== 5.3 Lancer le job ===== | ===== 5.3 Lancer le job ===== | ||
| Ligne 661: | Ligne 703: | ||
| | Task | | | | | | | Task | | | | | | ||
| - | Le coût réel dépend notamment de la région, du type d’instance, | + | Le coût réel dépend notamment de la région, du type d’instance, |
| Pour une estimation simplifiée : | Pour une estimation simplifiée : | ||
| Ligne 766: | Ligne 808: | ||
| <sxh bash> | <sxh bash> | ||
| aws s3 ls s3:// | aws s3 ls s3:// | ||
| - | # À exécuter seulement si l' | ||
| aws s3 rm s3:// | aws s3 rm s3:// | ||
| </ | </ | ||
| Ligne 870: | Ligne 911: | ||
| <WRAP important round> | <WRAP important round> | ||
| - | Dernière vérification avant de quitter AWS : votre cluster est terminé, vos instances de test ne tournent plus, et les objets S3 restants correspondent exactement à la consigne de l’enseignant. | + | Dernière vérification avant de quitter AWS : votre cluster est terminé, vos instances de test ne tournent plus, et les objets S3 sont supprimés. |
| </ | </ | ||