O que é o Hadoop Distributed File System (HDFS)?

Empresários em reunião de brainstorming

Autores

Jim Holdsworth

Staff Writer

IBM Think

O que é o HDFS?

O Hadoop Distributed File System (HDFS) é um sistema de arquivos que gerencia grandes conjuntos de dados que podem ser executados em hardware comum. O HDFS é o sistema de armazenamento de dados mais popular para Hadoop e pode ser usado para escalar um único cluster Apache Hadoop para centenas e até milhares de nós. Como gerencia big data de maneira eficiente com alta taxa de transferência, o HDFS pode ser usado como um pipeline de dados e é ideal para compatibilidade com análise de dados complexa.

O HDFS é construído em um framework de código aberto e é um dos principais componentes do Apache Hadoop, sendo os outros o MapReduce e o YARN. O HDFS não deve ser confundido ou substituído pelo Apache HBase, que é um sistema de gerenciamento de bancos de dados não relacional, orientado por colunas, que fica sobre o HDFS e pode proporcionar melhor compatibilidade com necessidades de dados em tempo real com seu mecanismo de processamento in-memory.

Projeto 3D de bolas rolando em uma pista

As últimas notícias e insights sobre IA 


Descubra insights selecionados por especialistas e notícias sobre IA, nuvem e outros assuntos no boletim informativo semanal Think. 

Benefícios do HDFS

Tolerância a falhas e recuperação rápida de falhas de hardware

Como uma instância de HDFS pode consistir em milhares de servidores, a falha de pelo menos um servidor é sempre uma possibilidade. O HDFS foi projetado para detectar falhas e se recuperar automaticamente de forma rápida. A data replication com várias cópias em muitos nós ajuda a proteger contra a perda de dados. O HDFS mantém pelo menos uma cópia em um rack diferente de todas as outras cópias. Esse armazenamento de dados em um grande cluster distribuído entre os nós aumenta a confiabilidade. Além disso, o HDFS pode tirar instantâneos do armazenamento para salvar informações pontuais (PIT).

Acesso a dados de streaming

O HDFS é mais voltado para o processamento em lotes em vez do uso interativo, por isso o design enfatiza altas taxas de transferência de dados, o que acomoda o acesso em streaming a conjuntos de dados.

Acomodação de grandes conjuntos de dados

O HDFS acomoda aplicações que utilizam conjuntos de dados com tamanho geralmente de gigabytes a terabytes. O HDFS oferece uma alta largura de banda de dados agregada e pode escalar para centenas de nós em um único cluster, ajudando a impulsionar sistemas de computação de alto desempenho (HPC) . Os  data lakes  são frequentemente armazenados no HDFS. Os data warehouses também utilizavam o HDFS, embora agora com menos frequência, devido à percepção de complexidade de sua operação.

Eficiência de custos

Como os dados são armazenados virtualmente, os custos de armazenamento de metadados do sistema de arquivos e do namespace do sistema de arquivos podem ser reduzidos.

Portabilidade

Para facilitar a adoção, o HDFS foi projetado para ser portátil em várias plataformas de hardware e compatível com diversos sistemas operacionais subjacentes, incluindo Linux, macOS e Windows. Além disso, os data lakes do Hadoop podem ser compatíveis com bancos de dados não estruturados, semiestruturados e estruturados, oferecendo máxima flexibilidade. Embora o Hadoop seja codificado em Java, outras linguagens, incluindo C++, Perl, Python e Ruby, permitem seu uso em ciência de dados.

Velocidade de processamento

O HDFS utiliza uma arquitetura de clusters para ajudar a oferecer alta taxa de transferência. Para reduzir o tráfego na rede, o sistema de arquivos Hadoop armazena dados nos DataNodes onde as computações ocorrem, em vez de migrar os dados para outro local para processamento.

Escalabilidade

Com recursos de escalabilidade horizontal e vertical, o HDFS pode ser rapidamente ajustado para atender às necessidades de dados de uma organização. Um cluster pode incluir centenas ou milhares de nós.

AI Academy

O gerenciamento de dados é o segredo para a IA generativa?

Explore por que é essencial ter dados de alta qualidade para utilizar a IA generativa com qualidade.

Arquitetura do HDFS e como funciona

O HDFS tem uma arquitetura de diretor/trabalhador.

  • Um cluster do 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 do 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 por meio 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 um wrapper em linguagem C 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 do HDFS.

O namespace do sistema de arquivos

O HDFS é organizado com uma hierarquia de arquivos tradicional, onde o usuário pode criar diretórios que contêm vários arquivos. A hierarquia do namespace do sistema de arquivos é semelhante a sistemas de arquivos tradicionais, onde o usuário cria e remove arquivos, migra-os entre diretórios e pode renomeá-los.

O namespace do sistema de arquivos é mantido pelo NameNode, que registra quaisquer mudanças no namespace do sistema de arquivos. O número total de réplicas a serem salvas para qualquer aplicação pode ser especificado aqui. Esse número é o fator de replicação para aquele arquivo. O fator de replicação pode ser definido quando o arquivo é criado e modificado posteriormente, conforme necessário.

Data replication

Para fornecer armazenamento confiável, o HDFS armazena grandes arquivos em vários locais dentro de um grande cluster, com cada arquivo em uma sequência de blocos. Cada bloco é armazenado em um arquivo do mesmo tamanho, exceto o bloco final, que é preenchido conforme os dados são adicionados.

Para proteção adicional, os arquivos HDFS são gravados uma única vez por apenas um escritor de cada vez. Para ajudar a garantir que todos os dados estejam sendo replicados conforme as instruções. O NameNode recebe um heartbeat (um relatório de status periódico) e um blockreport (com o ID do bloco, o selo de geração e o tamanho de cada réplica de bloco) de cada DataNode conectado ao cluster. O recebimento de um heartbeat indica que o DataNode está funcionando corretamente.

O NameNode seleciona o ID do rack para cada DataNode usando um processo chamado Hadoop Rack Awareness, para ajudar a evitar a perda de dados caso um rack inteiro falhe. Isso também permite o uso de largura de banda de vários racks ao ler dados.

Exemplo e casos de uso do HDFS

Considere um arquivo que contém números de telefone de um país inteiro. Os números de pessoas com sobrenomes que começam com A podem ser armazenados no servidor 1, B no servidor 2 e assim por diante. Com o Hadoop, partes desse diretório telefônico seriam armazenadas em um único cluster, e para reconstruir o diretório completo, uma aplicação precisaria dos blocos de todos os servidores no cluster.

Para garantir alta disponibilidade caso um servidor falhe, o HDFS replica essas partes menores em mais dois servidores por padrão. (Essa redundância pode ser aumentada ou diminuída por arquivo ou para todo o ambiente. Por exemplo, um cluster Hadoop de desenvolvimento normalmente não precisa de redundância de dados.)

Essa redundância também permite que o cluster do Hadoop divida o trabalho em partes menores e execute esses trabalhos em todos os servidores do cluster para melhor escalabilidade. Finalmente, uma organização ganha o benefício da localidade dos dados, o que é crítico ao trabalhar com grandes conjuntos de dados.

O HDFS também pode habilitar a inteligência artificial (IA) e o aprendizado de máquina (ML) ao crescer de forma eficaz. Primeiro, para armazenar dados em quantidades grandes o suficiente para treinar modelos de ML, e depois para acessar esses enormes conjuntos de dados.

Qualquer organização que capture, armazene e use grandes conjuntos de dados (até petabytes) pode considerar o uso do HDFS. Alguns casos de uso baseados no setor mostram como o HDFS pode ser implementado.

  • Energia: ao usar unidades de medida fasorial (PMUs) para monitorar o desempenho de redes inteligentes em suas redes de transmissão, uma empresa de eletricidade pode acumular volumes de dados maciços, com milhares de registros por segundo. O HDFS pode ser o sistema de arquivos altamente disponível e econômico do qual precisam.

  • Saúde: o volume de registros médicos cresce a cada dia. Dados de equipamentos médicos e sensores de pacientes podem ser coletados e armazenados de maneira eficiente para tratamento mais responsivo e pesquisa.

  • Marketing: dados de sistemas de gerenciamento de relacionamento com o cliente (CRM) , sistemas de pontos de venda (PoS), respostas de campanhas e redes sociais (muitos deles são não estruturados), precisam ser coletados para análise e para orientar esforços de marketing futuros. Clusters do HDFS podem fornecer uma solução econômica para armazenar e analisar as grandes quantidades de dados gerados.

  • Petróleo e gás: um cluster do HDFS pode ajudar a unificar todos os dados que chegam em vários formatos, tornando-os disponíveis para análise de dados de big data. Isso pode incluir desde modelos 3D da Terra até vídeos, compras de clientes ou dados de sensores de equipamentos.

  • Varejo: para entender melhor seus clientes, os varejistas podem reunir e analisar dados de várias fontes. Isso inclui registros de vendas, interações de atendimento ao cliente e redes sociais, tanto dados não estruturados quanto estruturados, para desenvolver novas estratégias de envolvimento.

  • Telecomunicações: o HDFS pode ajudar empresas de telecomunicações a construir caminhos de rede robustos, realizar manutenção preditiva, indicar opções promissoras de expansão de rede e analisar o comportamento dos clientes.

A história do HDFS

A origem do Hadoop, segundo os cofundadores Mike Cafarella e Doug Cutting, foi um artigo sobre o Google File System, publicado em 2003. Um segundo artigo seguiu, "MapReduce: Simplified Data Processing on Large Clusters". O desenvolvimento de um mecanismo de busca inicial chamado Apache Nutch foi iniciado, mas depois o trabalho se transferiu com Doug Cutting para o Yahoo em 2006.

O nome Hadoop foi inspirado em um elefante de brinquedo pertencente ao filho de Cutting. (Daí o logotipo.) O código inicial do Hadoop foi amplamente baseado no Nutch, mas superou suas limitações de escalabilidade e continha as primeiras versões do HDFS e do MapReduce.

O pacote de programas no ecossistema Hadoop continua crescendo. Além do HDFS, há também:HBase (um banco de dados NoSQL), Mahout, Spark MLLib  (bibliotecas de algoritmos para aprendizado de máquina), MapReduce (processamento de dados baseado em programação), Oozie (agendador de tarefas), PIG e HIVE (serviços de processamento de dados baseados em consulta), Solar e Lucena (para pesquisa e indexação), Spark (processamento de dados, in-memory), YARN (Yet Another Resource Negotiator) e Zookeeper (coordenação de clusters).

O software de código aberto dentro do ecossistema Hadoop agora é gerido pela Apache Software Foundation1, uma comunidade mundial de desenvolvedores de software e contribuintes de software.

Soluções relacionadas
Software e soluções de gerenciamento de dados

Crie uma estratégia de dados que elimine silos de dados, reduza a complexidade e melhore a qualidade de dados para proporcionar experiências excepcionais para clientes e funcionários.

Explore soluções de gerenciamento de dados
IBM watsonx.data™

O watsonx.data permite escalar a análise de dados e a IA com todos os seus dados, onde quer que estejam, por meio de um armazenamento de dados aberto, híbrido e governado.

Conheça o watsonx.data
Serviços de consultoria de dados e análise de dados

Libere o valor dos dados empresariais com a IBM Consulting, construindo uma organização baseada em insights que ofereça vantagens para os negócios.

Conheça os serviços de análise de dados
Dê o próximo passo

Crie uma estratégia de dados que elimine silos de dados, reduza a complexidade e melhore a qualidade de dados para proporcionar experiências excepcionais para clientes e funcionários.

Explore soluções de gerenciamento de dados Conheça o watsonx.data
Notas de rodapé