domingo, 6 de outubro de 2013

Mineração de Dados - Arquitetura do Hadoop

Na postagem anterior, instalamos o Hadoop que é uma plataforma para o fornecimento de armazenamento distribuído e capacidades computacionais. O Hadoop foi concebido para corrigir o problema de escalabilidade que existia na Nutch um pesquisador e rastreador de código aberto. Nessa época a Google havia publicado diversos artigos que descreviam um problema com o sistema de arquivos distribuídos, o GFS (Google File System) e o MapReduce, uma estrutura computacional para o processamento em paralelo.

A implementação bem sucedida desses papéis do Nutch resultou em dois projetos separados, o segundo se tornou o Hadoop, e foi criado como um projeto da Apache.

Componentes do Hadoop

HDFS é o componente de armazenagem de Hadoop. Um sistema de arquivos distribuído é modelado com base no GFS. HDFS é otimizado para um alto rendimento e funciona melhor quando a leitura/escrita e realizada em arquivos grandes (gigabytes e maiores). Para suportar esta transferência o HDFS aproveita grandes (para um sistema de arquivos) tamanhos de bloco e otimizações pesquisa de dados para reduzir o I/O de rede.

Escalabilidade e disponibilidade são também características chaves do HDFS, conseguida em parte devido à replicação dos dados e da tolerância a falhas. HDFS é tolerante a falhas de software e hardware, e automaticamente replica os blocos de dados dos nós que falharam.

MapReduce é um framework de computação distribuídos baseada em lote (batch). Permite paralelizar o trabalho ao longo de uma grande quantidade de dados brutos, tais como combinar web logs com dados relacionais de um banco de dados OLTP para o modelo como os usuários interagem com o site. Este tipo de trabalho poderia levar vários dias ao utilizar as técnicas convencionais de programação em série, porém, é reduzido a poucos minutos.

O modelo MapReduce simplifica o processamento em paralelo ao abstrair as complexidades envolvidas no trabalho com sistemas distribuídos, como a paralelização computacional, a distribuição do trabalho e ao lidar com hardware/software confiáveis. Com essa abstração, o MapReduce permite que o programador se concentre em atender às necessidades de negócios, ao invés de perder tempo em complicações de um sistema distribuído.

Arquivos de Configuração do Hadoop

  • hadoop-env.sh - configurações específicas do ambiente. Na instalação configuramos o JAVA_HOME. Também podemos especificar opções da JVM para vários componentes do Hadoop, personalizar os diretórios e os locais dos arquivos do master e dos slaves.
  • core-site.xml - contém os itens de configuração do Hadoop ao nível do sistema, como a URL do HDFS, o diretório temporário e os locais de script de suporte de reconhecimento de clusters.
  • hdfs-site.xml - configurações como o total de replicação de arquivos, tamanho do bloco, e quais permissões são aplicadas.
  • mapred-site.xml - configurações como o número padrão para a redução de tarefas, padrão mínimo/máximo de tamanhos de memória e execução especulativa.
  • masters - lista com os hosts que estão no servidor. Devemos ter cuidado pois ao iniciar o Hadoop é lançado o NameNode e JobTracker no host local a partir do qual emitimos o start, e em seguida o SSH para todos os nós que estão neste arquivo para iniciar um SecondaryNameNode.
  • slaves - lista com os hosts que são escravos do Hadoop. Ao iniciar o Hadoop é localizado o SSH de cada host neste arquivo e lançado os DataNode e TaskTracker daemons.

Agora que já entendemos o que é o Hadoop e como funciona seu mecanismo podemos partir para novas atividades em breve.

Obrigado e até a próxima
Fernando Anselmo

PS.
Conheça mais sobre o GFS em http://research.google.com/archive/gfs.html.
Conheça mais sobre o MapReduce em http://research.google.com/archive/
mapreduce.html.

0 comentários:

Postar um comentário