web-dev-qa-db-fra.com

Qu'est-ce qu'un conteneur dans YARN?

Qu'est-ce qu'un conteneur dans YARN? Est-il identique à la machine virtuelle Java enfant dans laquelle les tâches du gestionnaire de tâches sont exécutées ou est-ce différent?

32
rahul

Il représente une ressource (mémoire) sur un seul nœud d'un cluster donné.
Un conteneur est

  • supervisé par le gestionnaire de noeud
  • prévu par le gestionnaire de ressources

Une tâche MR s'exécute dans ce conteneur (s) .

23
Lorand Bendig

Il peut y avoir plusieurs conteneurs sur un même nœud (ou un très grand).

Chaque nœud du système est considéré comme composé de plusieurs conteneurs d’une taille minimale de mémoire (512 Mo ou 1 Go). ApplicationMaster peut demander n'importe quel conteneur en tant que multiple de la taille de mémoire minimale.

Source , reportez-vous à la section ResourceManager/Modèle de ressource.

14
alien01

Dans Hadoop 2.x, Container est un endroit où une unité de travail est utilisée. Par exemple, chaque tâche MapReduce (et non le travail entier) s'exécute dans un conteneur. 

Une application/tâche s'exécutera sur un ou plusieurs conteneurs.

Un ensemble de ressources système est alloué pour chaque conteneur, le cœur de la CPU et RAM sont actuellement pris en charge. Chaque nœud d'un cluster Hadoop peut exécuter plusieurs conteneurs. 

Dans Hadoop 1.x, JobTracker alloue un emplacement à l'exécution de chaque tâche MapReduce. Ensuite, TaskTracker génère une machine virtuelle Java distincte pour chaque tâche (sauf si la réutilisation de la machine virtuelle Java n'est pas activée).

4
TSiri

Le mot 'conteneur' est utilisé dans YARN dans deux contextes,

Container: Indique les ressources allouées à un ApplicationMaster. ResourceManager est responsable de l'émission de la ressource/du conteneur vers un ApplicationMaster. Vérifiez Container API. 

Lancement d'un conteneur: En fonction des ressources allouées (conteneurs), ApplicationMaster demande à NodeManager de démarrer les conteneurs, ce qui entraîne l'exécution de la tâche sur un nœud. Vérifiez ContainerManager API.

3
Saket

En termes simples, Container est un endroit où une application YARN est exécutée. Il est disponible dans chaque noeud. Le maître d'applications négocie le conteneur avec le planificateur (l'un des composants de Resource Manager). Les conteneurs sont lancés par Node Manager.

1
Amitesh Ranjan

En fonction de la taille des données d'entrée, plusieurs fractionnements d'entrée sont créés. Le travail MR doit traiter toutes ces données pour créer plusieurs tâches (tâches de mappage et de réduction). Donc, pour chaque fractionnement d'entrée sera traité par une tâche. Maintenant, comment exécuter cette tâche, est suggéré par le gestionnaire de ressources. Le gestionnaire de ressources sait quel gestionnaire de nœud est libre et lequel est occupé, il ressemble à un directeur de collège et à un gestionnaire de nœud sont les enseignants de classe du collège et le directeur sait quel enseignant est libre. Il demande donc au gestionnaire de noeud d’exécuter cette tâche (petite fraction du travail dans son intégralité) dans le conteneur, c’est-à-dire une zone mémoire telle que jvm. Le travail est donc exécuté en tant que maître d’application dans le conteneur.

0
Kapil

Conteneur est un endroit où l'application exécute sa tâche ..__ Si vous voulez connaître le nombre total de conteneurs en cours d'exécution dans un cluster, vous pouvez archiver l'interface utilisateur de votre gestionnaire Yarn-Resource.

URL de fil: http: // Votre-ResourceManager-IP: 45020/cluster/apps/RUNNING

Dans la colonne "Conteneurs en cours", le nombre total des détails de conteneurs en cours d'exécution est présent.

Remarque: Si vous utilisez spark, les exécuteurs d'étincelles s'exécutent à l'intérieur du conteneur. Un conteneur peut accueillir plusieurs exécuteurs d'étincelles.

0
Prasanna
Container : 

Le bail logique sur les ressources et le processus réel généré sur le nœud sont utilisés de manière interchangeable. C'est le même processus dans lequel les tâches (ou AM) s'exécute. Pour démarrer le conteneur, nous fournissons un objet conteneur et CLC (ContainerLaunchContext) dans lesquels nous définissons une liste de commandes pour exécuter des tâches (ou AM).

nmClient.startContainer(container, clcObj)

ContainerLaunchContext code snippet :

<code>
.
.
.
 /**
   * Add the list of <em>commands</em> for launching the container. All
   * pre-existing List entries are cleared before adding the new List
   * @param commands the list of <em>commands</em> for launching the container
   */
  @Public
  @Stable
  public abstract void setCommands(List<String> commands);
</code>
0
RahulV