Por que eu devo ler este artigo:Este artigo é útil para usuários do framework Apache Hadoop que desenvolvem, através de suas bibliotecas para MapReduce, estratégias para processamento paralelo. Muitos desses usuários gostam de como a execução dos programas MapReduce é gerenciada dentro do Hadoop, porém entendem que poderiam escrever códigos de maneiras mais simples e, principalmente, mais flexíveis quanto às alternativas hoje existentes no framework.

Com base nisto, será apresentado neste artigo o Apache Crunch, que não serve apenas para desenvolver uma solução MapReduce, mas também pipelines completos que encadeiem vários passos maps e reduces combinados, com o objetivo de atender a necessidade do problema a ser resolvido.

Para isto, há uma introdução geral sobre a biblioteca Crunch, bem como o seu funcionamento na teoria e, para finalizar, é abordada uma parte prática resolvendo clássicos problemas didáticos para o tema de Big Data, como contadores de acessos ou de palavras repetidas para uma grande entrada de dados (arquivos de texto, por exemplo).

Atualmente o termo Big Data está cada vez mais presente nas discussões de soluções rápidas e distribuídas para armazenamento e processamento de grandes volumes de dados.

De forma complementar a este conceito, hoje existem diferentes maneiras para se descobrir quando um conjunto de dados é realmente grande para ser considerado Big Data, o que é muito importante, pois não faz sentido utilizar um grande conjunto de ferramentas que necessitam de muito poder de processamento e hardware sem ter a certeza do tamanho dos dados que se está lidando.

Bons exemplos de sistemas que costumam originar ou trabalhar com essa quantidade de informações são os sistemas de meteorologia ou de análise de dados de redes sociais.

Pensando no armazenamento de grandes quantidades de dados (em alguns casos, que estão em constante crescimento), também já existem diversas opções disponíveis, como é o caso dos bancos de dados NoSQL. Porém, não basta conhecer a origem e saber como armazenar e/ou recuperar o chamado Big Data, é necessário, também, saber processá-lo. A partir desse processamento, torna-se mais fácil extrair informações, comportamentos e tendências.

No entanto, para chegar a esse ponto é fundamental compreender os dados, pois somente dessa forma eles se tornam informações úteis. Os bancos de dados de uma determinada empresa, por exemplo, podem conter todas as respostas para indicar caminhos e soluções antes impossíveis de se imaginar sem o uso de ferramentas de processamento de grandes volumes de dados.

A partir delas, a única coisa que precisa ser feito é perguntar (processar), de maneira correta, eficiente e objetiva, o que se quer saber das fontes de dados.

Neste contexto, o MapReduce é uma das formas mais eficientes de se processar nossos grandes depósitos de dados. E o artigo apresentará, exatamente, os conceitos do MapReduce baseado no seu framework mais famoso, o Hadoop, e posteriormente demonstrará como seu funcionamento e utilização podem se tornar mais fáceis e agradáveis com a introdução da biblioteca Apache Crunch.

MapReduce

O MapReduce foi definido em um dos papers do Google, escrito em 2004 por Jeffrey Dean e Sanjay Ghemawat, como um modelo de programação e uma implementação associada ao processamento e a geração de grandes conjuntos de dados.

Em resumo, é um paradigma de programação para processar grandes entradas de dados, atribuindo valor significativo a sua saída (as respostas citadas anteriormente). Uma característica extremamente poderosa desse paradigma é que sua arquitetura torna fácil o entendimento e a visualização de processos que funcionam de forma serial para que possam ser desenvolvidos para funcionar de forma paralela.

De maneira macro, o framework Apache Hadoop provê alternativas para se lidar com grandes quantidades de dados, possuindo um sistema de arquivos distribuído (o HDFS) e um framework de processamento MapReduce que, para ser posto em funcionamento, é necessário apenas que o desenvolvedor especifique uma função map (responsável por transformar os dados de entrada em uma estrutura que faça sentido ao negócio em questão e/ou facilite o processo subsequente) e outra reduce (responsável por conhecer a estrutura criada pela função map realizando uma espécie de filtragem/agrupamento dos dados para gerar valor à informação, ou seja, fornecer o resultado esperado pelo processo).

A partir daí o framework faz o resto, como quebrar e distribuir os dados de entrada, executar os vários mappers e reducers e, por fim, sumarizar e armazenar os resultados finais. É exatamente nesse ponto que é possível inserir a biblioteca Apache Crunch.

Nesse momento um desenvolvedor já familiarizado com a engine de MapReduce do Hadoop pode questionar o porquê da necessidade de uma nova biblioteca para auxiliar a escrita de programas MapReduce. A resposta a essa pergunta será dada no decorrer do artigo, conforme o Crunch é apresentado. Vale a pena acompanhar!

Como já é conhecido, o MapReduce fornece uma ótima abstração, porém ele pode ficar ainda melhor. Atualmente é necessária uma quantidade de código relativamente grande para implementar coisas simples com MapReduce, e muitos desenvolvedores entendem que devido a isso ele é um pouco ...

Quer ler esse conteúdo completo? Tenha acesso completo