Big Data Hadoop: Facilitando a construção de aplicações

Veja nesse artigo como facilitar a construção de aplicações da nova geração com MapReduce, Big Data e o Hadoop.

Fique por dentro
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."

[...] continue lendo...

Artigos relacionados