O que é o HDFS ?
O HDFS (Hadoop Distributed File System) é um sistema de
arquivos distribuído, projetado para armazenar arquivos muito grandes, com padrão de acesso aos dados streaming ,
utilizando clusters de servidores facilmente encontrados no mercado e de baixo
ou médio custo. Não deve ser utilizado
para aplicações que precisem de acesso rápido a um determinado registro e sim
para aplicações nas quais é necessário ler uma quantidade muito grande de
dados. Outra questão que deve ser
observada é que não deve ser utilizado para ler muitos arquivos pequenos, tendo
em vista o overhead de memória envolvido.
O HDFS possui o conceito de blocos, tal como no Unix, mas
seus blocos normalmente têm tamanho de 64MB.
Um arquivo muito grande pode ter blocos armazenados em mais de um
servidor. Com este conceito de blocos
de tamanho fixo fica mais fácil calcular as necessidades de armazenamento.
O HDFS tem 2 tipos de Nós :
Master (ou Namenode) e Worker (ou Datanode). O Master armazena informações da distribuição
de arquivos e metadados. Já o Worker armazena os dados propriamente ditos. Logo o Master precisa sempre estar
disponível. Para garantir a
disponibilidade podemos ter um backup ( similar ao Cold Failover ) ou termos um
Master Secundário em um outro servidor.
Nesta segunda opção, em caso de falha do primário, o secundário pode
assumir o controle muito rapidamente.
Tal como um sistema Unix, é possível utilizar o HDFS
via linha de comando. Para saber a lista de comandos digite hadoop
fs -help. É possível criar diretórios (mkdir), listar diretório (ls) , copiar
arquivos (copyFromLocal, copyToLocal), permissionamento de arquivos e
diretórios, etc.
A classe java abstrata org.apache.hadoop.fs.Filesystem pode
ser implementada de forma concreta usando o HDFS, FTP, S3 (Amazon Native), S3 (block-based),
etc. Utilizando programas simples em
java também é possível listar arquivos, diretórios, copiar arquivos, ler dados,
gravar dados, etc.
A figura abaixo, extraída do livro Hadoop The Definitive Guide de Tom White, mostra como é realizada a
leitura de um arquivo no HDFS.
Como vimos no post anterior do dia 09 de Julho é possível, ao invés de armazenar
os dados em um HDFS na própria empresa ou residência, armazenar na nuvem em um
provedor que possa ter a melhor relação custo benefício e maior disponibilidade
possível, tal como a Amazon Web Services
(aws.amazon.com).
A AWS oferece um
conjunto completo de serviços de aplicativos e
infraestrutura que permitem que você execute praticamente tudo na nuvem:
desde aplicativos empresariais e projetos de Big Data a jogos sociais e
aplicativos móveis.
Grandes empresas como SAP,
Adobe, Netflix e Nasdaq já usam os serviços de computação na nuvem da
Amazon.
A Netflix mantém um blog de tecnologia ( techblog.netflix.com
), no qual explica com detalhes como utiliza o Hadoop, tendo como meio de
armazenamento o Amazon Simple Storage Service.
No próximo post
vamos abordar o Hive.
Comentários
Postar um comentário