2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Annuaire d'articles
Principes architecturaux clés de Yarn dans Hadoop
3. Processus d'exécution de la tâche de fil
4. Caractéristiques et scénarios d'utilisation des trois planificateurs de ressources de Yarn
Apache Hadoop Yarn (Yet Another Reasource Negotiator, un autre coordinateur de ressources) est un gestionnaire de ressources utilisé après la version Hadoop2.x, qui peut fournir une plate-forme de gestion unifiée des ressources pour les applications de couche supérieure.
Yarn est principalement composé de ResourceManager, NodeManager, ApplicationMaster et Container.
Gestionnaire de ressources
ResourceManager est le gestionnaire central du cluster Yarn et est responsable de l'allocation des ressources et de la planification de l'ensemble du cluster. ResourceManager est responsable de la surveillance de l'état des nœuds NodeManager, de la collecte des ressources du cluster, du traitement des demandes de ressources pour les tâches soumises par le client, ainsi que du démarrage et de la surveillance d'ApplicationMaster pour chaque application.
Gestionnaire de nœuds
NodeManager est responsable de la gestion des ressources (telles que la mémoire, le processeur, etc.) sur chaque nœud et du rapport à ResourceManager. Lorsque ResourceManager attribue un conteneur (Container) à NodeManager, NodeManager est responsable du démarrage du conteneur et de la surveillance de son fonctionnement. De plus, NodeManager reçoit également la commande ApplicationMaster pour démarrer le conteneur (Container) pour chaque application.
ApplicationMaster
Chaque application exécutée dans Yarn démarrera un ApplicationMaster correspondant, qui est chargé de demander des ressources avec ResourceManager et de gérer les tâches d'application. ApplicationMaster est essentiellement un conteneur. La planification des ressources est effectuée par ResourceManager et démarrée par NodeManager. Une fois ApplicationMaster démarré, il demandera aux ressources de ResourceManager d'exécuter l'application. Une fois que ResourceManager aura alloué les ressources du conteneur, ApplicationMaster se connectera au NodeManager correspondant pour en informer le conteneur. démarrage du conteneur et gérer les ressources exécutées sur la tâche du conteneur.
Récipient
Container Container est l'unité d'exécution de base de Yarn, utilisée pour exécuter les tâches d'application. Il s'agit d'un environnement virtuel qui contient le code d'application, les dépendances et les ressources nécessaires au fonctionnement (mémoire, CPU, disque, réseau). Chaque conteneur est attribué à ApplicationMaster par ResourceManager et démarré et géré sur le nœud correspondant par NodeManager. L'utilisation des ressources du conteneur est surveillée par NodeManager et signalée à ResourceManager si nécessaire.
Le cœur de Yarn est de séparer les fonctions de gestion des ressources et de planification des tâches de JobTracker dans MR1, qui sont respectivement implémentées par les processus ResourceManager et ApplicationMaster. Le ResourceManager est responsable de la gestion des ressources et de la planification de l'ensemble du cluster ; planification des tâches applicatives, surveillance des tâches et tolérance aux pannes.
Lorsque le client soumet une tâche MR à Yarn, les ressources de la tâche MR (Split, configuration des ressources, informations sur le package Jar) seront d'abord téléchargées sur HDFS.
Le client s'applique à ResourceManager pour démarrer ApplicationMaster.
ResourceManager sélectionnera un nœud NodeManager qui est relativement peu occupé et demandera au nœud de démarrer ApplicationMaster (Container).
Une fois ApplicationMaster démarré, il téléchargera les informations sur les ressources de la tâche MR de HDFS vers le local, puis demandera des ressources à ResourceManager pour démarrer la tâche MR.
ResourceManager renvoie la liste des ressources à ApplicationMaster.
ApplicationMaster informe ensuite le NodeManager correspondant de démarrer le conteneur.
Une fois le conteneur démarré, il sera enregistré de manière inversée auprès d'ApplicationMaster.
ApplicationMaster envoie la tâche au conteneur pour qu'elle s'exécute, et la tâche exécute la logique métier du code que nous avons écrit.
Planificateur FIFO (planificateur First-In-Fist-Out) , le planificateur le plus simple de Yarn. FIFO Scheduler placera les candidatures soumises dans une file d'attente premier entré, premier sorti dans l'ordre de soumission. Lors de l'allocation des ressources, les ressources seront d'abord allouées à la première application de la file d'attente, puis alloueront les ressources à l'application suivante après la. les besoins en ressources de l'application principale sont satisfaits. Une application alloue des ressources, et ainsi de suite. Lorsque ce type de planificateur planifie les ressources, il est possible qu'une application nécessitant des ressources importantes occupe toutes les ressources du cluster, provoquant le blocage d'autres applications.
Planificateur de capacité (Capacity Schduler) Il s'agit du planificateur de ressources par défaut configuré dans Yarn, permettant aux locataires multiples de partager en toute sécurité un grand cluster. Le planificateur de capacité prend en charge la configuration de plusieurs files d'attente de ressources. Vous pouvez spécifier les ratios de ressources utilisables minimum et maximum pour chaque file d'attente de ressources. Lors de l'allocation des ressources, les ressources inactives seront prioritaires sur celles ayant le ratio « ressources réelles/ressources budgétaires » le plus bas. chaque file d'attente de ressources adopte une stratégie de planification FIFO en interne.
Planificateur de foireIl s'agit d'une méthode de planification des ressources qui alloue équitablement les ressources Yarn à chaque application. Cette méthode de planification permet à toutes les applications d'obtenir des parts de ressources égales au fil du temps. Son objectif de conception est d'attribuer l'équité à toutes les applications en fonction de paramètres définis.
La différence entre les planificateurs de ressources FIFO, Capacité et Équitable dans Yarn est la suivante :
Planificateur de ressources en fil | Caractéristiques | Scène applicable |
Planificateur FIFO | 1. Simple et facile à comprendre, aucune configuration supplémentaire requise. 2. Les candidatures sont traitées dans l'ordre de soumission (premier entré, premier sorti). 3. Ne convient pas aux clusters partagés, chaque application doit attendre son tour pour s'exécuter. | Clusters non partagés, scénarios qui n'ont pas d'exigences élevées quant à l'ordre d'exécution des tâches. Généralement non utilisé dans les environnements de production. |
Planificateur de capacité (utilisé par défaut dans Yarn open source) | 1. Autorisez plusieurs organisations à partager des ressources de cluster et chaque organisation dispose d'une file d'attente dédiée. 2. Prend en charge la division hiérarchique des files d'attente et la configuration flexible des ressources de file d'attente. 3. Vous pouvez limiter la capacité maximale de la file d'attente et atténuer la concurrence entre les ressources. | Scénarios de cluster partagé, dans lesquels plusieurs organisations ou équipes partagent les mêmes ressources de cluster. |
Planificateur de foire (utilisé par CDH par défaut) | 1. Allouez équitablement les ressources à toutes les applications en cours d’exécution et prenez en charge un partage équitable des ressources entre plusieurs files d’attente. 2. Prend en charge la création dynamique de files d'attente et détermine le placement des applications via un ensemble de systèmes de règles. 3. Soutenir la fonction de préemption des ressources pour assurer une répartition équitable des ressources. | 1. Scénarios dans lesquels plusieurs utilisateurs ou organisations doivent obtenir des ressources équitablement dans un cluster partagé. 2. Environnements avec des exigences élevées en matière de contrôle des ressources au niveau de la file d'attente et de stratégies de planification fines. |