Université Cadi Ayyad
Ecole Nationale des Sciences Appliquées de Marrakech
Filière Réseaux, Systèmes et Services Programmables (RSSP)
Réalisé par : Proposée par :
Fatima Zahra IQICH Prof. H. ELKABTANE
Fatima Ezzahrae MAIRIK
Fatima Ezzahra ELAAKARI Présenté le :
Fatima Zahra BENLMALIK 30 septembre 2024
Hanae ACHABBAK
05
Plan travail: 04
03 Scheduler YARN :
01 Gestion des FIFO, Capacity, Fair
ressources avec
Rôle de YARN dans YARN
Introduction à YARN
Hadoop
02
Architecture de
YARN 09
10
06
Surveillance et
08 diagnostic des Cas d'utilisation de
Applications performances YARN YARN
Manager et Node 07
Manager Installation et
configuration de
Workflow d'une YARN
application YARN
11
YARN Vs
MapReduce v1
Introduction
Dans le cadre de la gestion de grandes quantités de données,
Hadoop est devenu une solution incontournable pour le
traitement et le stockage distribués. À la base de cet
écosystème se trouve un composant clé : YARN, qui signifie
Yet Another Resource Negotiator. YARN joue un rôle central
dans Hadoop en permettant la gestion efficace des ressources et
la planification des tâches sur un cluster distribué. Il permet de
surmonter les limites du modèle original de MapReduce en
offrant une plus grande flexibilité et en permettant l’exécution
de différents types d’applications distribuées.
Architecture YARN
ResourceManager Conteneur
(RM) L'architecture de YARN (Yet Another
Resource Negotiator) est conçue pour
(Container)
offrir une gestion efficace des
ressources dans un environnement
distribué. YARN décompose ses
responsabilités en plusieurs
composants principaux qui travaillent
ensemble pour gérer les ressources et
planifier l'exécution des tâches dans
ApplicationMaster un cluster Hadoop.
HDFS (Hadoop
(AM) Voici les principaux composants de Distributed File
l'architecture YARN : System)
NodeManager
(NM)
Rôle de YARN dans Hadoop
YARN est un composant essentiel de l'architecture Hadoop. Il joue un
rôle clé dans la gestion des ressources du cluster Hadoop. YARN a
été introduit dans Hadoop 2.0 pour améliorer l'efficacité et l'évolutivité
par rapport à l'architecture précédente.
Principales fonctions de YARN
Gestion des ressources Gestion des tâches Isolation et multi-tenancy
• YARN alloue dynamiquement • YARN programme et surveille • YARN permet à plusieurs
des ressources aux différentes l'exécution des tâches. Il garantit applications et utilisateurs de
applications en cours que les tâches sont exécutées en partager les ressources du
d'exécution dans le cluster. Il fonction des priorités et des cluster de manière isolée,
veille à ce que les ressources besoins en ressources. assurant ainsi la sécurité et la
soient utilisées de manière stabilité du système.
optimale et équitable entre les
tâches.
Gestion des ressources avec YARN
ResourceManager (RM) NodeManager (NM) ApplicationMaster (AM)
• C'est le composant central de • C'est un démon qui s'exécute sur • Chaque application a son propre
YARN. Il gère toutes les chaque nœud de calcul. Il est ApplicationMaster, qui négocie
ressources du cluster et prend responsable de la gestion des les ressources avec le
des décisions sur l'allocation ressources locales, comme la ResourceManager et coordonne
des ressources.Le RM a deux mémoire et le CPU. l'exécution des tâches
principaux sous-composants spécifiques à l'application.
:Scheduler et
l’ApplicationManager.
Scheduler YARN:
Le Scheduler dans YARN est responsable de l'allocation des ressources aux applications
en fonction de différents modèles d'ordonnancement.
FIFO Scheduler:(First In, First Out)
Principe : Les tâches sont exécutées dans
l'ordre dans lequel elles sont soumises.
Celles soumises en premier sont traitées
en premier.
Avantages : Simple à mettre en œuvre,
utile pour des charges de travail linéaires.
Inconvénients : Risque de pénaliser les
petites tâches qui attendent derrière de
grandes tâches. Manque de flexibilité
dans la répartition des ressources.
Capacity Scheduler
Principe : Les ressources du cluster sont
divisées en plusieurs files d'attente, et chaque
file a une capacité maximale définie (en
pourcentage des ressources du cluster).
Avantages : Permet à différents utilisateurs ou
groupes de partager les ressources du cluster de
manière isolée, tout en utilisant les ressources
inactives d'une autre file si nécessaire.
Inconvénients : Complexe à configurer, mais
permet une gestion plus fine des ressources.
Fair Scheduler
Principe : Les ressources sont distribuées
équitablement entre toutes les applications
en cours d'exécution. Les applications
reçoivent leur juste part de ressources
indépendamment de leur taille ou de leur
moment de soumission.
Avantages : Évite qu'une seule application
monopolise les ressources. Idéal pour les
environnements multi-utilisateurs avec des
tâches de différentes tailles.
Inconvénients : Peut introduire une latence
dans l'exécution de certaines grandes tâches
si elles sont en compétition avec plusieurs
petites tâches.
Application Manager
Application manager: Gère l'exécution de chaque application soumise dans le cluster.
Ses fonctions principales:
Gérer la soumission et le démarrage des applications.
Négocier des ressources avec Resource Manager pour lancer l'Application Master.
Superviser l'état des applications soumises dans le cluster.
Relancer l'Application Master en cas de défaillance.
Libérer les ressources après l'exécution des applications.
Node Manager
Node manager: gère les ressources au niveau de chaque nœud dans le cluster (mémoire, CPU,
etc.).
Ses fonctions principales:
Exécute les containers qui contiennent les tâches de calcul.
Surveille l'état des containers et signale les informations au Resource Manager.
Si une tâche s'exécutant dans un container échoue, le Node Manager en informe l'Application
Master, qui peut demander de relancer la tâche.
Workflow d’une application YARN
Le workflow d'une application YARN suit plusieurs étapes clés :
Soumission de l'application : Le client soumet une application à YARN via l'API ou un outil de soumission. Cette
demande contient les informations nécessaires, telles que les ressources requises (mémoire, CPU) et le code de
l'application.
Démarrage de l'ApplicationMaster : Le ResourceManager (gestionnaire de ressources) reçoit la requête du client et
alloue un conteneur pour l'ApplicationMaster. L'ApplicationMaster est spécifique à chaque application et gère le cycle de vie
de l'application (allocation des ressources, suivi des tâches, etc.).
Allocation des conteneurs :
L'ApplicationMaster demande des ressources supplémentaires (conteneurs) auprès du ResourceManager pour
exécuter les différentes tâches de l'application.
Le ResourceManager consulte le NodeManager, qui est responsable des ressources disponibles sur chaque nœud
du cluster, pour fournir les conteneurs demandés.
Exécution des tâches : Une fois les conteneurs alloués, l'ApplicationMaster communique avec les NodeManagers
concernés pour démarrer les processus des tâches dans les conteneurs. Les tâches de l'application sont alors exécutées.
Surveillance et rapport : L'ApplicationMaster surveille l'exécution des tâches et renvoie régulièrement des informations au
ResourceManager. Il s'assure que les ressources sont utilisées correctement et que les tâches se déroulent sans erreur.
Achèvement de l'application : Une fois toutes les tâches terminées, l'ApplicationMaster signale la fin de l'application au
ResourceManager. Les ressources allouées (conteneurs) sont ensuite libérées, et l'application est considérée comme
terminée.
Installation et configuration YARN
Installation de java
sudo apt update
sudo apt install openjdk-11-jdk
java –version
Téléchargement de YARN
méthode 1:
wget https://downloads.apache.org/hadoop/common/hadoop-3.3.6/hadoop-3.3.6.tar.gz
tar -xzvf hadoop-3.3.6.tar.gz
sudo mv hadoop-3.3.6 /usr/local/hadoop
Méthode 2 :
sudo apt update
sudo apt install yarn
sudo apt install yarn=NOUVELLE_VERSION_ICI
Configuration de YARN
sudo nano /usr/local/hadoop/etc/hadoop/yarn-site.xml
configurations a ajoutées dans le fichier yarn-site.xml :
Installation et configuration YARN
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>localhost</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
Définition des variables d’environnement
Au fichier .bashrc: export HADOOP_HOME=/usr/local/hadoop
export YARN_HOME=$HADOOP_HOME
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
Rechargement du fichier : source ~/.bashrc
Démarrage et test de fonctionnement de YARN
start yarn.sh
http://localhost:8088/
Installation et configuration YARN
Commandes de base de YARN
•yarn init : Initialise un nouveau projet, y compris le fichier package.json.
•yarn install : Installe toutes les dépendances pour un projet basé sur package.json.
•yarn add [package] : Ajoute un nouveau paquet à utiliser dans le projet.
•yarn remove [package] : Supprime un paquet existant du projet.
•yarn upgrade [package] : Met à niveau un paquet installé vers la dernière version.
•yarn why [package] : Montre pourquoi un paquet est installé et quel autre paquet en dépend.
•yarn run : Exécute un script défini depuis package.json.
Surveillance et diagnostic des performances YARN
Hadoop propose des outils natifs pour surveiller les
performances de YARN, tels que le ResourceManager
Web UI et les logs des applications YARN. Le
ResourceManager Web UI permet de visualiser l’état du
cluster en temps réel, de suivre l’allocation des
ressources pour chaque application et de vérifier le
nombre de conteneurs actifs ou en attente. De plus, les
logs des applications YARN fournissent des
informations détaillées sur le déroulement des tâches,
permettant d'identifier des éventuels problèmes ou de
surveiller les ressources consommées par chaque
application.
Les métriques clés de surveillance
• Utilisation des ressources (CPU et mémoire) : Mesurer l’utilisation des ressources par chaque conteneur et
application permet de comprendre comment les ressources sont allouées et utilisées. Cela aide à identifier les
applications qui consomment plus de ressources que prévu.
• Latence des tâches et temps d'exécution : Ces métriques aident à évaluer la rapidité avec laquelle les tâches sont
exécutées. Une latence élevée peut indiquer des problèmes de performance ou des goulots d'étranglement dans le
traitement des données.
• Taux d'erreur des applications et des conteneurs : Suivre le nombre d'erreurs rencontrées peut indiquer des
problèmes sous-jacents dans le code des applications ou des configurations inadéquates. Cela est essentiel pour le
maintien de la stabilité du système.
• Nombre de conteneurs actifs : Cette métrique indique combien de conteneurs sont actuellement en cours
d'exécution. Elle permet de déterminer si le cluster est sous-utilisé ou surchargé.
• Temps écoulé depuis le démarrage de l'application : Cela fournit des informations sur la durée de fonctionnement
de chaque application, permettant aux administrateurs de surveiller son comportement au fil du temps.
Outils de surveillance complémentaires
Ambari : Il offre des
tableaux de bord
interactifs pour une
surveillance en temps
réel,Métriques
des clésalertes Grafana : permet
automatisées en cas de d’afficher de manière
problèmes, et des graphique et interactive, Prometheus : Un autre
capacités de qui facilitant ainsi outil populaire pour
configuration des l’analyse des données. collecter des métriques
services. et les afficher.
Prometheus est souvent
utilisé en combinaison
avec Grafana pour créer
des dashboards riches
et dynamiques.
diagnostic des performances YARN
Les techniques de diagnostic dans YARN sont essentielles pour maintenir un fonctionnement optimal
des applications et identifier rapidement des problèmes potentiels. L'une des approches principales
consiste à analyser les logs YARN, qui fournissent des informations détaillées sur les événements liés
aux conteneurs et aux applications. En examinant ces logs, il est possible d'identifier des goulots
d'étranglement (comme une utilisation excessive de la mémoire ou du CPU) et de repérer des défaillances
de conteneurs dues à des erreurs de configuration ou des dépassements de ressources. Par ailleurs,
l'utilisation d'alertes et de seuils prédéfinis permet de détecter automatiquement les anomalies dans les
performances du cluster.
Cas d’utilisation
Une entreprise de marketing souhaite analyser des millions de tweets pour comprendre les sentiments des
consommateurs envers ses produits. Pour cela, elle utilise le framework Hadoop avec YARN pour orchestrer
le traitement des données massives
1.Collecte des données : Les tweets sont collectés en temps réel via des API et stockés dans HDFS
(Hadoop Distributed File System).
2.Traitement des données : YARN gère les ressources et exécute des applications MapReduce, chacune
étant responsable de tâches telles que le filtrage des tweets, l'analyse des mots-clés et le calcul des scores
de sentiment.
3.Exécution des conteneurs : YARN alloue dynamiquement des conteneurs sur différents nœuds du cluster
pour permettre un traitement parallèle rapide et efficace.
4.Résultats : Après le traitement, les résultats sont stockés dans HDFS et analysés pour générer des
rapports sur la perception des consommateurs, permettant à l'entreprise d'ajuster ses stratégies marketing.
YARN vs MapReduce v1
MapReduce v1 :
API
• Pour permettre au programmeur l'écriture
d'applications MapReduce
Framework
• C'est le cœur du processus qui gère
l'exécution des tâches, la répartition des
données, et les opérations intermédiaires
Resource Management
• Infrastructure pour gérer les noeuds du
cluster, allouer des ressources et
ordonnancer les jobs