Esse tema é útil para profissionais interessados em desenvolver programas nos quais o uso de consultas e processamentos com MapReduce seja constante, buscando de alguma forma minimizar a dificuldade da sua utilização sem sacrificar a performance no processo.
O tema também é interessante para desenvolvedores que buscam conhecer um pouco mais do poder que as novas ferramentas de Big Data da Apache podem trazer para suas aplicações.
Podemos dizer que, nos últimos anos, o estudo e entendimento de toda a temática que envolve o campo de Big Data vem sendo uma das áreas com mais oportunidades, tanto acadêmicas como profissionais, no mercado.
O surgimento de tecnologias para o processamento de dados em larga escala revolucionou a maneira que tratamos nossas informações e trouxe, a todas as empresas, um desafio (e oportunidade) extra para suas áreas de TI.
Dentre essas tecnologias, podemos destacar o famoso projeto da Apache chamado Apache Hadoop. O Hadoop ganhou bastante popularidade entre os desenvolvedores, pois permite a construção de plataformas extremamente performáticas e escaláveis, ideais para o processamento de grandes quantias de dados, sem trazer consigo o custo de adquirir “supermáquinas”.
Juntamente com esse projeto, a fundação Apache aproveitou o poder de processamento da arquitetura introduzida pelo Hadoop e criou, com base em suas bibliotecas, diversos outros projetos para auxiliar e introduzir novas funcionalidades aos desenvolvedores. Entre esses, iremos abordar, nesse artigo, o bastante interessante Apache Pig.
O Apache Pig, conforme dissemos, é um projeto da Apache que visa facilitar aos desenvolvedores a manipulação de dados e a realização de consultas em um ambiente de Big Data criado dentro do Hadoop.
Através da introdução de uma linguagem própria, denominada Pig Latin, o Pig remove as barreiras que a linguagem complicada do MapReduce possui com uma sintaxe simples e de fácil utilização, aumentando, consequentemente, a produtividade dos projetos em que é empregado.
Tamanha é essa vantagem que, hoje em dia, podemos citar diversos gigantes da computação que incluem o Apache Pig em sua arquitetura. Apenas citando alguns exemplos, o LinkedIn faz uso do Apache Pig para a funcionalidade “Pessoas que talvez você conheça”, o AOL utiliza para realizar suas análises de dados e o Yahoo! o adota para auxiliar no processo de busca de seus sites.
Além dessas, o Apache Pig é utilizado em diversos outros sistemas (veja a seção Links) e se mostra como uma das tecnologias mais empregadas no campo de análise de dados.
Com tantas vantagens, introduziremos nesse artigo alguns dos caminhos que você, desenvolvedor, pode tomar para trazer esses benefícios à sua aplicação, utilizando a linguagem Java e introduzindo a funcionalidade do MapReduce ao seu projeto.
Ao final desse estudo, pretendemos, também, mostrar um caso real onde a tecnologia do Apache Pig é empregada para o processamento e análise de dados.
Introdução sobre o Hadoop e o MapReduce
Antes de começarmos a entender o funcionamento do Apache Pig, precisamos conhecer um pouco mais sobre a plataforma do Apache Hadoop, na qual ele foi construído. Criado em 2005, o Hadoop foi um dos grandes pioneiros no processamento de grandes volumes de dados, trazendo diversas inovações para o campo de Big Data.
Essas soluções, em sua grande maioria, se baseiam no conceito de MapReduce, um modelo de programação implementado pelo Apache Hadoop que nos permite que os dados e informações sejam manipulados em paralelo, com grande eficiência em ambientes distribuídos e ao trabalhar com grandes quantidades de dados.
Por sua vez, essa eficiência é possível graças ao comportamento do processamento dentro do Hadoop, que divide as tarefas de MapReduce em três fases principais: Map, onde o arquivo a ser processado é dividido em pares de chave e valor de acordo com o seu conteúdo; Group, onde os conjuntos de tuplas (pares de dados) são agrupados de acordo com o valor de suas chaves; e a fase final Reduce, que executará uma tarefa de redução para cada agrupamento gerado na fase anterior, transformando-os em um único resultado final.
Por fim, o Apache Hadoop também traz a implementação do HDFS, um sistema de arquivos distribuído que permite a distribuição de dados entre diversas máquinas tradicionais, ou seja, não traz a necessidade de máquinas caras para a construção de clusters de processamento e armazenagem de dados.
Motivação para criação do Apache Pig
Em contrapartida a esses benefícios, no entanto, alguns pontos da implementação de sistemas utilizando MapReduce se tornaram extremamente complicados e trouxeram algumas preocupações aos desenvolvedores e, principalmente, às empresas que decidiram adotar essa tecnologia.
O primeiro desses pontos é a alta complexidade da elaboração de uma tarefa de MapReduce que funcione bem em um ambiente distribuído. Como demonstramos anteriormente, as três fases que compõem o processamento de uma tarefa de MapReduce exigem um cuidado especial ao dividir e formatar o documento de origem, bem como as tarefas de Reduce, que necessitam ser previamente planejadas. Uma tarefa MapReduce má otimizada pode, simplesmente, neutralizar todas as vantagens trazidas pelo Hadoop.
O segu ...