Documente Academic
Documente Profesional
Documente Cultură
Apache Hadoop
Conceitos tericos e prticos, evoluo
e novas possibilidades
Daniel Cordeiro
Departamento de Cincia da Computao
Instituto de Matemtica e Estatstica
Universidade de So Paulo
Baseado no curso apresentado no CSBC12 pelos professores
Alfredo Goldman e Fabio Kon (USP);
Francisco Pereira Jr., Ivanilton Polato e Rosangela de Ftima Pereira (UTFPR)
Apache Hadoop
Introduo
Motivao
Uso potencial em 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
2 / 88
Apache Hadoop
Introduo
Motivao
Apache Hadoop
Hadoop remove a complexidade da computao de alto
desempenho
Custo eficiente
Mquinas comuns
Rede comum
Tolerncia a falhas automtica
Poucos administradores
Facilidade de uso
Poucos programadores
3 / 88
Apache Hadoop
Introduo
Hadoop
4 / 88
Apache Hadoop
Introduo
Histrico
*
**
http://nutch.apache.org/
http://labs.google.com/papers/mapreduce.html
http://labs.google.com/papers/gfs.html
5 / 88
Apache Hadoop
Introduo
Origem (I)
6 / 88
Apache Hadoop
Introduo
Origem (II)
7 / 88
Apache Hadoop
Introduo
Quem utiliza?
8 / 88
Apache Hadoop
Introduo
9 / 88
Apache Hadoop
Introduo
9 / 88
Apache Hadoop
Introduo
Soluo para:
Data warehouse
Business intelligence
Aplicaes analticas
Mdias sociais
10 / 88
Apache Hadoop
Introduo
Muitas possibilidades...
11 / 88
Apache Hadoop
Introduo
Vantagens
12 / 88
Apache Hadoop
Introduo
Vantagens
Vantagem I
Cdigo Aberto
Comunidade ativa
Apoio de grandes corporaes
Correes de erros frequentes
Constante evoluo do arcabouo
13 / 88
Apache Hadoop
Introduo
Vantagens
Vantagem II
Econmico
Software livre
Uso de mquinas e redes convencionais
Aluguel de servios disponveis na nuvem:
Amazon Elastic MapReduce
Google App Engine MapReduce
etc.
14 / 88
Apache Hadoop
Introduo
Vantagens
Vantagem III
Robusto
Se em 1 mquina h probabilidade de haver falhas...
Tempo mdio entre falhas para 1 n: 3 anos
Tempo mdio entre falhas para 1.000 ns: 1 dia
Estratgias
Replicao dos dados
Armazenamento de metadados
15 / 88
Apache Hadoop
Introduo
Vantagens
Vantagem IV
Escalvel
Permite facilmente adicionar mquinas ao aglomerado
Adio no implica na alterao do cdigo-fonte
Limitao apenas relacionada a quantidade de recursos
disponveis
16 / 88
Apache Hadoop
Introduo
Vantagens
Vantagem V
17 / 88
Apache Hadoop
Introduo
Desvantagens
Desvantagens
nico n mestre
Ponto nico de falha
Pode impedir o escalonamento
Dificuldade das aplicaes paralelas
Problemas no paralelizveis
Processamento de arquivos pequenos
Muito processamento em um pequeno conjunto de dados
18 / 88
Apache Hadoop
Suposies
19 / 88
Apache Hadoop
Suposies
20 / 88
Apache Hadoop
O modelo MapReduce
2012, 4
ERAD, 4
Campinas, 2
em, 1
Hadoop, 1
Minicursos, 2
SP, 1
21 / 88
Apache Hadoop
O modelo MapReduce
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
}
22 / 88
Apache Hadoop
O modelo MapReduce
23 / 88
Apache Hadoop
O modelo MapReduce
Google MapReduce
O modelo inicial proposto pelo Google apresentou conceitos
para simplificar alguns problemas
Paralelizao da computao em um aglomerado de mquinas
comuns (com centenas/milhares de CPUs)
Paralelizao e distribuio automtica de 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
24 / 88
Apache Hadoop
O modelo MapReduce
Grave os resultados
25 / 88
Apache Hadoop
O modelo MapReduce
MapReduce
A ideia do modelo de programao Map e Reduce no nova
Presente em linguagens funcionais h mais de 40 anos!
No Hadoop a parte do arcabouo responsvel pelo
processamento distribudo (paralelo) de grandes conjuntos de
dados
Usa padres j conhecidos:
cat
entrada
|
|
grep
map
|
|
sort
shuffle
|
|
uniq
reduce
>
>
arquivo
sada
26 / 88
Apache Hadoop
O modelo MapReduce
A natureza do Map
27 / 88
Apache Hadoop
O modelo MapReduce
A natureza do Reduce
28 / 88
Apache Hadoop
O modelo MapReduce
O modelo implementado
29 / 88
Apache Hadoop
O modelo MapReduce
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
map
reduce
Entrada
<k1, v1>
<k2, lista(v2)>
Sada
lista(<k2, v2>)
lista(<k3, v3>)
30 / 88
Apache Hadoop
O modelo MapReduce
31 / 88
Apache Hadoop
O modelo MapReduce
32 / 88
Apache Hadoop
O modelo MapReduce
Entrada
entrada1.txt
Minicursos ERAD
2012 ERAD 2012
em Campinas
entrada2.txt
Minicursos
Hadoop ERAD
2012 ERAD 2012
Campinas SP
Mapper
(Minicursos, 1)
(ERAD, 2)
(2012, 2)
(em, 1)
(Campinas, 1)
(Minicursos, 1)
(Hadoop, 1)
(ERAD, 2)
(2012,2)
(Campinas, 1)
(SP, 1)
Shuffle
Reducer
(2012, [2,2])
(Campinas, [1,1])
(em,[1,0])
(ERAD, [2,2])
(Hadoop, [0,1])
(Minicursos, [1,1])
(SP, [0,1])
(2012, 4)
(Campinas, 2)
(em, 1)
(ERAD, 4)
(Hadoop,1)
(Minicursos, 2)
(SP, 1)
Sada
2012, 4
Campinas, 2
em, 1
ERAD, 4
Hadoop,1
Minicursos, 2
SP, 1
33 / 88
Apache Hadoop
O modelo MapReduce
34 / 88
Apache Hadoop
O modelo MapReduce
Ilustrando o Grep
cat
entrada
|
|
grep
map
|
|
sort
shuffle
|
|
uniq
reduce
>
>
arquivo
sada
35 / 88
Apache Hadoop
O modelo MapReduce
36 / 88
Apache Hadoop
O modelo MapReduce
12th.txt
be not afraid
of greatness
to, hamlet.txt
be, hamlet.txt
or, hamlet.txt
not, hamlet.txt
be, 12th.txt
not, 12th.txt
afraid, 12th.txt
of, 12th.txt
greatness, 12th.txt
sada.txt
afraid, (12th.txt)
be, (12th.txt, hamlet.txt)
greatness, (12th.txt)
not, (12th.txt, hamlet.txt)
of, (12th.txt)
or, (hamlet.txt)
to, (hamlet.txt)
37 / 88
Apache Hadoop
Subprojetos do Hadoop
Hadoop Common
Hadoop MapReduce
Hadoop Distributed File System (HDFS)
38 / 88
Apache Hadoop
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
39 / 88
Apache Hadoop
40 / 88
Apache Hadoop
41 / 88
Apache Hadoop
Componentes do Hadoop
Componentes do Hadoop
N Mestre
NameNode
SecondaryNameNode
JobTracker
Ns Escravos
DataNode
TaskTracker
42 / 88
Apache Hadoop
Componentes do Hadoop
NameNode
43 / 88
Apache Hadoop
Componentes do Hadoop
DataNode
44 / 88
Apache Hadoop
Componentes do Hadoop
SecondaryNameNode
N auxiliar do HDFS
Realiza pontos de checagem em intervalos pr-definidos
Permite manter o nvel de desempenho do NameNode
45 / 88
Apache Hadoop
Componentes do Hadoop
JobTracker
46 / 88
Apache Hadoop
Componentes do Hadoop
TaskTracker
47 / 88
Apache Hadoop
Componentes do Hadoop
Resumindo...
48 / 88
Apache Hadoop
Componentes do Hadoop
NameNode (NN)
Gerencia o namespace do sistema
de arquivos
Mapeia nomes de arquivos para
blocos
Mapeia blocos para DataNodes
Gerencia replicao
Daniel Cordeiro (IME/USP) danielc@ime.usp.br
DataNode (DN)
Armazena dados no sistema
de arquivos local
Mantm informaes para
checar integridade dos
blocos (CRC )
ERAD/SP 25 de julho de 2012
49 / 88
Apache Hadoop
Componentes do Hadoop
JobTracker (JT)
TaskTrackers (TT)
Controla os metadados
status de um job
status de tasks
nos TTs
Decide como ser o
escalonamento
Daniel Cordeiro (IME/USP) danielc@ime.usp.br
Solicita trabalho no JT
busca cdigo para executar do DFS
aplica configuraes especficas nos
jobs
Comunicam-se com o JT nas tasks
enviam sadas, sinais, atualizaes ...
ERAD/SP 25 de julho de 2012
50 / 88
Apache Hadoop
Rodando o Hadoop
Formas de execuo
Local
Pseudo-distribuda
Completamente distribuda
51 / 88
Apache Hadoop
Rodando o Hadoop
Formas de execuo
Execuo local:
Configurao padro
Recomendvel para a fase de desenvolvimento e testes
Aplicao executada na mquina local
52 / 88
Apache Hadoop
Rodando o Hadoop
Formas de execuo
Execuo pseudo-distribuda:
Cluster de uma mquina s
Configurao similar do processamento em um cluster...
... porm, o processamento continua sendo executado na
mquina local
53 / 88
Apache Hadoop
Rodando o Hadoop
Formas de execuo
54 / 88
Apache Hadoop
Rodando o Hadoop
55 / 88
Apache Hadoop
Rodando o Hadoop
Demo
56 / 88
Apache Hadoop
HDFS
HDFS
Caractersticas
Sistema de arquivos distribudo
Arquitetura Mestre/Escravo
Inspirado no Google FileSystem (GFS)
57 / 88
Apache Hadoop
HDFS
Caractersticas
Implementado em Java
Armazenamento de grandes volumes de dados
Recuperao de dados transparente para o usurio
58 / 88
Apache Hadoop
HDFS
Diviso em blocos
59 / 88
Apache Hadoop
HDFS
Replicao de dados
Re-replicao
para o caso de uma rplica se tornar corrompida
60 / 88
Apache Hadoop
HDFS
Exemplo
61 / 88
Apache Hadoop
Apache Pig
Apache Pig
62 / 88
Apache Hadoop
Apache Pig
63 / 88
Apache Hadoop
Apache Pig
Problema:
Suponha que voc tenha dados
dos seus usurios em um arquivo,
logs de acesso a sites em outro, e
voc quer saber quais so os 5
sites mais visitados por usurios
com idades entre 18 e 25 anos.
Ler pginas
Contar visitas
Pegar as 5 primeiras
64 / 88
Apache Hadoop
Apache Pig
Cdigo em MapReduce
65 / 88
Apache Hadoop
Apache Pig
66 / 88
Apache Hadoop
Apache Pig
Execuo
Ao executar o script Pig, a plataforma se encarrega de:
fazer o parse do arquivo
verificar erros de sintaxe
otimizar o cdigo do script
criar um plano de execuo quais tarefas Map e Reduce
sero necessrias e qual a melhor ordem para execut-las?
enviar todos os arquivos necessrios para o HDFS
monitorar os processos em execuo
67 / 88
Apache Hadoop
Apache Pig
Pig
Hive
Processamento iterativo
Ferramentas de Business
Intelligence
Pesquisa
Anlise a posteriori
Pipelines
68 / 88
Apache Hadoop
Apache Pig
Destaques do Pig
Funes definidas pelo usurio (UDFs) so elementos de
primeira ordem da linguagem. Podem ser escritos para
transformaes em colunas (toUpper()) ou agregao
(sum())
Quatro tipo de joins diferentes: hash, fragment-replicate,
merge e skewed
Multi-query : Pig ir combinar certos tipos de operaes em
um nico pipeline para reduzir o nmero de vezes que um
mesmo dado precisa ser analisado
Order by prov ordem total entre os reducers
Piggybank, uma coleo de funes UDF disponibilizadas pela
comunidade de usurios
Daniel Cordeiro (IME/USP) danielc@ime.usp.br
69 / 88
Apache Hadoop
Apache Pig
Eval functions:
AVG
CONCAT
COUNT
COUNT_STAR
DIFF
IsEmpty
MAX
MIN
SIZE
SUM
TOKENIZE
70 / 88
Apache Hadoop
Apache Pig
Funes matemticas
ABS
ACOS
ASIN
ATAN
CBRT
CEIL
COS
COSH
EXP
FLOOR
LOG
LOG10
RANDOM
ROUND
SIN
SINH
SQRT
TAN
TANH
71 / 88
Apache Hadoop
Apache Pig
72 / 88
Apache Hadoop
Apache Pig
73 / 88
Apache Hadoop
Apache Pig
Acessando o Pig
Modos de execuo
Grunt Shell: modo iterativo, comandos so digitados
manualmente usando um shell iterativo
Arquivo de script: os comandos so definidos em um arquivo
de script
Modo embutido: os comandos do Pig podem ser executados
de dentro de um outro programa
Modos de distribuio
Modo local, as tarefas MapReduce so executadas na mquina
local
Modo Hadoop (MapReduce): a plataforma executa as tarefas
MapReduce em uma instalao do Hadoop e do HDFS remota
Daniel Cordeiro (IME/USP) danielc@ime.usp.br
74 / 88
Apache Hadoop
Apache Pig
Script
A = load passwd using PigStorage(:);
B = foreach A generate $0 as id;
dump B;
store B into id.out;
75 / 88
Apache Hadoop
Apache Pig
76 / 88
Apache Hadoop
Apache Pig
Pig Demo
Pig Demo
77 / 88
Apache Hadoop
Apache Mahout
Apache Mahout
78 / 88
Apache Hadoop
Apache Mahout
Apache Mahout
79 / 88
Apache Hadoop
Apache Mahout
80 / 88
Apache Hadoop
Apache Mahout
81 / 88
Apache Hadoop
Apache Mahout
Gerando recomendaes
Exemplo: Large-scale Parallel Collaborative Filtering for the Netflix
Prize (AAIM08 Zhou et al., HP Labs)
Constri uma 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 pelo itens X e
Y, ento X e Y co-ocorrem 9 vezes
Co-ocorrncia como similaridade, quanto mais dois itens
aparecerem juntos, mais provvel que sejam similares
82 / 88
Apache Hadoop
Apache Mahout
Gerando recomendaes
101
102
103
104
105
106
107
101
5
3
4
4
2
2
1
102
3
3
3
2
1
1
0
103
4
3
4
3
1
2
0
104
4
2
3
4
2
2
1
105
2
1
1
2
2
1
1
106
2
1
2
2
1
2
0
107
1
0
0
1
1
0
1
83 / 88
Apache Hadoop
Apache Mahout
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]
84 / 88
Apache Hadoop
Apache Mahout
Gerando recomendaes
101
102
103
104
105
106
107
101
5
3
4
4
2
2
1
102
3
3
3
2
1
1
0
103
4
3
4
3
1
2
0
104
4
2
3
4
2
2
1
105
2
1
1
2
2
1
1
106
2
1
2
2
1
2
0
107
1
0
0
1
1
0
1
U3
2.0
0.0
0.0
4.0
4.5
0.0
5.0
R
40.0
18.5
24.5
40.0
26.0
16.5
15.5
85 / 88
Apache Hadoop
Apache Mahout
Gerando recomendaes
86 / 88
Apache Hadoop
Apache Mahout
Demo
87 / 88
Apache Hadoop
Referncias
Referncias
Livros
Hadoop: The Definitive Guide (Tom White, Yahoo Press)
Hadoop in Action (Chuck Lam, Manning Publications)
Web
http://wiki.apache.org/hadoop/
http://developer.yahoo.com/hadoop/tutorial/
http://pig.apache.org/
http://mahout.apache.org/
Material extra
Profa. Luciana Arantes (LIP6, Paris)
Daniel Cordeiro (IME/USP) danielc@ime.usp.br
88 / 88