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

Postagens mais visitadas deste blog

Hive, o que é ?

O que é o HBASE ?