Sistema de arquivos distribuído do Apache Hadoop projetado para armazenar grandes volumes de dados em clusters de commodity hardware.
O HDFS (Hadoop Distributed File System) é o sistema de arquivos distribuído do Apache Hadoop, projetado para armazenar grandes volumes de dados de forma confiável em clusters de commodity hardware. É otimizado para throughput alto e funciona melhor com arquivos grandes, sendo tolerante a falhas de hardware.
O HDFS foi inspirado no Google File System (GFS) e foi desenvolvido como parte do projeto Apache Hadoop em 2006. Foi criado por Doug Cutting e Mike Cafarella para suportar o processamento distribuído de grandes datasets. Desde então, tornou-se o padrão de facto para armazenamento distribuído no ecossistema Hadoop.
O HDFS segue uma arquitetura master/slave com um NameNode (master) que gerencia os metadados do sistema de arquivos e múltiplos DataNodes (slaves) que armazenam os dados reais. Os arquivos são divididos em blocos (padrão 128MB) e replicados em múltiplos DataNodes para garantir tolerância a falhas.
Replica automaticamente blocos de dados em múltiplos DataNodes para garantir durabilidade.
Monitora constantemente a saúde dos DataNodes e recupera automaticamente de falhas.
Distribui dados uniformemente pelo cluster para otimizar utilização de storage.
Permite criar snapshots point-in-time do sistema de arquivos para backup e recovery.
Tamanho de Bloco Padrão: | 128 MB |
Fator de Replicação Padrão: | 3 |
Tamanho Máximo de Arquivo: | Limitado apenas pelo espaço disponível |
Número Máximo de Arquivos: | Limitado pela memória do NameNode |
Protocolos Suportados: | HTTP, RPC, WebHDFS |
Armazenamento central para grandes volumes de dados estruturados e não estruturados.
Exemplo: Empresas armazenam logs, dados de sensores e arquivos de mídia para análise posterior.Base de armazenamento para jobs MapReduce e Spark que processam grandes datasets.
Exemplo: ETL de dados de vendas diárias para relatórios mensais.Armazenamento de longo prazo para dados históricos e backups de sistemas críticos.
Exemplo: Bancos armazenam transações históricas para compliance regulatório.# Download Hadoop
wget https://downloads.apache.org/hadoop/common/hadoop-3.3.6/hadoop-3.3.6.tar.gz
tar -xzf hadoop-3.3.6.tar.gz
cd hadoop-3.3.6
# Configurar variáveis de ambiente
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk
export HADOOP_HOME=/opt/hadoop-3.3.6
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
# core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://namenode:9000</value>
</property>
</configuration>
# hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/opt/hadoop/data/namenode</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/opt/hadoop/data/datanode</value>
</property>
</configuration>
# Formatar o NameNode (apenas primeira vez)
hdfs namenode -format
# Iniciar HDFS
start-dfs.sh
# Comandos básicos
hdfs dfs -mkdir /user/data
hdfs dfs -put local-file.txt /user/data/
hdfs dfs -ls /user/data/
hdfs dfs -cat /user/data/local-file.txt
hdfs dfs -get /user/data/local-file.txt downloaded-file.txt
# Verificar saúde do cluster
hdfs dfsadmin -report
hdfs fsck /user/data/ -files -blocks
Tecnologia | Performance | Facilidade de Uso | Comunidade | Licença |
---|---|---|---|---|
HDFS | ★★★☆☆ | ★★☆☆☆ | ★★★★★ | Apache 2.0 |
MinIO | ★★★★☆ | ★★★★☆ | ★★★☆☆ | Apache 2.0 |
Ceph | ★★★★☆ | ★★☆☆☆ | ★★★☆☆ | LGPL |
Amazon S3 | ★★★★★ | ★★★★★ | ★★★★★ | Commercial |
Escolha HDFS se você já tem um ecossistema Hadoop estabelecido e precisa de armazenamento distribuído para processamento batch. Para novos projetos, considere alternativas mais modernas como MinIO ou soluções cloud-native.