Sei sulla pagina 1di 89

Apache Hadoop

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)

ERAD/SP 25 de julho de 2012

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

Daniel Cordeiro (IME/USP) danielc@ime.usp.br

ERAD/SP 25 de julho de 2012

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

Daniel Cordeiro (IME/USP) danielc@ime.usp.br

ERAD/SP 25 de julho de 2012

3 / 88

Apache Hadoop
Introduo

Hadoop

Arcabouo para processamento e armazenamento de dados em


larga escala:
Cdigo aberto
Implementado em Java
Inspirado no GFS e MapReduce do Google
Projeto top-level da Fundao Apache
Tecnologia recente, porm j muito utilizada

Daniel Cordeiro (IME/USP) danielc@ime.usp.br

ERAD/SP 25 de julho de 2012

4 / 88

Apache Hadoop
Introduo

Histrico

*
**

http://nutch.apache.org/
http://labs.google.com/papers/mapreduce.html
http://labs.google.com/papers/gfs.html

Daniel Cordeiro (IME/USP) danielc@ime.usp.br

ERAD/SP 25 de julho de 2012

5 / 88

Apache Hadoop
Introduo

Origem (I)

2003 Google publica artigo do GFS (SOSP03)


2004 Google publica artigo do MapReduce (OSDI04)
2005 Doug Cutting cria uma verso do MapReduce para o
projeto Nutch
2006 Hadoop se torna um subprojeto do Apache Lucene

Daniel Cordeiro (IME/USP) danielc@ime.usp.br

ERAD/SP 25 de julho de 2012

6 / 88

Apache Hadoop
Introduo

Origem (II)

2007 Yahoo! Inc. se torna o maior contribuidor e utilizador


do projeto (aglomerado com mais de 1.000 ns)
2008 Hadoop deixa a tutela do projeto Lucene e se
transforma em um projeto top-level da Apache
2010 Facebook anuncia o maior aglomerado Hadoop do
mundo (mais de 2.900 ns e 30 petabytes de dados)
2011 Apache disponibiliza a verso 1.0.0

Daniel Cordeiro (IME/USP) danielc@ime.usp.br

ERAD/SP 25 de julho de 2012

7 / 88

Apache Hadoop
Introduo

Quem utiliza?

Daniel Cordeiro (IME/USP) danielc@ime.usp.br

ERAD/SP 25 de julho de 2012

8 / 88

Apache Hadoop
Introduo

The New York Times

Published: May 2, 1892


Copyright The New York Times
http://open.blogs.nytimes.com/2007/11/01/self-service-prorated-super-computing-fun/
Daniel Cordeiro (IME/USP) danielc@ime.usp.br

ERAD/SP 25 de julho de 2012

9 / 88

Apache Hadoop
Introduo

The New York Times


Em 2007, o jornal The New York Times converteu para PDF
todos seus os artigos publicados entre 1851 e 1980
Cada artigo composto por vrias imagens previamente
digitalizadas que precisavam ser posicionadas e
redimensionadas de forma coerente pra a criao do PDF
O Hadoop foi utilizado para converter 4 TB de imagens TIFF
em 11 milhes de arquivos PDF
100 instncias EC2 da Amazon foram utilizadas durante
24 horas para gerar 1,5 TB de arquivos PDF, a um custo de
aproximadamente US$ 240,00

Daniel Cordeiro (IME/USP) danielc@ime.usp.br

ERAD/SP 25 de julho de 2012

9 / 88

Apache Hadoop
Introduo

Onde o Hadoop utilizado?

Soluo para:
Data warehouse
Business intelligence
Aplicaes analticas
Mdias sociais

Daniel Cordeiro (IME/USP) danielc@ime.usp.br

ERAD/SP 25 de julho de 2012

10 / 88

Apache Hadoop
Introduo

Muitas possibilidades...

Daniel Cordeiro (IME/USP) danielc@ime.usp.br

ERAD/SP 25 de julho de 2012

11 / 88

Apache Hadoop
Introduo

Vantagens

Por que usar Hadoop?


Cdigo aberto
Econmico
Robusto
Escalvel
Foco na regra de negcio

Daniel Cordeiro (IME/USP) danielc@ime.usp.br

ERAD/SP 25 de julho de 2012

12 / 88

Apache Hadoop
Introduo
Vantagens

Vantagem I

Cdigo Aberto
Comunidade ativa
Apoio de grandes corporaes
Correes de erros frequentes
Constante evoluo do arcabouo

Daniel Cordeiro (IME/USP) danielc@ime.usp.br

ERAD/SP 25 de julho de 2012

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.

Daniel Cordeiro (IME/USP) danielc@ime.usp.br

ERAD/SP 25 de julho de 2012

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

Daniel Cordeiro (IME/USP) danielc@ime.usp.br

ERAD/SP 25 de julho de 2012

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

Daniel Cordeiro (IME/USP) danielc@ime.usp.br

ERAD/SP 25 de julho de 2012

16 / 88

Apache Hadoop
Introduo
Vantagens

Vantagem V

Foco na regra de negcio


Hadoop realiza todo o trabalho duro
Desenvolvedores podem focar apenas na abstrao do
problema

Daniel Cordeiro (IME/USP) danielc@ime.usp.br

ERAD/SP 25 de julho de 2012

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

Daniel Cordeiro (IME/USP) danielc@ime.usp.br

ERAD/SP 25 de julho de 2012

18 / 88

Apache Hadoop
Suposies

Suposies do projeto (I)


Problemas
Os dados que sero processados no cabem em um n
Cada n composto por hardware comum
Falhas podem (e iro) acontecer
Ideias e solues do Apache Hadoop
Sistema de arquivos distribudo
Replicao interna
Recuperao de falhas automtica

Daniel Cordeiro (IME/USP) danielc@ime.usp.br

ERAD/SP 25 de julho de 2012

19 / 88

Apache Hadoop
Suposies

Suposies do projeto (II)


Problemas
Mover dados caro (largura de banda pequena)
Mover computao barato
Programao paralela e distribuda difcil
Ideias e solues do Apache Hadoop
Mover a computao para onde esto os dados
Escrever programas que so fceis de se distribuir
Paralelismo de dados utilizando conceitos de linguagem
funcional

Daniel Cordeiro (IME/USP) danielc@ime.usp.br

ERAD/SP 25 de julho de 2012

20 / 88

Apache Hadoop
O modelo MapReduce

O exemplo clssico: contagem de palavras


Word Count
Gerar uma lista de frequncia das palavras em um conjunto grande
de arquivos: ordem de terabytes!
Minicursos ERAD 2012
ERAD 2012 em Campinas
Word Count
Minicursos Hadoop ERAD 2012
ERAD 2012 Campinas SP

Daniel Cordeiro (IME/USP) danielc@ime.usp.br

2012, 4
ERAD, 4
Campinas, 2
em, 1
Hadoop, 1
Minicursos, 2
SP, 1

ERAD/SP 25 de julho de 2012

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
}

Fcil, mas provavelmente a execuo demorar um longo tempo,


pois a entrada da ordem de terabytes
Daniel Cordeiro (IME/USP) danielc@ime.usp.br

ERAD/SP 25 de julho de 2012

22 / 88

Apache Hadoop
O modelo MapReduce

Em um mundo paralelo qualquer


Mutex lock; // protege 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!
Daniel Cordeiro (IME/USP) danielc@ime.usp.br

ERAD/SP 25 de julho de 2012

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

Daniel Cordeiro (IME/USP) danielc@ime.usp.br

ERAD/SP 25 de julho de 2012

24 / 88

Apache Hadoop
O modelo MapReduce

Ideia bsica do MapReduce


O modelo de programao paralela MapReduce aborda os
problemas da seguinte forma:
1

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,


etc.

Grave os resultados

Daniel Cordeiro (IME/USP) danielc@ime.usp.br

ERAD/SP 25 de julho de 2012

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

Daniel Cordeiro (IME/USP) danielc@ime.usp.br

|
|

uniq
reduce

>
>

arquivo
sada

ERAD/SP 25 de julho de 2012

26 / 88

Apache Hadoop
O modelo MapReduce

A natureza do Map

Map em programao funcional


map({1,2,3,4}, (2)) -> {2,4,6,8}
Todos os elementos so processados por um mtodo e os elementos
no afetam uns aos outros.

Daniel Cordeiro (IME/USP) danielc@ime.usp.br

ERAD/SP 25 de julho de 2012

27 / 88

Apache Hadoop
O modelo MapReduce

A natureza do Reduce

Reduce em programao funcional


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

Todos os elementos da lista so processados juntos


Tanto em Map quanto em Reduce: a entrada fixa
(imutvel), e a sada uma nova lista (em geral)

Daniel Cordeiro (IME/USP) danielc@ime.usp.br

ERAD/SP 25 de julho de 2012

28 / 88

Apache Hadoop
O modelo MapReduce

O modelo implementado

O modelo MapReduce adequado para trabalhar com grandes


quantidades de dados
Realiza computao sobre os dados (pouca movimentao de
dados)
Os dados so compartilhados atravs de um sistema de
arquivos distribudo

Daniel Cordeiro (IME/USP) danielc@ime.usp.br

ERAD/SP 25 de julho de 2012

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)>

Daniel Cordeiro (IME/USP) danielc@ime.usp.br

Sada
lista(<k2, v2>)
lista(<k3, v3>)

ERAD/SP 25 de julho de 2012

30 / 88

Apache Hadoop
O modelo MapReduce

De volta ao exemplo do 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 (palavra, quantidade)


Reduce: para cada palavra, soma as quantidades

Daniel Cordeiro (IME/USP) danielc@ime.usp.br

ERAD/SP 25 de julho de 2012

31 / 88

Apache Hadoop
O modelo MapReduce

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
// value: a list of counts
int result = 0;
for each v in values:
result += ParseInt(v);
Emit(key, AsString(result));
Daniel Cordeiro (IME/USP) danielc@ime.usp.br

ERAD/SP 25 de julho de 2012

32 / 88

Apache Hadoop
O modelo MapReduce

Execuo do Word Count

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)

Daniel Cordeiro (IME/USP) danielc@ime.usp.br

Sada

2012, 4
Campinas, 2
em, 1
ERAD, 4
Hadoop,1
Minicursos, 2
SP, 1

ERAD/SP 25 de julho de 2012

33 / 88

Apache Hadoop
O modelo MapReduce

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

Daniel Cordeiro (IME/USP) danielc@ime.usp.br

ERAD/SP 25 de julho de 2012

34 / 88

Apache Hadoop
O modelo MapReduce

Ilustrando o Grep
cat
entrada

|
|

grep
map

|
|

sort
shuffle

Daniel Cordeiro (IME/USP) danielc@ime.usp.br

|
|

uniq
reduce

>
>

arquivo
sada

ERAD/SP 25 de julho de 2012

35 / 88

Apache Hadoop
O modelo MapReduce

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))

Daniel Cordeiro (IME/USP) danielc@ime.usp.br

ERAD/SP 25 de julho de 2012

36 / 88

Apache Hadoop
O modelo MapReduce

Ilustrando o ndice Invertido


hamlet.txt
to be or
not to be

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

Daniel Cordeiro (IME/USP) danielc@ime.usp.br

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)

ERAD/SP 25 de julho de 2012

37 / 88

Apache Hadoop

Subprojetos do Hadoop

Hadoop Common
Hadoop MapReduce
Hadoop Distributed File System (HDFS)

Daniel Cordeiro (IME/USP) danielc@ime.usp.br

ERAD/SP 25 de julho de 2012

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

Daniel Cordeiro (IME/USP) danielc@ime.usp.br

ERAD/SP 25 de julho de 2012

39 / 88

Apache Hadoop

Outros projetos Apache relacionados


Avro seriao de dados e chamada a procedimentos
remotos (Remote Procedure Call )
Cassandra banco de dados NoSQL, tuplas <chave,valor>
Chukwa monitoramento e coleta de dados de sistemas
distribudos
HBase banco de dados no-relacional distribudo e escalvel
(baseado no Google Bigtable)
Hive infraestrutura de data warehouse (relacional,
SQL-like)
Mahout biblioteca para machine learning e data mining
Pig plataforma de anlise de dados e linguagem de fluxo
de dados (Pig Latin)
ZooKeeper coordenao de servios distribudos (configuraes,
nomes, sincronizao, etc.)
Daniel Cordeiro (IME/USP) danielc@ime.usp.br

ERAD/SP 25 de julho de 2012

40 / 88

Apache Hadoop

A pilha de software do Hadoop

Daniel Cordeiro (IME/USP) danielc@ime.usp.br

ERAD/SP 25 de julho de 2012

41 / 88

Apache Hadoop
Componentes do Hadoop

Componentes do Hadoop
N Mestre
NameNode
SecondaryNameNode
JobTracker
Ns Escravos
DataNode
TaskTracker

Daniel Cordeiro (IME/USP) danielc@ime.usp.br

ERAD/SP 25 de julho de 2012

42 / 88

Apache Hadoop
Componentes do Hadoop

NameNode

Gerencia os metadados dos arquivos


FSImage (checkpointing ) e EditLog (lista das operaes)

Controla a localizao das rplicas


Encaminha os blocos aos ns escravos
Mantm as informaes em memria

Daniel Cordeiro (IME/USP) danielc@ime.usp.br

ERAD/SP 25 de julho de 2012

43 / 88

Apache Hadoop
Componentes do Hadoop

DataNode

Realiza o armazenamento dos dados


Permite armazenar diversos blocos
Deve se comunicar com o NameNode

Daniel Cordeiro (IME/USP) danielc@ime.usp.br

ERAD/SP 25 de julho de 2012

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

Daniel Cordeiro (IME/USP) danielc@ime.usp.br

ERAD/SP 25 de julho de 2012

45 / 88

Apache Hadoop
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 em caso de falhas

Daniel Cordeiro (IME/USP) danielc@ime.usp.br

ERAD/SP 25 de julho de 2012

46 / 88

Apache Hadoop
Componentes do Hadoop

TaskTracker

Realiza o processamento das tarefas MapReduce


Cada n escravo possui uma nica instncia

Daniel Cordeiro (IME/USP) danielc@ime.usp.br

ERAD/SP 25 de julho de 2012

47 / 88

Apache Hadoop
Componentes do Hadoop

Resumindo...

Daniel Cordeiro (IME/USP) danielc@ime.usp.br

ERAD/SP 25 de julho de 2012

48 / 88

Apache Hadoop
Componentes do Hadoop

NameNode e DataNodes no HDFS

Fonte: Evert Lammers (SARA.nl)

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 e TaskTrackers no MapReduce

Fonte: Evert Lammers (SARA.nl)

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

Daniel Cordeiro (IME/USP) danielc@ime.usp.br

ERAD/SP 25 de julho de 2012

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

Daniel Cordeiro (IME/USP) danielc@ime.usp.br

ERAD/SP 25 de julho de 2012

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

Daniel Cordeiro (IME/USP) danielc@ime.usp.br

ERAD/SP 25 de julho de 2012

53 / 88

Apache Hadoop
Rodando o Hadoop

Formas de execuo

Execuo completamente distribuda:


Processamento real de uma aplicao Hadoop
Deve indicar quais mquinas iro efetivamente executar os
componentes Hadoop

Daniel Cordeiro (IME/USP) danielc@ime.usp.br

ERAD/SP 25 de julho de 2012

54 / 88

Apache Hadoop
Rodando o Hadoop

Execuo de tarefas MapReduce no Hadoop

Daniel Cordeiro (IME/USP) danielc@ime.usp.br

ERAD/SP 25 de julho de 2012

55 / 88

Apache Hadoop
Rodando o Hadoop

Demo

Demo do Word Count

Daniel Cordeiro (IME/USP) danielc@ime.usp.br

ERAD/SP 25 de julho de 2012

56 / 88

Apache Hadoop
HDFS

HDFS

Caractersticas
Sistema de arquivos distribudo
Arquitetura Mestre/Escravo
Inspirado no Google FileSystem (GFS)

Daniel Cordeiro (IME/USP) danielc@ime.usp.br

ERAD/SP 25 de julho de 2012

57 / 88

Apache Hadoop
HDFS

Caractersticas

Implementado em Java
Armazenamento de grandes volumes de dados
Recuperao de dados transparente para o usurio

Daniel Cordeiro (IME/USP) danielc@ime.usp.br

ERAD/SP 25 de julho de 2012

58 / 88

Apache Hadoop
HDFS

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

Daniel Cordeiro (IME/USP) danielc@ime.usp.br

ERAD/SP 25 de julho de 2012

59 / 88

Apache Hadoop
HDFS

Replicao de dados

3 rplicas (em geral) para cada bloco


aumento de segurana e disponibilidade

Cada rplica em um n diferente


2 em um mesmo rack de rede e 1 em um rack diferente

Re-replicao
para o caso de uma rplica se tornar corrompida

Daniel Cordeiro (IME/USP) danielc@ime.usp.br

ERAD/SP 25 de julho de 2012

60 / 88

Apache Hadoop
HDFS

Exemplo

Daniel Cordeiro (IME/USP) danielc@ime.usp.br

ERAD/SP 25 de julho de 2012

61 / 88

Apache Hadoop
Apache Pig

Apache Pig

Daniel Cordeiro (IME/USP) danielc@ime.usp.br

ERAD/SP 25 de julho de 2012

62 / 88

Apache Hadoop
Apache Pig

O que o Apache Pig?

O Apache Pig uma plataforma para a anlise de grandes


quantidades de dados composta por:
uma linguagem de alto-nvel para expressar programas de
anlise de dados (Pig Latin)
e uma infra-estrutura para a execuo desses programas

A plataforma gera, otimiza e compila automaticamente


programas MapReduce em tempo de execuo

Daniel Cordeiro (IME/USP) danielc@ime.usp.br

ERAD/SP 25 de julho de 2012

63 / 88

Apache Hadoop
Apache Pig

Motivao com um exemplo


Ler usurios

Filtrar por idade

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

Juno por nome

Agrupar por URL

Contar visitas

Ordenar por nmero


de visitas

Pegar as 5 primeiras

Daniel Cordeiro (IME/USP) danielc@ime.usp.br

ERAD/SP 25 de julho de 2012

64 / 88

Apache Hadoop
Apache Pig

Cdigo em MapReduce

Daniel Cordeiro (IME/USP) danielc@ime.usp.br

ERAD/SP 25 de julho de 2012

65 / 88

Apache Hadoop
Apache Pig

Mesmo cdigo em Pig Latin


Users = load users as (name, age);
Fltrd = filter Users by
age >= 18 and age <= 25;
Pages = load pages as (user, url);
Jnd = join Fltrd by name, Pages by user;
Grpd = group Jnd by url;
Smmd = foreach Grpd generate group,
COUNT(Jnd) as clicks;
Srtd = order Smmd by clicks desc;
Top5 = limit Srtd 5;
store Top5 into top5sites;

Daniel Cordeiro (IME/USP) danielc@ime.usp.br

ERAD/SP 25 de julho de 2012

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

Daniel Cordeiro (IME/USP) danielc@ime.usp.br

ERAD/SP 25 de julho de 2012

67 / 88

Apache Hadoop
Apache Pig

Pig vs. Hive

Por que no usar SQL em vez do Pig?

Pig

Hive

Processamento iterativo

Ferramentas de Business
Intelligence

Pesquisa

Anlise a posteriori

Pipelines

Daniel Cordeiro (IME/USP) danielc@ime.usp.br

ERAD/SP 25 de julho de 2012

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

ERAD/SP 25 de julho de 2012

69 / 88

Apache Hadoop
Apache Pig

Funes algbricas e de acumulao

Eval functions:
AVG
CONCAT
COUNT
COUNT_STAR
DIFF
IsEmpty

Daniel Cordeiro (IME/USP) danielc@ime.usp.br

MAX
MIN
SIZE
SUM
TOKENIZE

ERAD/SP 25 de julho de 2012

70 / 88

Apache Hadoop
Apache Pig

Funes matemticas
ABS
ACOS
ASIN
ATAN
CBRT
CEIL
COS
COSH
EXP
FLOOR

Daniel Cordeiro (IME/USP) danielc@ime.usp.br

LOG
LOG10
RANDOM
ROUND
SIN
SINH
SQRT
TAN
TANH

ERAD/SP 25 de julho de 2012

71 / 88

Apache Hadoop
Apache Pig

Quem usa o Pig?


Em 2010, tarefas MapReduce geradas pelo Pig correspondiam
a 70% das tarefas executadas no Yahoo!
O Pig tambm usado pelo Twitter, LinkedIn, Ebay, AOL, etc.
Usos comuns:
Processamento de logs de servidores web
Construo de modelos de predio de comportamento de
usurios
Processamento de imagens
Construo de ndices de pginas da web
Pesquisa em conjuntos de dados brutos

Daniel Cordeiro (IME/USP) danielc@ime.usp.br

ERAD/SP 25 de julho de 2012

72 / 88

Apache Hadoop
Apache Pig

Leitura dos arquivos

A leitura dos arquivos pode ser feita utilizando:


a classe PigStorage, que fornece um modo conveniente de ler
arquivos com entradas separadas por um delimitador
especificado com uma expresso regular, ou
uma classe Java personalizada

Daniel Cordeiro (IME/USP) danielc@ime.usp.br

ERAD/SP 25 de julho de 2012

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

ERAD/SP 25 de julho de 2012

74 / 88

Apache Hadoop
Apache Pig

Um script em PIG simples

Script
A = load passwd using PigStorage(:);
B = foreach A generate $0 as id;
dump B;
store B into id.out;

Daniel Cordeiro (IME/USP) danielc@ime.usp.br

ERAD/SP 25 de julho de 2012

75 / 88

Apache Hadoop
Apache Pig

Um script em PIG simples


Modo embutido
public class idlocal{
public static void main(String[] args) {
try {
PigServer pigServ = new PigServer("mapreduce");
runIdQuery(pigServer, "passwd");
} catch(Exception e) {}
}
public static void runIdQuery(PigServer pigServ, String inputFile)
throws IOException {
pigServ.registerQuery("A = load " + inputFile + " using PigStorage(:);");
pigServ.registerQuery("B = foreach A generate $0 as id;");
pigServ.store("B", "id.out");
}
}

Daniel Cordeiro (IME/USP) danielc@ime.usp.br

ERAD/SP 25 de julho de 2012

76 / 88

Apache Hadoop
Apache Pig

Pig Demo

Pig Demo

Daniel Cordeiro (IME/USP) danielc@ime.usp.br

ERAD/SP 25 de julho de 2012

77 / 88

Apache Hadoop
Apache Mahout

Apache Mahout

Daniel Cordeiro (IME/USP) danielc@ime.usp.br

ERAD/SP 25 de julho de 2012

78 / 88

Apache Hadoop
Apache Mahout

Apache Mahout

uma biblioteca de algoritmos de aprendizado de mquina


um projeto da Fundao Apache
Software livre (licena Apache)
Principal objetivo: ser escalvel para manipular grandes
volumes de dados

Daniel Cordeiro (IME/USP) danielc@ime.usp.br

ERAD/SP 25 de julho de 2012

79 / 88

Apache Hadoop
Apache Mahout

Onde usar o Mahout?


O Mahout utilizado quando se preciso trabalhar com:
Matrizes e vetores
Estruturas esparsas e densas
Agrupamento
Cobertura
K-Means
Anlise de densidade de funes
Filtragem colaborativa
Mahout + Hadoop
Opcional, mas se utilizado com o Hadoop o Mahout pode explorar
a escalabilidade do modelo MapReduce para processar os dados
Daniel Cordeiro (IME/USP) danielc@ime.usp.br

ERAD/SP 25 de julho de 2012

80 / 88

Apache Hadoop
Apache Mahout

Quem usa o Mahout?

Adobe Adobe Media Player usa o Mahout para gerar


recomendaes de vdeos para seus usurios
Amazon Amazons Personalization Platform
AOL recomendaes de compras
Foursquare sistema de recomendaes de lugares
Mendeley sistema de recomendaes de artigos cientficos
Twitter modelagem de interesses de usurios
etc.

Daniel Cordeiro (IME/USP) danielc@ime.usp.br

ERAD/SP 25 de julho de 2012

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

Daniel Cordeiro (IME/USP) danielc@ime.usp.br

ERAD/SP 25 de julho de 2012

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

Daniel Cordeiro (IME/USP) danielc@ime.usp.br

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

ERAD/SP 25 de julho de 2012

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]

Daniel Cordeiro (IME/USP) danielc@ime.usp.br

ERAD/SP 25 de julho de 2012

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

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


usurio trs para chegar ao vetor que nos leva s recomendaes.

Daniel Cordeiro (IME/USP) danielc@ime.usp.br

ERAD/SP 25 de julho de 2012

85 / 88

Apache Hadoop
Apache Mahout

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 de que o usurio 3 goste.

Daniel Cordeiro (IME/USP) danielc@ime.usp.br

ERAD/SP 25 de julho de 2012

86 / 88

Apache Hadoop
Apache Mahout

Demo

Recomendao de filmes usando o conjunto de dados MovieLens


da Universidade de Minnesota
Entrada: UserID::MovieID::Rating::Timestamp
Sada: UserID [MovieID:Recommendation,...]
6040 [1941:5.0,1904:5.0,2859:5.0,3811:5.0,...]

Veja o exemplo completo em:


cwiki.apache.org/MAHOUT/recommendationexamples.html

Daniel Cordeiro (IME/USP) danielc@ime.usp.br

ERAD/SP 25 de julho de 2012

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

ERAD/SP 25 de julho de 2012

88 / 88

Potrebbero piacerti anche