Professional Documents
Culture Documents
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
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
JobTracker e TaskTrackers no MR
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
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
}
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
A natureza do Reduce
Reduce em programao funcional
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
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
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
Ilustrando o Grep
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
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
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
UserID um Long
ItemID um Long
Preferencevalue um Double
Hadoop: conceitos tericos e prticos,
XXXII CSBC 2012 XXX JAI 77
evoluo e novas possibilidades
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
Rodar o recomendador
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
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