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
Postar um comentário