Índice:
- Inicialização e operação de NameNode
- Escrevendo dados
- Dados de leitura
- Balançando dados no cluster Hadoop
- Design do servidor principal NameNode
Vídeo: hadoop yarn architecture 2024
O NomeNode atua como o catálogo de endereços do Sistema de arquivos distribuídos Hadoop (HDFS) porque não sabe apenas quais blocos compõem arquivos individuais, mas também onde cada um desses blocos e suas réplicas são armazenados. Quando um usuário armazena um arquivo no HDFS, o arquivo é dividido em blocos de dados e três cópias desses blocos de dados são armazenadas em nós escravos no cluster Hadoop.
Esse é um monte de blocos de dados para acompanhar. Como você pode esperar, saber onde os corpos estão enterrados faz do NameNode um componente criticamente importante em um cluster Hadoop. Se o NameNode não estiver disponível, os aplicativos não podem acessar qualquer dado armazenado no HDFS.
Se você observar a figura a seguir, você pode ver o daemon NameNode executado em um servidor de nó mestre. Todas as informações de mapeamento que tratam dos blocos de dados e seus arquivos correspondentes são armazenadas em um arquivo chamado.
HDFS é um sistema de arquivo de registro no diário, o que significa que todas as alterações de dados são registradas em um jornal de edição que rastreia eventos desde o último ponto de verificação - a última vez que o log de edição foi mesclado. No HDFS, o diário de edição é mantido em um arquivo chamado armazenado no NameNode.
Inicialização e operação de NameNode
Para entender como o NomeNode funciona, é útil dar uma olhada em como ele é iniciado. Como a finalidade do NomeNode é informar as aplicações de quantos blocos de dados eles precisam processar e acompanhar a localização exata onde eles estão armazenados, ele precisa de todos os locais de bloco e mapeamentos de bloco a arquivo que estão disponíveis em RAM.
Estas são as etapas que o NameNode leva. Para carregar todas as informações que o NomeNode precisa após a sua inicialização, ocorre o seguinte:
-
O NameNode carrega o arquivo na memória.
-
O NameNode carrega o arquivo e re-reproduz as alterações no diário para atualizar os metadados do bloco que já estão na memória.
-
Os daemons DataNode enviam os relatórios de bloco NameNode.
Para cada nó escravo, há um relatório de bloco que lista todos os blocos de dados armazenados lá e descreve a saúde de cada um.
Depois que o processo de inicialização for concluído, o NameNode possui uma imagem completa de todos os dados armazenados no HDFS e está pronto para receber solicitações de aplicativos dos clientes Hadoop.
À medida que os arquivos de dados são adicionados e removidos com base nos pedidos do cliente, as alterações são gravadas nos volumes do disco do nó escravo, as atualizações do diário são feitas no arquivo e as alterações são refletidas nas localizações dos blocos e metadados armazenados na memória do NomeNode.
Ao longo da vida do cluster, os daemons DataNode enviam os batimentos cardíacos NameNode (um sinal rápido) a cada três segundos, indicando que eles estão ativos.(Esse valor padrão é configurável.) Todas as seis horas (novamente, um padrão configurável), os DataNodes enviam o ReportNode um relatório de bloco descrevendo quais blocos de arquivos estão em seus nós. Desta forma, o NameNode sempre possui uma visão atual dos recursos disponíveis no cluster.
Escrevendo dados
Para criar novos arquivos no HDFS, o seguinte processo deveria ter lugar:
-
O cliente envia uma solicitação para o NomeNome para criar um novo arquivo.
O NomeNode determina quantos blocos são necessários e o cliente recebe uma locação para criar esses novos blocos de arquivos no cluster. Como parte desta locação, o cliente tem um limite de tempo para completar a tarefa de criação. (Este limite de tempo garante que o espaço de armazenamento não seja ocupado por aplicativos cliente com falha.)
-
O cliente então grava as primeiras cópias dos blocos de arquivos nos nós escravos usando a locação atribuída pelo NomeNodo.
O NameNode lida com solicitações de gravação e determina onde os blocos de arquivos e suas réplicas precisam ser escritos, equilibrando disponibilidade e desempenho. A primeira cópia de um bloco de arquivo está escrita em um rack e as segunda e terceira cópias são escritas em um rack diferente da primeira, mas em diferentes nós escravos no mesmo rack. Esse arranjo minimiza o tráfego de rede, assegurando que nenhum bloco de dados esteja no mesmo ponto de falha.
-
Como cada bloco é escrito em HDFS, um processo especial grava as restantes réplicas para os outros nós escravos identificados pelo NomeNodo.
-
Depois que os daemons DataNode reconhecerem que as réplicas do bloco de arquivos foram criadas, o aplicativo cliente fecha o arquivo e notifica o NameNode, que então fecha o contrato aberto.
Dados de leitura
Para ler arquivos do HDFS, o seguinte processo deveria ter lugar:
-
O cliente envia uma solicitação ao NomeNome para um arquivo.
O NomeNode determina quais blocos estão envolvidos e escolhem, com base na proximidade geral dos blocos um ao outro e ao cliente, o caminho de acesso mais eficiente.
-
O cliente então acessa os blocos usando os endereços fornecidos pelo NomeNodo.
Balançando dados no cluster Hadoop
Ao longo do tempo, com combinações de padrões de ingestão de dados desiguais (onde alguns nós de escravos podem ter mais dados escritos para eles) ou falhas de nós, os dados provavelmente se distribuirão de forma desigual entre os racks e nós escravos no seu cluster Hadoop.
Esta distribuição desigual pode ter um impacto prejudicial no desempenho porque a demanda em nós de escravos individuais ficará desequilibrada; os nós com poucos dados não serão totalmente utilizados; e os nós com muitos blocos serão usados em excesso. ( Nota: O uso excessivo e o subutilizado são baseados na atividade do disco, não na CPU ou na RAM.)
O HDFS inclui um utilitário balanceador para redistribuir blocos de nós escravos em excesso para subutilizados, mantendo a política de colocar blocos em diferentes nós escravos e racks. Os administradores Hadoop devem verificar regularmente a saúde HDFS, e se os dados se distribuem de forma desigual, eles devem invocar o utilitário balanceador.
Design do servidor principal NameNode
Devido à sua natureza de missão crítica, o servidor mestre executando o daemon NameNode precisa de requisitos de hardware marcadamente diferentes do que os de um nó escravo. Mais significativamente, os componentes de nível empresarial precisam ser usados para minimizar a probabilidade de uma interrupção. Além disso, você precisará de RAM suficiente para carregar na memória todos os dados de metadados e localização sobre todos os blocos de dados armazenados no HDFS.