O que é um recipiente em fios?
8 answers
Representa um recurso (memória) num único nó num dado aglomerado.
Um contentor é
- supervisionado pelo gestor de nós
- programado pelo gestor de recursos
Uma tarefa de MR corre nesse(s) contentor (es) .
Pode haver vários contentores num único nó (ou um único muito grande).
Cada nó do sistema é considerado composto por vários recipientes de tamanho mínimo de memória (digamos 512MB ou 1 GB). O Aplicationmaster pode solicitar qualquer recipiente como um múltiplo do tamanho mínimo de memória.
Fonte , ver secção ResourceManager / Resource Model.
Em Hadoop 2.x, recipiente é um lugar onde uma unidade de trabalho ocorre. Por exemplo, cada tarefa de MapReduce(não toda a tarefa) é executado em um recipiente.
Um pedido/emprego será executado em um ou mais recipientes.
O conjunto de recursos do sistema são alocados para cada contentor, sendo suportados actualmente o núcleo do CPU e a RAM. Cada nó em um cluster Hadoop pode executar vários contêineres.
Em Hadoop 1.x um slot é alocado pelo JobTracker para executar cada tarefa MapReduce. Em seguida, o TaskTracker cria um JVM separado para cada tarefa (a menos que a reutilização JVM não esteja ativada).
A Palavra 'recipiente' é utilizada em fios em dois contextos,
Contentor: significa uma afectação de recursos a um Gestor de candidatura. ResourceManager é responsável pela emissão de recursos/container para um ApplicationMaster. Verificar Recipiente API.
Lançando um Container: baseado em recursos alocados (containers) o ApplicationMaster pede ao NodeManager para iniciar os Containers, resultando na execução da tarefa em um nó. Check ContainerManager CONJUNTO.
Em termos simples, recipiente é um lugar onde uma aplicação de fio é executado. Está disponível em cada nó. O mestre da aplicação negoceia o container com o scheduler(um dos componentes do Gestor de recursos). Os contentores são lançados pelo gestor de nós.
Container :
O arrendamento lógico dos recursos e o processo real gerado no nó é usado indistintamente. É o mesmo processo em que as tarefas(ou AM) correm. Para iniciar o container, fornecemos o container object e o CLC (ContainerLaunchContext) em que definimos a lista de comandos para executar tarefas (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>
De acordo com o tamanho dos dados de entrada, são criadas várias parcelas de entrada. O MR job precisa processar todos esses dados, de modo que múltiplas tarefas estão sendo criadas (mapear & reduzir tarefas). Assim, para cada divisão de entrada será processado por uma tarefa. Agora como executar esta tarefa, é sugerido pelo Resource manager. O Gerenciador de recursos sabe qual o Gerenciador de nós é livre e qual é ocupado, seu como diretor de faculdade e gerenciador de nós são o professor de classe da faculdade e o diretor sabe qual professor é livre. Então ... pede ao Gestor de nós para executar essa tarefa(pequena fracção da tarefa inteira) no recipiente, ou seja, área de memória tal que jvm. Então o trabalho é executado como um mestre de aplicação dentro do recipiente.
O contentor é um local onde a aplicação executa a sua tarefa. Se queres saber o total não.de correr contêineres em um aglomerado, então você poderia verificar em seu fio de aglomerado UI.
URL do fio: http://Your-Active-ResourceManager-IP:45020/cluster/apps/RUNNING
Na coluna "Running containers", o número total. de running containers detalhes está presente.