You are on page 1of 86

Apache

Conceitos tericos e prticos,


evoluo e novas possibilidades

Prof. Dr. Alfredo Goldman


Prof. MS. Ivanilton Polato
By Alfredo Goldman, Fabio Kon, Francisco Pereira Junior, Ivanilton Polato e Rosngela de Ftima Pereira. These slides are licensed
under the Atribuio-Uso no-comercial-Compartilhamento pela mesma licena 3.0 Brasil Licence (CC BY-NC-SA 3.0)
Hadoop: conceitos tericos e prticos,
XXXII CSBC 2012 XXX JAI 2
evoluo e novas possibilidades

Autores
Dr. Alfredo Goldman
Professor DCC IME/USP
Dr. Fabio Kon
Professor DCC IME/USP
Ms. Francisco Pereira Junior
Professor UTFPR-CP
Doutorando DCC IME/USP
Ms. Ivanilton Polato
Professor UTFPR-CM
Doutorando DCC IME/USP
Esp. Rosangela de Ftima Pereira
Professora UTFPR-CP
Hadoop: conceitos tericos e prticos,
XXXII CSBC 2012 XXX JAI 3
evoluo e novas possibilidades

Roteiro
Motivao
Origens do Hadoop e Apache Hadoop
Vantagens e Desvantagens
O universo Hadoop
Sistema de Arquivos HDFS
O paradigma MapReduce
Exemplos e prticas
Hadoop: conceitos tericos e prticos,
XXXII CSBC 2012 XXX JAI 4
evoluo e novas possibilidades

Motivao
Uso potencial de aplicaes BigData
Conjuntos de dados na ordem de petabytes
Computao intensiva sobre os dados
Computao paralela no trivial
Diviso das subtarefas
Escalonamento das subtarefas
Balanceamento de carga
Hadoop: conceitos tericos e prticos,
XXXII CSBC 2012 XXX JAI 5
evoluo e novas possibilidades

Motivao
Apache Hadoop
Retira a complexidade na computao de alto
desempenho
Custo eficiente
Mquinas comuns
Rede comum
Tolerncia a falhas automtica
Poucos administradores
Facilidade de Uso
Poucos programadores
Hadoop: conceitos tericos e prticos,
XXXII CSBC 2012 XXX JAI 6
evoluo e novas possibilidades

Hadoop
Arcabouo para processamento e
armazenamento de dados em larga escala:
Cdigo aberto
Implementado em Java
Inspirado no GFS e MapReduce da Google
Projeto principal da Fundao Apache
Tecnologia recente, porm j muito utilizada
Hadoop: conceitos tericos e prticos,
XXXII CSBC 2012 XXX JAI 7
evoluo e novas possibilidades

Histrico

***http://nutch.apache.org/
***http://labs.google.com/papers/mapreduce.html
***http://labs.google.com/papers/gfs.html
Hadoop: conceitos tericos e prticos,
XXXII CSBC 2012 XXX JAI 8
evoluo e novas possibilidades

Como originou?
2003: Google publica artigo do GFS
2004: Google publica artigo do MapReduce
2005: Doug Cutting cria uma verso do
MapReduce para o projeto Nutch
2006: Hadoop se torna um projeto independente
da Fundao Apache
Hadoop: conceitos tericos e prticos,
XXXII CSBC 2012 XXX JAI 9
evoluo e novas possibilidades

Como originou?
2007: Yahoo se torna a maior contribuinte do
projeto
2008: Hadoop se transforma em um projeto
principal da Apache
2011: Apache disponibiliza verso 1.0.0
Hadoop: conceitos tericos e prticos,
XXXII CSBC 2012 XXX JAI 10
evoluo e novas possibilidades

Quem utiliza?
Hadoop: conceitos tericos e prticos,
XXXII CSBC 2012 XXX JAI 11
evoluo e novas possibilidades

Onde utilizar?
DataWarehouse
Business Intelligence
Aplicaes analticas
Mdias sociais
Hadoop: conceitos tericos e prticos,
XXXII CSBC 2012 XXX JAI 12
evoluo e novas possibilidades

Muitas possibilidades...
Hadoop: conceitos tericos e prticos,
XXXII CSBC 2012 XXX JAI 13
evoluo e novas possibilidades

Vantagens
Por que usar Hadoop?
Cdigo aberto
Econmico
Robusto
Escalvel
Foco na regra de negcio
Hadoop: conceitos tericos e prticos,
XXXII CSBC 2012 XXX JAI 14
evoluo e novas possibilidades

Vantagens (1)
Cdigo Aberto
Comunidade ativa
Apoio de grandes corporaes
Maiores correes de erros
Constante evoluo do arcabouo
Hadoop: conceitos tericos e prticos,
XXXII CSBC 2012 XXX JAI 15
evoluo e novas possibilidades

Vantagens (2)
Econmico
Software livre
Uso de mquinas e redes convencionais
Aluguel de servios disponveis na nuvem
Exemplo: Amazon Elastic MapReduce
Hadoop: conceitos tericos e prticos,
XXXII CSBC 2012 XXX JAI 16
evoluo e novas possibilidades

Vantagens (3)
Robusto
Se em 1 mquina h probabilidade de haver
falhas...
Tempo mdio entre falhas para 1 n: 3 anos
Tempo mdio entre falhas para 1000 ns: 1 dia
Hadoop proporciona alta tolerncia a falhas
Estratgias
Replicao dos dados
Armazenamento de metadados
Hadoop: conceitos tericos e prticos,
XXXII CSBC 2012 XXX JAI 17
evoluo e novas possibilidades

Vantagens (4)
Escalvel
Permite facilmente adicionar mquinas ao
aglomerado
Adio no implica na alterao do cdigo-
fonte
Limitao apenas relacionada a quantidade de
recursos disponveis
Hadoop: conceitos tericos e prticos,
XXXII CSBC 2012 XXX JAI 18
evoluo e novas possibilidades

Vantagens (5)
Foco na regra de negcio
Hadoop realiza o "trabalho duro
Desenvolvedores podem focar apenas na
abstrao do problema
Hadoop: conceitos tericos e prticos,
XXXII CSBC 2012 XXX JAI 19
evoluo e novas possibilidades

Desvantagens (1)
nico n mestre
Ponto nico de falha
Pode impedir o escalonamento
Hadoop: conceitos tericos e prticos,
XXXII CSBC 2012 XXX JAI 20
evoluo e novas possibilidades

Desvantagens (2)
Dificuldade das aplicaes paralelas
Problemas no paralelizveis
Processamento de arquivos pequenos
Muito processamento em poucos dados
Hadoop: conceitos tericos e prticos,
XXXII CSBC 2012 XXX JAI 21
evoluo e novas possibilidades

Suposies de Projeto (1)


Os dados que sero processados no cabem em
um n
Cada n hardware comum
Falhas acontecem

Ideias e Solues do Apache Hadoop:


Sistema de arquivos distribudo
Replicao interna
Recuperao de falhas automtica
Hadoop: conceitos tericos e prticos,
XXXII CSBC 2012 XXX JAI 22
evoluo e novas possibilidades

Suposies de Projeto (2)


Mover dados caro
Mover computao barato
Computao distribuda fcil

Ideias e Solues do Apache Hadoop:


Mover a computao para os dados
Escrever programas que so fceis de se distribuir
Hadoop: conceitos tericos e prticos,
XXXII CSBC 2012 XXX JAI 23
evoluo e novas possibilidades

Google MapReduce
O modelo inicial proposto pelo Google apresentou alguns
conceitos para facilitar alguns problemas
Paralelizao da computao em um aglomerado de
mquinas comuns
Centenas/Milhares de CPUs
Paralelizao e distribuio automtica da computao
deveria ser o mais simples possvel
O sistema de execuo se encarrega de:
Particionar e distribuir os dados de entrada
Escalonar as execues em um conjunto de mquinas
Tratar as falhas
Comunicao entre as mquinas
Hadoop: conceitos tericos e prticos,
XXXII CSBC 2012 XXX JAI 24
evoluo e novas possibilidades

Subprojetos
Principais
Hadoop Common
Hadoop Distributed File System (HDFS)
Hadoop MapReduce
Hadoop: conceitos tericos e prticos,
XXXII CSBC 2012 XXX JAI 25
evoluo e novas possibilidades

O Hadoop Common
O Hadoop Common oculta o que os
usurios comuns no precisam saber!
Paralelizao automtica
Balanceamento de carga
Otimizao nas transferncias de disco e rede
Tratamento de falhas
Robustez
Escalabilidade
Hadoop: conceitos tericos e prticos,
XXXII CSBC 2012 XXX JAI 26
evoluo e novas possibilidades

Outros Subprojetos
Avro Seriao de dados
Chukwa Monitoramento de SD
Hbase BD distribudo e escalvel
Hive Infraestrutura de
datawarehouse
Pig Linguagem de fluxo de dados
ZooKeeper Coordenao de
servios
Hadoop: conceitos tericos e prticos,
XXXII CSBC 2012 XXX JAI 27
evoluo e novas possibilidades
Hadoop: conceitos tericos e prticos,
XXXII CSBC 2012 XXX JAI 28
evoluo e novas possibilidades

Componentes do Hadoop
N Mestre:
NameNode
DataNode
SecondaryNameNode
N(s) Escravo(s):
JobTracker
TaskTracker
Hadoop: conceitos tericos e prticos,
XXXII CSBC 2012 XXX JAI 29
evoluo e novas possibilidades

Componentes do Hadoop
NameNode
Gerencia os metadados dos arquivos
FSImage e EditLog
Controla a localizao das rplicas
Encaminha os blocos aos ns escravos
Mantm as informaes em memria
Hadoop: conceitos tericos e prticos,
XXXII CSBC 2012 XXX JAI 30
evoluo e novas possibilidades

Componentes do Hadoop
DataNode
Realiza o armazenamento dos dados
Permite armazenar diversos blocos
Deve se comunicar com o NameNode
Hadoop: conceitos tericos e prticos,
XXXII CSBC 2012 XXX JAI 31
evoluo e novas possibilidades

Componentes do Hadoop
SecondaryNameNode
N auxiliar do HDFS
Realiza pontos de checagem em
intervalos pr-definidos
Permite manter o nvel de desempenho
do NameNode
Hadoop: conceitos tericos e prticos,
XXXII CSBC 2012 XXX JAI 32
evoluo e novas possibilidades

Componentes do Hadoop
JobTracker
Gerencia o plano de execuo de tarefas
MapReduce
Designa as tarefas aos ns escravos
Monitora a execuo das tarefas, para
agir no caso de falhas
Hadoop: conceitos tericos e prticos,
XXXII CSBC 2012 XXX JAI 33
evoluo e novas possibilidades

Componentes do Hadoop
TaskTracker
Realiza o processamento das tarefas
MapReduce
Uma instncia em cada n escravo
Hadoop: conceitos tericos e prticos,
XXXII CSBC 2012 XXX JAI 34
evoluo e novas possibilidades

Resumindo...
Hadoop: conceitos tericos e prticos,
XXXII CSBC 2012 XXX JAI 35
evoluo e novas possibilidades

NameNode e DataNodes no HDFS

NameNode (NN) DataNode (DN)


Gerencia o namespace do sistema Servidor de blocos que armazena
de arquivos Dados no sistema de arquivos local
Mapeia nomes de arquivos para Metadados dos blocos (hash)
blocos Disponibiliza metadados para
Mapeia blocos para DataNodes clientes
Gerenciamento de replicao
Hadoop: conceitos tericos e prticos,
XXXII CSBC 2012 XXX JAI 36
evoluo e novas possibilidades

JobTracker e TaskTrackers no MR

JobTracker (JT) TaskTrackers (TT)


Controla os metadados Solicita trabalho do JT
Status de um job Busca cdigo para executar do
Status de Tasks nos TTs DFS
Decide o escalonamento Aplica configuraes especficas
dos jobs
Comunicam-se com o JT nas tasks
Enviar sadas, atualizaes de
tasks, matar tasks, ...
Hadoop: conceitos tericos e prticos,
XXXII CSBC 2012 XXX JAI 37
evoluo e novas possibilidades

Formas de Execuo
Local
Pseudo-distribudo
Completamente distribudo
Hadoop: conceitos tericos e prticos,
XXXII CSBC 2012 XXX JAI 38
evoluo e novas possibilidades

Formas de Execuo
Local:
Configurao padro
Recomendvel para a fase de
desenvolvimento e testes
Aplicao executada na mquina local
Hadoop: conceitos tericos e prticos,
XXXII CSBC 2012 XXX JAI 39
evoluo e novas possibilidades

Formas de Execuo
Pseudo-distribudo
"Cluster" de uma mquina s
Configurao similar do processamento
em um cluster...
... porm o processamento continua
sendo executado na mquina local
Hadoop: conceitos tericos e prticos,
XXXII CSBC 2012 XXX JAI 40
evoluo e novas possibilidades

Formas de Execuo
Completamente distribudo
Processamento real de uma aplicao
Hadoop
Deve indicar quais mquinas iro
efetivamente executar os componentes
Hadoop
Apache

HDFS
Hadoop: conceitos tericos e prticos,
XXXII CSBC 2012 XXX JAI 42
evoluo e novas possibilidades

HDFS
Hadoop Distributed Filesystem
Caractersticas
Diviso em blocos
Replicao de dados
Hadoop: conceitos tericos e prticos,
XXXII CSBC 2012 XXX JAI 43
evoluo e novas possibilidades

HDFS
Caractersticas
Sistema de arquivos distribudos
Arquitetura Mestre/Escravo
Inspirado no Google FileSystem
(GFS)
Hadoop: conceitos tericos e prticos,
XXXII CSBC 2012 XXX JAI 44
evoluo e novas possibilidades

Caractersticas
Implementado em Java
Armazenamento de grandes volumes
de dados
Recuperao de dados transparente
ao usurio
Hadoop: conceitos tericos e prticos,
XXXII CSBC 2012 XXX JAI 45
evoluo e novas possibilidades

Diviso em Blocos
Disco rgido pode no suportar o
tamanho de um arquivo
Principalmente em solues BigData
HDFS divide os arquivos em blocos
de mesmo tamanho
64 MB por padro
Hadoop: conceitos tericos e prticos,
XXXII CSBC 2012 XXX JAI 46
evoluo e novas possibilidades

Replicao de Dados
3 rplicas para cada bloco
Aumento de segurana e disponibilidade
Cada rplica em um diferente n
2 em um mesmo armrio (rack) e 1 em
um armrio diferente
Re-Replicao
Em casos de corromper uma das rplicas
Hadoop: conceitos tericos e prticos,
XXXII CSBC 2012 XXX JAI 47
evoluo e novas possibilidades

Exemplo
Apache

MapReduce
Hadoop: conceitos tericos e prticos,
XXXII CSBC 2012 XXX JAI 49
evoluo e novas possibilidades

Um pequeno grande exemplo


Word Count (Conta Palavras)
Gera uma lista da frequncia das palavras em
um conjunto de arquivos.
Conjunto de arquivos: terabytes!
2012, 4
CSBC, 3
CSBC JAI 2012
Curitiba, 2
CSBC 2012 em Curitiba
em, 1
Word Count
JAI, 2
Minicurso Hadoop JAI 2012 Hadoop, 1
CSBC 2012 Curitiba Paran Minicurso, 1
Paran, 1
Hadoop: conceitos tericos e prticos,
XXXII CSBC 2012 XXX JAI 50
evoluo e novas possibilidades

Em um mundo no paralelo!
Assuma que a mquina tem memria suficiente (1+ Tb?)

word-count ( ) {
for each document d {
for each word w in d {
w_count[w]++;
}
}
save w_count to persistent storage
}

Provavelmente a execuo demorar um longo tempo


(dias, semanas...) pois a entrada da ordem de terabytes
Hadoop: conceitos tericos e prticos,
XXXII CSBC 2012 XXX JAI 51
evoluo e novas possibilidades

Em um mundo paralelo qualquer!


Mutex lock; // protects w_count
word-count ( ) {
for each document d in parallel {
for each word w in d {
lock.Lock();
w_count[w]++;
lock.Unlock();
}
}
save w_count to persistent storage }

Problemas: utiliza uma estrutura de dados nica


e global.
Recursos compartilhados: seo crtica!
Hadoop: conceitos tericos e prticos,
XXXII CSBC 2012 XXX JAI 52
evoluo e novas possibilidades

No Mundo Hadoop
Usando o MapReduce podemos resolver
problemas da seguinte forma:
Leia uma grande quantidade de dados
Aplique a funo MAP: extrai alguma
informao de valor!
Fase intermediria: Shuffle & Sort
Aplique a funo REDUCE: rene, compila,
filtra, transforma,...
Grava os resultados
Hadoop: conceitos tericos e prticos,
XXXII CSBC 2012 XXX JAI 53
evoluo e novas possibilidades

MapReduce
A ideia do paradigma de programao Map e Reduce no
nova
Provavelmente 40+ anos!
No Hadoop a parte do arcabouo responsvel pelo
processamento distribudo (paralelo) de grandes
conjuntos de dados.
Prov um modelo de programao
Usa padres j conhecidos:
cat | grep | sort | unique > file
input | map | shuffle | reduce > output
Hadoop: conceitos tericos e prticos,
XXXII CSBC 2012 XXX JAI 54
evoluo e novas possibilidades

A natureza do Map
Map em programao funcional

map({1,2,3,4}, (x2)) -> {2,4,6,8}

Todos os elementos so processados por


um mtodo e os elementos no afetam uns
aos outros
Hadoop: conceitos tericos e prticos,
XXXII CSBC 2012 XXX JAI 55
evoluo e novas possibilidades

A natureza do Reduce
Reduce em programao funcional

reduce({1,2,3,4}, (x)) -> {24}

Todos elementos na lista so processados


juntos
Tanto em Map quanto em Reduce: a
entrada fixa (imutvel), e a sada uma
nova lista (em geral)
Hadoop: conceitos tericos e prticos,
XXXII CSBC 2012 XXX JAI 56
evoluo e novas possibilidades

O paradigma implementado
O paradigma MapReduce adequado para
trabalhar com grandes quantidades de
dados
Realiza computao sobre os dados
(pouca movimentao de dados)
Utiliza os blocos armazenados no DFS,
logo no necessita diviso dos dados
Hadoop: conceitos tericos e prticos,
XXXII CSBC 2012 XXX JAI 57
evoluo e novas possibilidades

Ilustrando a ideia original


Hadoop: conceitos tericos e prticos,
XXXII CSBC 2012 XXX JAI 58
evoluo e novas possibilidades

MapReduce no Hadoop
A funo Map atua sobre um conjunto de entrada
com chaves e valores, produzindo uma lista de
chaves e valores
A funo Reduce atua sobre os valores
intermedirios produzidos pelo Map para,
normalmente, agrupar os valores e produzir a
sada
Hadoop: conceitos tericos e prticos,
XXXII CSBC 2012 XXX JAI 59
evoluo e novas possibilidades

Exemplos: Word Count


L arquivos texto e conta a frequncia das
palavras
Entrada: arquivos texto
Sada: arquivo texto
Cada linha: palavra, separador (tab),
quantidade
Map: gera pares de (palavra, quantidade)
Reduce: para cada palavra, soma as
quantidades
Hadoop: conceitos tericos e prticos,
XXXII CSBC 2012 XXX JAI 60
evoluo e novas possibilidades

Word Count (Pseudo-cdigo)


map(String key, String value):
// key: document name
// value: document contents
for each word w in value:
EmitIntermediate(w, 1);

reduce(String key, Iterator values):


// key: a word
// values: a list of counts
int result = 0;
for each v in values:
result += ParseInt(v);
Emit(AsString(result));
Hadoop: conceitos tericos e prticos,
XXXII CSBC 2012 XXX JAI 61
evoluo e novas possibilidades

Execuo do WordCount
Hadoop: conceitos tericos e prticos,
XXXII CSBC 2012 XXX JAI 62
evoluo e novas possibilidades

Implementao do Hadoop
Hadoop: conceitos tericos e prticos,
XXXII CSBC 2012 XXX JAI 63
evoluo e novas possibilidades

Outros exemplos: Grep


Procura nos arquivos de entrada por um
dado padro

Map: emite uma linha se um padro


encontrado

Reduce: copia os resultados para a sada


Hadoop: conceitos tericos e prticos,
XXXII CSBC 2012 XXX JAI 64
evoluo e novas possibilidades

Ilustrando o Grep

cat | grep | sort | unique > file


input | map | shuffle | reduce > output
Hadoop: conceitos tericos e prticos,
XXXII CSBC 2012 XXX JAI 65
evoluo e novas possibilidades

Outros exemplos: ndice Invertido


Gerar o ndice invertido das palavras de
um conjunto de arquivos dado

Map: faz a anlise dos documentos e gera


pares de (palavra, docId)

Reduce: recebe todos os pares de uma


palavra, organiza os valores docId, e gera
um par (palavra, lista(docId))
Hadoop: conceitos tericos e prticos,
XXXII CSBC 2012 XXX JAI 66
evoluo e novas possibilidades

Ilustrando o ndice Invertido


hamlet.txt
to, hamlet.txt
to be or not be, hamlet.txt
to be or, hamlet.txt afraid, (12th.txt)
not, hamlet.txt be, (12th.txt, hamlet.txt)
greatness, (12th.txt)
not, (12th.txt, hamlet.txt)
be, 12th.txt of, (12th.txt)
12th.txt not, 12th.txt or, (hamlet.txt)
afraid, 12th.txt to, (hamlet.txt)
be not afraid
of greatness of, 12th.txt
greatness, 12th.txt
Hadoop: conceitos tericos e prticos,
XXXII CSBC 2012 XXX JAI 67
evoluo e novas possibilidades

Apache Mahout
uma biblioteca de algoritmos de
aprendizagem de mquina
um projeto da Apache Software
Foundation
Software Livre (Licena Apache)
Principal objetivo ser escalvel para
manipular volume gigantesco de dados
Hadoop: conceitos tericos e prticos,
XXXII CSBC 2012 XXX JAI 68
evoluo e novas possibilidades

Onde usar o Mahout?


Trabalha com:
Matrizes e vetores
Estruturas esparsas e densas
Agrupamento
Cobertura
K-Means
Anlise de densidade de funes
Filtragem colaborativa
Mahout pode ser usado com o Hadoop
explorando sua escalabilidade para processar os
dados
Hadoop: conceitos tericos e prticos,
XXXII CSBC 2012 XXX JAI 69
evoluo e novas possibilidades

Gerando recomendaes
Construir uma matriz que relaciona os itens:
Matriz de co-ocorrncia
Computa o nmero de vezes que cada par de
itens aparecem juntos na lista de preferncias de
algum usurio
Se existem 9 usurios que expressam
preferncia pelos itens X e Y, ento X e Y co-
ocorrem 9 vezes
Co-ocorrncia como similaridade, quanto mais
dois itens aparecem juntos, mais provvel que
sejam similares
Hadoop: conceitos tericos e prticos,
XXXII CSBC 2012 XXX JAI 70
evoluo e novas possibilidades

Gerando recomendaes
Hadoop: conceitos tericos e prticos,
XXXII CSBC 2012 XXX JAI 71
evoluo e novas possibilidades

Gerando recomendaes
Computando o vetor de cada usurio
Um vetor para cada usurio
Com n itens na base de dados, o vetor de
preferncias ter n dimenses
Se o usurio no exprime nenhuma preferncia
por um determinado item, o valor correspondente
no vetor ser zero
Neste exemplo, o vetor do usurio trs [2.0,
0.0, 0.0, 4.0, 4.5, 0.0, 5.0]
Hadoop: conceitos tericos e prticos,
XXXII CSBC 2012 XXX JAI 72
evoluo e novas possibilidades

Gerando recomendaes

Multiplicando a matriz de co-ocorrncia com o vetor de preferncias do usurio


trs para chegar ao vetor que nos leva s recomendaes
Hadoop: conceitos tericos e prticos,
XXXII CSBC 2012 XXX JAI 73
evoluo e novas possibilidades

Gerando recomendaes
Intuitivamente, olhando para a linha 3 da
tabela, se o item desta linha co-ocorre com
muitos itens que o usurio 3 expressou sua
preferncia, ento provvel que seja algo
que o usurio 3 goste
Hadoop: conceitos tericos e prticos,
XXXII CSBC 2012 XXX JAI 74
evoluo e novas possibilidades

Integrando o Mahout no Hadoop


Precisamos do RecommenderJob
Modo Newbie (Novato!):
Apenas coloque o JAR pr-compilado da
distribuio do Mahout no diretrio do hadoop.
mahout-core-0.6-job.jar
Modo Expert:
Faa as alteraes necessrias no Mahout
para sua persolnalizao, gere o JAR e coloque
no diretrio do hadoop.
Hadoop: conceitos tericos e prticos,
XXXII CSBC 2012 XXX JAI 75
evoluo e novas possibilidades

Chamada do Mahout no Hadoop


:~$ bin/hadoop jar mahout-core-0.6-job.jar
org.apache.mahout.cf.taste.hadoop.item.RecommenderJo
b
-Dmapred.input.dir=input/movieRec10M.txt
-Dmapred.output.dir=output
--usersFile input/movieUsers.txt
--numRecommendations 10
--maxPrefsPerUser 100
--similarityClassname SIMILARITY_COSINE
Hadoop: conceitos tericos e prticos,
XXXII CSBC 2012 XXX JAI 76
evoluo e novas possibilidades

Formato dos dados


O recomendador do Mahout espera que os dados
estejam da forma:

userID, itemID [,preferencevalue]

UserID um Long
ItemID um Long
Preferencevalue um Double
Hadoop: conceitos tericos e prticos,
XXXII CSBC 2012 XXX JAI 77
evoluo e novas possibilidades

Carregar os dados no HDFS


Comando:
hadoop fs -put <caminho_local_do_arquivo>
<caminho_do_arquivo_no_hdfs>

Ex:
:~$ hadoop fs -put moviesRecommendation1M.txt
input/moviesRec.txt
Hadoop: conceitos tericos e prticos,
XXXII CSBC 2012 XXX JAI 78
evoluo e novas possibilidades

Executando o RecomenderJob
Parmetros de chamada:
--usersFile(path): (xor) arquivo contendo os Ids dos
usurios considerados na computao
--itemsFile(path): (xor) arquivo contendo os Ids dos itens;
--numRecommendations(integer): nmero de
recomendaes computadas por usurio (padro:10)
--booleanData(boolean): tratar a entrada como no tendo
valores de preferncia (padro:falso)
--maxPrefsPerUser(integer): nmero mximo de
preferncias consideradas por usurio (padro:10)
Hadoop: conceitos tericos e prticos,
XXXII CSBC 2012 XXX JAI 79
evoluo e novas possibilidades

Executando o RecomenderJob
Parmetros de chamada:
--similarityClassname(classname): (obrigatrio) medida de
similaridade;
SIMILARITY_COOCCURRENCE
SIMILARITY_LOGLIKELIHOOD
SIMILARITY_TANIMOTO_COEFFICIENT
SIMILARITY_CITY_BLOCK
SIMILARITY_COSINE
SIMILARITY_PEARSON_CORRELATION
SIMILARITY_EUCLIDEAN_DISTANCE
Hadoop: conceitos tericos e prticos,
XXXII CSBC 2012 XXX JAI 80
evoluo e novas possibilidades

Demonstrao
Rodar o Hadoop na mquina local
Pseudo-Distributed mode

Colocar rating para 10 filmes que j assistiu

Enviar arquivos para o HDFS

Rodar o recomendador

Aplicar script python nos resultados


Hadoop: conceitos tericos e prticos,
XXXII CSBC 2012 XXX JAI 81
evoluo e novas possibilidades

Preenchendo com suas recomendaes


Edite o arquivo yourRec.txt e coloque suas
recomendaes nele:
Crie um id nico a partir de 1000 (chute um valor);
Procure no arquivo filmes.txt por filmes que voc j
assistiu e classifique-os com nota de 1 a 5.
Cada linha de seu arquivo dever conter a seguinte
estrutura:
<user_id_criado>,<id_filme>,<rating>
ex: 1977,123,4
Faa isto para no mnimo dez filmes.
Hadoop: conceitos tericos e prticos,
XXXII CSBC 2012 XXX JAI 82
evoluo e novas possibilidades

Preenchendo com suas recomendaes


Agora vamos juntar suas recomendaes com o
arquivo de recomendaes de outros usurios
com o comando:
:~$ cat yourRec.txt >> rec.txt

Edite o arquivo user.txt que contenha apenas


uma linha com seu user_id criado nela.
Hadoop: conceitos tericos e prticos,
XXXII CSBC 2012 XXX JAI 83
evoluo e novas possibilidades

Enviando arquivos ao HDFS


Agora que os arquivos esto preenchidos,
envie seus dois arquivos para o fs com os
comandos:

:~$ bin/hadoop fs -put rec.txt input/rec.txt

:~$ bin/hadoop fs -put user.txt input/user.txt


Hadoop: conceitos tericos e prticos,
XXXII CSBC 2012 XXX JAI 84
evoluo e novas possibilidades

Rodando o RecommenderJob
Verificar se o arquivo mahout-core-0.6-job.jar est no
diretrio raiz do hadoop.
A partir do diretrio raiz do hadoop, executar o comando:
:~$ bin/hadoop jar mahout-core-0.6-job.jar
org.apache.mahout.cf.taste.hadoop.item.RecommenderJob
-Dmapred.input.dir=input/rec.txt
-Dmapred.output.dir=output
--usersFile input/user.txt
--numRecommendations 10
--maxPrefsPerUser 100
--similarityClassname SIMILARITY_COSINE
Hadoop: conceitos tericos e prticos,
XXXII CSBC 2012 XXX JAI 85
evoluo e novas possibilidades

Resultados!
Acesse em seu navegador:
http://localhost:50070/
Opo: Browse the filesystem

Verificar os filmes recomendados para voc


usando o script imprimeFilmes.py com o seguinte
comando:

:~$ python imprimeFilmes <arquivo_resultado>


<arquivo_filmes> <id_usuario>
Hadoop: conceitos tericos e prticos,
XXXII CSBC 2012 XXX JAI 86
evoluo e novas possibilidades

Referncias!
Livros:
Hadoop The Definitive Guide
Tom White 2 Ed.
Hadoop in Action
Chuck Lam 1 Ed.
Web:
http://wiki.apache.org/hadoop/
Materiais extras:
Luciana Arantes

You might also like