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 três modos de instalação: local (standalone), pseudo-distribuído e totalmente distribuído. O primeiro é útil para o desenvolvimento e depuração do código, pois roda em um único computador como um processo Java.

Este é o modo que será adotado neste tutorial, entretanto, a instalação e configuração do modo local não será abordado neste artigo. Para mais informações sobre esses detalhes, consulte a seção Links.

Para melhorar a produtividade de desenvolvimento desse tipo de aplicação, é indicado o uso de um ambiente de desenvolvimento integrado (IDE) com o framework Hadoop.

A solução normalmente usada é o Eclipse, importando-se as bibliotecas do Hadoop, ou instalando-se um componente (plugin) no Eclipse que crie a estrutura de projetos Hadoop com todos os recursos necessários para esse fim.

A aplicação

A aplicação MapReduce construída neste artigo emprega bases de dados que estão relacionadas às provas do Enem. Sob responsabilidade do Ministério da Educação (MEC), o Enem (Exame Nacional do Ensino Médio) é uma prova que indica a média nacional das notas dos estudantes brasileiros, representando um indicador de avaliação do ensino médio no Brasil.

Todas as bases de dados do Enem estão disponíveis para acesso público, desde 1998, contendo as notas das provas aplicadas, informações socioeconômicas dos candidatos, características das escolas, e outras mais.

Nota: Criado em 1998, o Enem (Exame Nacional do Ensino Médio) avalia os estudantes do ensino médio. O exame não é obrigatório e podem participar alunos que estão concluindo ou que já concluíram o ens ...

Quer ler esse conteúdo completo? Seja um assinante e descubra as vantagens.
  • 473 Cursos
  • 10K Artigos
  • 100 DevCasts
  • 30 Projetos
  • 80 Guias
Tenha acesso completo