O framework Cascading

Nos posts anteriores vimos que um dos grandes diferenciais da plataforma Hadoop é a sua capacidade de armazenar e tratar enormes quantidades de dados estruturados e não estruturados, mas para que estes dados tenham valor precisam ser refinados e analisados de acordo com as necessidades da companhia. Como opções para processamento de dados nesta plataforma, já abordamos o MapReduce, o Hive, o HBase, etc, cada um tendo um perfil de uso específico e necessitando de competências diferenciadas por parte da equipe de desenvolvimento e suporte.



No caso da utilização do MapReduce, muitas vezes existe um certo grau de dificuldade por parte dos desenvolvedores para traduzir os requisitos de negócios da empresa para programas em MapReduce, que trabalham tipicamente com chaves e valores e dois tipos básicos de lógica (mapear e reduzir). Visando criar um novo nível de abstração e facilitar o processamento de dados no ambiente Hadoop, foi criado o framework Cascading ( http://www.cascading.org ), que utiliza também a linguagem Java. O Cascading utiliza a noção de fluxo de trabalho, uma vez que as aplicações reais tendem a utilizar uma série de “jobs”, que normalmente são conectados e tem dependência entre si.




No framework Cascading as chaves e valores são traduzidas para “Fields” e “Tuples”. Tuples são similares às linhas em tabelas de bancos de dados relacionais, chamadas inicialmente de Tuplas. Fields são como nome de colunas. Ao invés de utilizar programas Map e Reduce, utilizamos o conceito de “Pipes” de processamento, no qual encadeamos diversos pipes com funcionalidades distintas. Quanto aos tipos de “Pipe” temos “Each”, “GroupBy”, “CoGroup” (que é similar a um join), “Every” e “SubAssembly”. Com essas operações básicas o desenvolvedor pode criar um “Pipe” de processamento bastante complexo, mas fácil de escrever e manter. Cada um dos pipes pode ter operações associadas, que podem ser do tipo “Function”, “Filter”, “Aggregator” ou “Buffer”.



A figura abaixo extraída do livro Hadoop, The Definitive Guide, de Tom White, mostra um pipe de processamento usando Cascading.




Além destes conceitos, o framework Cascading trabalha com “Taps” e “Schemes”. “Taps” mapeiam as entradas e saídas (HDFS, Local, Amazon S3, etc) e “Schemes” mapeiam os dados brutos para as Tuplas e vice-versa.



No site do projeto Cascading existem uma série de guias e programas exemplo que facilitam bastante o entendimento e uso do framework, que traz grande flexibilidade ao desenvolvimento de aplicações no ambiente Hadoop.  Para acessar estes recursos use a URL  http://www.cascading.org/documentation/ .

No próximo post vamos falar do Pattern, que é um dos subprojetos do Cascading, voltado para realização de Análises Preditivas.





Comentários

Postagens mais visitadas deste blog

Hive, o que é ?

O que é o HDFS ?

O que é o HBASE ?