Por que eu devo ler este artigo:Este artigo, em forma de tutorial, demonstra o uso do framework Hadoop na IDE Eclipse. Combinados, estas soluções fornecem um ambiente produtivo para a construção de aplicações com MapReduce.

Deste modo, este artigo é útil para desenvolvedores de aplicações que podem ser modeladas com a técnica MapReduce, e onde tecnologias tradicionais de banco de dados não respondem de forma eficiente o processamento de dados cujo volume ultrapassa os terabytes de armazenamento.

MapReduce é um modelo de programação para processamento de grandes volumes de dados em paralelo, usando o poder computacional das tecnologias de redes de computadores e sistemas distribuídos.

Embora simples de entender, esse paradigma apresenta dificuldades quanto à modelagem e programação de sistemas, pois é necessário representar a solução em termos de apenas duas funções, uma para o mapeamento e outra para a redução dos dados.

Outra barreira encontrada é construir, implantar e testar uma aplicação usando uma infraestrutura que facilite o desenvolvimento desse tipo de software.

Atualmente, a tecnologia mais utilizada como implementação MapReduce é o framework Apache Hadoop, que fornece todo o ambiente de execução, tanto para testar (em menor escala e volume de dados) em uma máquina de desenvolvimento, quanto para pôr em operação aplicações que aproveitam o poder do processamento paralelo e distribuído dos dados.

Hadoop foi projetado para ser executado em uma rede de máquinas de baixo custo, utilizando o sistema operacional Linux. Em essência, ele possui dois componentes básicos: o HDFS e o MapReduce. O HDFS (Hadoop Distributed File System) é um sistema de arquivos distribuído, onde a grande massa de dados é quebrada em blocos (tipicamente 64Kbytes), para serem distribuídos e processados nas máquinas do cluster da rede.

Já o MapReduce representa o framework citado anteriormente, e responde pelo processamento paralelo e distribuído na rede. Para isso, devem ser programadas funções de mapeamento (map) e redução (reduce) que atuarão sobre os dados disponíveis no HDFS.

Há de se ressaltar que toda a complexidade envolvida na infraestrutura, como divisão dos blocos de dados, replicação dos blocos, integridade dos dados, recuperação e tratamentos para tolerância a falhas ficam sob responsabilidade do Hadoop, liberando o programador dessas preocupações e concentrando-se apenas nos algoritmos map e reduce.

Este artigo não pretende explorar detalhes da arquitetura Hadoop, muito menos aprofundar-se nas bases teóricas da técnica MapReduce. Tais informações já foram discutidas em edições anteriores da Java Magazine, como nos artigos “Big Data na plataforma Java” (edição 103) e “Hadoop: fundamentos e instalação” (edição 122), além de referências citadas na seção Links.

O objetivo é apresentar e configurar um ambiente para o desenvolvimento de uma aplicação MapReduce, o que vai permitir um ganho de produtividade na implementação e testes desse tipo de software.

Para o ambiente de desenvolvimento é proposto o uso do Eclipse, apoiado por um plugin que fornece o suporte à criação de projetos que usem o Apache Hadoop. Para demonstrar o emprego dessa instalação, será desenvolvida uma aplicação MapReduce para processar dados obtidos das bases do Exame Nacional do Ensino Médio (Enem), que irá calcular a média anual das notas para cada unidade da federação.

Pré-requisitos

Para realizar este tutorial, é necessário um computador com Linux, seja nativo ou rodando em uma máquina virtual (VMware ou VirtualBox, por exemplo). Em ambos os casos, recomenda-se que a memória principal tenha no mínimo 2 Gigabytes e espaço em disco suficiente para comportar as bases de dados e a instalação dos programas.

Para o exemplo aplicado neste artigo, foram utilizados aproximadamente trinta gigabytes de disco, a distribuição Linux foi a Ubuntu (versão 12), a versão do Apache Hadoop foi a 1.2 e o IDE Eclipse empregado foi o Kepler (versão 4.2).

Configuração do Hadoop

O Hadoop é indicado para tratar e analisar o que chamamos de “big data”, conceito que descreve o enorme volume de dados que não pode ser processado com as ferramentas tradicionais de banco de dados relacionais.

Também é útil em situações nas quais o tamanho das bases de dados não é relevante, mas o custo computacional de processá-los o é, como ocorre em aplicações científicas, em alguns algoritmos de mineração de dados, etc. Nestes casos, o processamento paralelo e distribuído presente na tecnologia permite a escalabilidade da solução.

O Hadoop fornece t ...

Fim do trecho gratuito • continue abaixo
CONTEÚDO EXCLUSIVO

Desbloqueie toda a DevMedia

  • +2000 artigos e vídeos
  • +40 trilhas sobre Front-end, Back-end, IA e muito mais
  • +5000 exercícios práticos
  • Mentorias ao vivo individuais
até 50% OFF
A partir de
R$ 69 /mês
Assinar agora