Mantenha o controle de blocos de dados com NameNode no HDFS
O NameNode atua como o catálogo de endereços para Hadoop Distributed File System (HDFS) porque sabe não só que bloqueia fazer backup de arquivos individuais, mas também onde cada um destes 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 armazenados em nós escravos em todo o cluster Hadoop.
Menu
Isso é um monte de blocos de dados para acompanhar. Como você poderia esperar, saber onde os corpos estão enterrados torna o NameNode um componente extremamente importante em um cluster Hadoop. Se o NameNode não estiver disponível, os aplicativos não podem acessar quaisquer dados armazenados no HDFS.
Se você der uma olhada na figura a seguir, você pode ver o daemon NameNode rodando em um servidor nó mestre. Toda a informação de mapeamento de lidar com os blocos de dados e os ficheiros correspondentes são armazenados num ficheiro chamado.
HDFS é um sistema de arquivo, o que significa que quaisquer alterações de dados são registradas em uma revista de edição que acompanha os eventos desde a última checkpoint - a última vez em que o registro de edição fundiu-se com. Em HDFS, a revista de edição é mantido em um arquivo chamado que está armazenado na NameNode.
inicialização e operação NameNode
Para entender como o NameNode funciona, é útil para dar uma olhada em como ele é iniciado. Como o objetivo do NameNode é informar aplicações de quantos blocos de dados que necessitam para processar e manter o controle do local exato onde eles estão armazenados, ele precisa de todos os mapeamentos locais de bloco e bloco para arquivo que estão disponíveis no RAM.
Estes são os passos a NameNode toma. Para carregar todas as informações que o NameNode precisa depois que se inicia, acontece o seguinte:
O NameNode carrega o arquivo na memória.
O NameNode carrega o arquivo e re-interpreta as mudanças registradas no diário para atualizar os metadados bloco que já está na memória.
Os daemons DataNode enviar os relatórios de bloco NameNode.
Para cada nó escravo, há um relatório bloco que lista todos os blocos de dados armazenados lá e descreve a saúde de cada um.
Após o processo de inicialização for concluído, o NameNode tem um quadro completo de todos os dados armazenados no HDFS, e ela está pronta para receber solicitações de aplicativos de clientes Hadoop.
Como arquivos de dados são adicionados e removidos com base em pedidos de clientes, as alterações são gravadas para volumes de disco do nó escravo, atualizações de revistas são feitas para o arquivo e as alterações são refletidas nos locais de blocos e metadados armazenados na memória do NameNode.
Ao longo da vida do cluster, os daemons DataNode enviar os batimentos cardíacos NameNode (um sinal rápida) a cada três segundos, indicando que eles estão ativos. (Este valor padrão é configurável.) A cada seis horas (mais uma vez, um padrão configurável), os DataNodes enviar o NameNode um relatório bloco delineamento que bloqueia arquivos estão em seus nós. Desta forma, o NameNode tem sempre uma visão atual dos recursos disponíveis no cluster.
A gravação de dados
Para criar novos arquivos no HDFS, o seguinte processo teria de ocorrer:
O cliente envia uma solicitação para o NameNode para criar um novo arquivo.
O NameNode determina quantos são necessários blocos, eo cliente é concedido um de concessão para a criação desses novos blocos de arquivos em cluster. Como parte deste contrato, o cliente tem um limite de tempo para completar a tarefa de criação. (Este prazo garante que espaço de armazenamento não é absorvido pelas aplicações do cliente falhou.)
O cliente, em seguida, escreve as primeiras cópias dos blocos de arquivos para os nós escravos usando o arrendamento atribuído pelo NameNode.
O NameNode lida com solicitações de gravação e determina onde os blocos de arquivos e suas réplicas precisam ser escritas, equilibrando a disponibilidade eo desempenho. A primeira cópia de um bloco de arquivo é gravado em um rack, e as segunda e terceira cópias são escritos em um rack diferente do que a primeira cópia, mas em diferentes nós escravos no mesmo rack. Este arranjo minimiza o tráfego de rede, assegurando que não há blocos de dados estão no mesmo ponto de falha.
Como cada bloco é escrito para HDFS, um processo especial escreve as réplicas restantes para os outros nós escravos identificados pela NameNode.
Após os daemons DataNode reconhecer o arquivo de réplicas bloco ter sido criado, o aplicativo cliente fecha o arquivo e notifica o NameNode, que, em seguida, fecha o contrato de arrendamento em aberto.
dados Reading
Para ler arquivos do HDFS, o seguinte processo teria de ocorrer:
O cliente envia uma solicitação para o NameNode para um arquivo.
O NameNode determina que blocos estão envolvidas e escolhe, com base na proximidade global dos blocos para o outro e para o cliente, o caminho de acesso mais eficiente.
O cliente, em seguida, acessa os blocos usando os endereços indicados pelo NameNode.
Balanceamento de dados no cluster Hadoop
Ao longo do tempo, com combinações de padrões-ingestão de dados irregulares (onde alguns nós escravos pode ter mais dados escritos para eles) ou falhas de nó, os dados provavelmente se tornará uma distribuição desigual entre as prateleiras e nós escravos no seu cluster Hadoop.
Esta distribuição desigual pode ter um impacto negativo sobre o desempenho porque a demanda de nós escravos individuais se tornarão nós unbalanced- com pequenos dados não serão totalmente utilizado- e nós com muitos blocos será usado em demasia. (Nota: O uso excessivo e subutilização são baseadas na atividade do disco, e não na CPU ou RAM.)
HDFS inclui um utilitário balanceador de redistribuir quadras nós escravos em demasia para os subutilizadas, mantendo a política de colocar blocos em diferentes nós de escravos e racks. administradores Hadoop devem verificar regularmente HDFS saúde, e se os dados torna-se distribuídos de forma desigual, eles devem chamar o utilitário balanceador.
design de servidor mestre NameNode
Devido à sua natureza de missão crítica, o servidor principal de executar o daemon NameNode precisa marcadamente diferentes requisitos de hardware do que os de um nó escravo. Mais significativamente, os componentes de nível corporativo precisa ser usado para minimizar a probabilidade de uma interrupção. Além disso, você vai precisar de memória RAM suficiente para carregar na memória todos os metadados e dados de localização sobre todos os blocos de dados armazenados no HDFS.