- Um cluster HDFS inclui um NameNode, que é o servidor diretor. O NameNode rastreia o status de todos os arquivos, as permissões dos arquivos e a localização de cada bloco. O software NameNode gerencia o namespace do sistema de arquivos, que por sua vez rastreia e controla o acesso dos clientes aos arquivos e executa operações como abertura de arquivos, fechamento e renomeação de diretórios e arquivos.
O namespace do sistema de arquivos também divide arquivos em blocos e mapeia esses blocos para os DataNodes, que são a parte trabalhadora do sistema. Ao configurar com apenas um NameNode por cluster, a arquitetura do sistema simplifica o gerenciamento de dados e o armazenamento dos metadados do HDFS. Além disso, uma maior segurança é implementada ao manter os dados do usuário longe do fluxo através do NameNode.
- Na maioria das vezes, há um DataNode por nó em um cluster, que gerencia o armazenamento de dados dentro do nó. O software DataNode gerencia a criação, exclusão e replicação de blocos, além de solicitações de leitura e gravação. Cada DataNode armazena separadamente os dados do HDFS em seu sistema de arquivos local, com cada bloco como um arquivo separado. Os DataNodes são os nós de trabalho (ou daemons do Hadoop, processos que rodam em segundo plano) e podem ser executados em hardware de commodities, caso uma organização queira economizar.
Tanto o NameNode quanto o DataNode são softwares desenvolvidos para rodar em uma ampla variedade de sistemas operacionais (SO), geralmente o GNU/Linux. A linguagem Java foi utilizada na construção do HDFS, o que significa que qualquer máquina que suporte Java pode também utilizar o software NameNode ou DataNode.
As implementações geralmente terão uma única máquina dedicada que executa o software NameNode. Qualquer outra máquina no cluster executa uma instância única do software DataNode. Se necessário, mas raramente utilizado, é possível configurar mais de um DataNode em uma única máquina.
Quando os dados são inseridos no HDFS, eles são divididos em blocos e distribuídos para diferentes nós em um cluster. Com os dados armazenados em vários DataNodes, os blocos podem ser replicados em outros nós para permitir o processamento paralelo. O sistema de arquivos distribuído (DFS) inclui comandos para acessar, recuperar, migrar e visualizar dados rapidamente. Com réplicas de blocos de dados em vários DataNodes, uma cópia pode ser removida sem risco de corrupção das outras cópias. O tamanho de bloco padrão do HDFS é de 128 MB (Hadoop 2.x), que alguns consideram grande, mas esse tamanho de bloco é feito para minimizar tempos de busca e reduzir a quantidade de metadados necessária.
Para minimizar riscos e acelerar o processamento, quando um DataNode para de sinalizar o NameNode, esse DataNode é removido do cluster e as operações continuam sem ele. Se esse DataNode voltar a funcionar, ele é alocado a um novo cluster.
O HDFS oferece acesso flexível a arquivos de dados por meio de várias interfaces: uma API Java nativa é fornecida com o HDFS, enquanto uma linguagem C wrapper está disponível para a API Java, além de um navegador HTTP que pode ser usado para navegar pelos arquivos de uma instância HDFS.