2013-01-16 13 views

risposta

19

Rappresenta una risorsa (memoria) su un singolo nodo in un determinato cluster.
Un contenitore è

  • sotto la supervisione del responsabile di nodo
  • in programma dal gestore delle risorse

Un compito MR viene eseguito in tale contenitore (s).

+1

Un'attività MR non viene eseguita in un contenitore di questo tipo. Funziona su un set di contenitori, poiché ogni mappa o funzione di riduzione viene eseguita su un contenitore. Un'attività può essere eseguita in modalità * uber * su un contenitore, ma un'attività di solito si estende su centinaia o migliaia di contenitori tramite 'MRAppMaster'. Inoltre, un contenitore descritto da un vettore di risorse avanzate e non rappresenta esclusivamente la memoria. – Dyin

+0

Grazie per aver segnalato questo, hai ragione, ho aggiornato la risposta. Tuttavia, quando ho risposto a questa domanda più o meno 2 anni fa, un contenitore rappresentava solo una risorsa di memoria. –

+1

qual è la relazione tra contenitori e esecutori? ciascun esecutore è in esecuzione in un contenitore? Grazie! – lucian

13

Possono esserci più contenitori su un singolo nodo (o uno solo molto grande).

Ogni nodo nel sistema è considerato composto da più contenitori di dimensioni minime della memoria (ad esempio 512 MB o 1 GB). ApplicationMaster può richiedere qualsiasi contenitore come multiplo della dimensione minima della memoria.

Source, vedere la sezione ResourceManager/Resource Model.

+0

AFAIK, ApplicationMaster può richiedere qualsiasi dimensione, ma lo scheduler di filati si assegna solo come multipli della dimensione minima della memoria definita nella classe di proprietà yarn.scheduler.minimum *. –

2

Parola 'Container' viene utilizzato in filato in due contesti,

Contenitore: significa un risorse assegnate ad un ApplicationMaster. ResourceManager è responsabile dell'emissione di risorse/container a un ApplicationMaster. Controlla l'API Container.

Avvio di un contenitore: In base alle risorse allocate (contenitori) ApplicationMaster richiede a NodeManager di avviare Container, determinando l'esecuzione dell'attività su un nodo. Verifica l'API ContainerManager.

1

In termini semplici, Container è un luogo in cui viene eseguita un'applicazione YARN. È disponibile in ogni nodo. Application Master negozia il contenitore con lo scheduler (uno dei componenti di Resource Manager). I contenitori vengono avviati da Node Manager.

2

In Hadoop 2.x, Container è un luogo in cui si verifica un'unità di lavoro. Ad esempio, ogni attività MapReduce (non l'intero lavoro) viene eseguita in un contenitore.

Un'applicazione/lavoro verrà eseguita su uno o più contenitori.

Insieme di risorse di sistema allocate per ciascun contenitore, sono attualmente supportati il ​​core CPU e la RAM. Ogni nodo in un cluster Hadoop può eseguire diversi contenitori.

In Hadoop 1.x uno slot viene assegnato da JobTracker per eseguire ciascuna attività MapReduce. Quindi TaskTracker genera una JVM separata per ogni attività (a meno che il riutilizzo JVM non sia abilitato).

0
Container : 

Il leasing logico sulle risorse e il processo effettivo generato sul nodo vengono utilizzati in modo intercambiabile. È lo stesso processo in cui vengono eseguite le attività (o AM). Per avviare il contenitore forniamo oggetto contenitore e CLC (ContainerLaunchContext) in cui impostiamo l'elenco di comandi per eseguire attività (o 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

Secondo la dimensione dei dati di ingresso, vengono creati più gruppi di ingresso. Il lavoro MR deve elaborare tutti i dati in modo da creare più attività (mappa & ridurre le attività). Quindi per ogni suddivisione di input verrà elaborata da una sola attività. Ora come eseguire questa attività, è suggerito da Gestione risorse. Il manager delle risorse sa quale gestore dei nodi è libero e che è occupato, è come il principale del college e il gestore dei nodi è l'insegnante di classe del college e il preside sa quale insegnante è libero. Quindi chiede al gestore nodo di eseguire quell'attività (piccola frazione dell'intero lavoro) nel contenitore, ad esempio nell'area di memoria tale che jvm. Quindi il lavoro viene eseguito come un master dell'applicazione all'interno del contenitore.

Problemi correlati