Minha IBM Efetue login Inscreva-se
O que é o Hadoop Distributed File System (HDFS)?

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

Explore as soluções de dados em nuvem da IBM Inscreva-se para receber atualizações sobre IA
Ilustração com colagem de pictogramas de nuvens e um gráfico de pizza.

Atualizado em: 14 de junho de 2024
Colaborador: Jim Holdsworth

O que é o HDFS?

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 de commodities. 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 grandes volumes de dados de maneira eficiente com alta taxa de transferência, o HDFS pode ser usado como um pipeline de dados e é ideal para suportar análises de dados complexas.

O HDFS é construído em uma estrutura 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 banco de dados não relacional, orientado por colunas, que fica sobre o HDFS e pode dar melhor suporte a necessidades de dados em tempo real com seu motor de processamento em memória.

IA generativa e ML para empresas

Conheça os principais benefícios da IA generativa e como as organizações podem impulsionar seus negócios.

Conteúdo relacionado Registre-se para o ebook sobre armazenamento de dados de IA
Benefícios do HDFS

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 replicação de dados com várias cópias em diferentes 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 snapshots de armazenamento para salvar informações de ponto no tempo (PIT).

Acesso a dados em 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 geralmente de gigabytes a terabytes em tamanho. 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 em HDFS. Data warehouses também utilizaram o HDFS, embora agora com menos frequência, devido à complexidade percebida 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 suportar 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 cluster 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.

Arquitetura do HDFS e como funciona

Arquitetura do HDFS e como funciona

O HDFS tem uma arquitetura de diretor/trabalhador.

  • 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.

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.

Replicação de dados

Para fornecer armazenamento confiável, o HDFS armazena arquivos grandes 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

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 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 é essencial ao trabalhar com grandes conjuntos de dados.

O HDFS também pode habilitar inteligência artificial (IA) e aprendizado de máquina (ML) ao escalar 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 das redes inteligentes em suas redes de transmissão, uma empresa de eletricidade pode acumular enormes volumes de dados, com milhares de registros por segundo. O HDFS pode ser o sistema de arquivos altamente disponível e econômico de que 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 ponto de venda (PoS), respostas de campanhas e redes sociais, muitos deles não estruturados, precisam ser coletados para análise e para orientar esforços de marketing futuros. Clusters 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 HDFS pode ajudar a unificar todos os dados que chegam em vários formatos, tornando-os disponíveis para análises de big data. Isso pode incluir desde modelos tridimensionais 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 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 conjunto 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 and HIVE (serviços de processamento de dados baseados em consulta), Solar and Lucene (para busca e indexação), Spark (processamento de dados em memória), YARN (Yet Another Resource Negotiator) and Zookeeper (coordenação de cluster).

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

Soluções relacionadas

Um armazenamento de dados aberto, híbrido e governado

O watsonx.data agora está disponível: um repositório de dados desenvolvido em uma arquitetura aberta de data lakehouse para escalar cargas de trabalho de IA, para todos os seus dados, em qualquer lugar.

Explore o watsonx.data
Impulsione análises melhores e mais rápidas com soluções de big data da IBM.

A IBM e a Cloudera se uniram para oferecer uma distribuição Hadoop de nível corporativo líder no setor, incluindo um ecossistema integrado de produtos e serviços para suportar análises mais rápidas em escala.

Explore oportunidades de big data com a IBM
Recursos

Recursos

Trindade da plataforma de dados: competitiva ou complementar?

Pelo menos três diferentes soluções de plataforma de dados estão surgindo. Aprenda sobre a relação entre data lakehouse, malha de dados e data mesh.

Entendendo o big data além do agito

Leia esta introdução prática à próxima geração de arquiteturas de dados. Ela apresenta o papel das tecnologias de nuvem e NoSQL e discute os aspectos práticos de segurança, privacidade e governança.

O que é o Presto?

O Presto oferece às organizações de todos os tamanhos uma maneira rápida e eficiente de analisar big data de várias fontes, incluindo sistemas locais e a nuvem.

Dê o próximo passo

Escale cargas de trabalho de IA para todos os seus dados, em qualquer lugar, com o IBM watsonx.data, um armazenamento de dados feito sob medida, construído em uma arquitetura aberta de data lakehouse.

Explore o watsonx.data Agende uma demonstração em tempo real
Notas de rodapé

1 Apache Software Foundation (link fora de ibm.com)