Professional Documents
Culture Documents
de Dados
TRABALHO PRTICO HADOOP
Introduo
O trabalho proposto o desenvolvimento de uma aplicao, que seja capaz
de processar um determinado tipo de dados definido pelo grupo, que
atravs do Hadoop, produzir um resultado processado. Ser necessrio o
desenvolvimento de funes Map e Reduce, bem como otimizaes,
nomeadamente o desenvolvimento de uma funo Combiner e a utilizao
de uma forma de encadeamento de jobs (job chaining).
Por opo do grupo, a aplicao a desenvolver ir correr sobre uma
instalao hadoop configurada em n pseudo-distribuido.
PGINA 1
Descrio do problema
O problema desenvolvido pelo grupo aborda o nmero de vezes que uma
pessoa vai ao ginsio durante a semana. Foram criados sete ficheiros,
correspondentes ao histrico de presenas num ginsio em cada dia da
semana. Com esta informao teve-se como objetivo:
1. Calcular o nmero de vezes que cada pessoa foi ao ginsio durante a
semana.
2. Apresentar a pessoa que mais vezes foi ao ginsio durante essa
mesma semana.
Soluo
1 Job:
PGINA 2
2 Job:
Este segundo job destina-se a realizar o segundo objetivo proposto e
contm tal como o primeiro job uma funo de map e uma de reduce.
PGINA 3
A funo de map mapeia os tokens para a funo de reduce, neste caso faz
o split por cada mudana de linha para um array (lines), iterando de
seguida sobre esse mesmo array e fazendo um novo split, desta vez por
cada tab presente, resultando num novo array (array) de dois elementos
que vo assumindo sucessivamente os valores do split por tab. A criao
deste split por tab foi necessria uma vez que o que recebido no mapper
atravs do output do reducer do primeiro job um par na forma <Text,
value> mas que no entanto no passa de um Text! Uma vez que no
segundo reducer queremos trabalhar com estes dados na forma <Text,
value> como sendo um par de valores, foi necessrio ento a
implementao deste split. Por cada iterao os dois elementos resultantes
do ltimo split so escritos para a varivel context que depois enviada
como input para a nossa prxima funo de reduce.
PGINA 4
Encadeamento
Tal como foi dito anteriormente, para concretizar o segundo objetivo
passou-se criao de um outro job, dividindo-se o problema em subtarefas, cada uma delas realizada por um job individual. Desta forma,
tornou-se possvel encadear os jobs. Este processo pode ser realizado de
diferentes formas. A forma utilizada consistiu na criao de dois jobs no
mesmo programa, fazendo com que o output do primeiro job fosse o input
do segundo, permitindo assim que se obtivesse a informao do primeiro
job, sobre a qual o segundo utilizou para verificar qual a pessoa que mais
vezes foi ao ginsio nessa semana, bem como o nmero de vezes que essa
pessoa esteve no ginsio durante a semana. Utilizou-se o objeto JobControl,
para permitir a interligao dos jobs programaticamente. O Objecto
JobControl aceita instncias de ControlledJob, o qual define um job mais as
suas dependncias, automaticamente interligando os outputs com os
inputs necessrios.
PGINA 5
PGINA 6
Figura 7-JobControl
PGINA 7
PGINA 8
PGINA 9