Upload
alexandre-uehara
View
337
Download
5
Embed Size (px)
Citation preview
Treinamento Hadoop
Parte 2
Alexandre Uehara
● Analista Desenvolvedor (E-commerce)
● Coordenador Trilha Big Data (TDC
2013)
http://www.thedevelopersconference.com.
br/tdc/2013/saopaulo/trilha-bigdata#programacao
● Geek e nerd, trabalha com Python,
Java, C, BigData, NoSQL, e outras
coisas mais que aparecem no dia a dia
NossaAgenda:
Dia 2!!!
Dia 1:IntroduçãoConceitos Básicos Big Data→ O que é?→ 4 V's→ Por que agora?→ Onde Usar?
→ Desafio→ BI x Big Data→Profissional de Big Data→ Ferramentas→ Dicas
Dia 2 e 3:Map Reduce e Hadoop→ História (Google)→ ConceitoMapReduce→ Hadoop→ Cases
Dia 4Outras
Ferramentas→ Ecossistema→ Ferramentas → Distribuições Hadoop→ Hadoop na Nuvem
→ NoSQL Tipos → NoSQL Exemplos → Data Science → Machine Learning
Dia 5, 6 e 7Hands-on
→ Pyhton→ Hadoop
Antes disso...
Antes disso...
lembram o quer era Big Data?
Antes disso...
lembram o quer era Big Data?
CONCEITO!!!
lembram o quer era Big Data?
Agora que entedemos que é um
CONCEITO, vamos ver a FERRAMENTA
Antes disso...
Mas o que é?
Map Reduce
Map Reduce
Hadoop é baseado no modelo de
programação MapReduce
"MapReduce é um modelo de
programação desenhado para processar
grandes volumes de dados em paralelo,
dividindo o trabalho em um conjunto
de tarefas independentes."
http://en.wikipedia.org/wiki/MapReduce
Map Reduce
Vem da onde?
Map Reduce
Framework
introduzido
pelo ...
Map Reduce
Framework
introduzido pelo
Map Reduce
http://research.google.com/archive/mapreduce.html
Map Reduce
http://research.google.com/archive/mapreduce.html
Map Reduce
● Não inventou, apenas implementou
● Mas, "definiu" / "padronizou"
algorítimo e arquitetura
Map Reduce
● paradigma de programação
para processar e analisar
grandes conjuntos de dados
Map Reduce
● Processamento tolerante a falha e
fácil abstração
● Facilidade de escalar
● Decompõe tudo em Pares - chave :
valor
● Depois sumariza os resultados
Map Reduce FileSystem
Map Reduce
Map Reduce Google FileSystem
Google Map Reduce
Map Reduce
Map Reduce
Map Reduce
Inspirado pelas funções
map e reduce usadas em
programação funcional.
Map Reduce"Programação funcional é um paradigma de programação que trata a
computação como uma avaliação de funções matemáticas e que evita
estados ou dados mutáveis. Ela enfatiza a aplicação de funções, em
contraste da programação imperativa, que enfatiza mudanças no
estado do programa"
Wikipedia - http://pt.wikipedia.org/wiki/Programa%C3%A7%C3%A3o_funcional
Exemplos de linguagem:
● Lisp
● Haskell
● Scala
Map Reduce
Se encarrega de toda
complexidade de
processamento
paralelo, e o
programador cuida
apenas da lógica
Map Reduce
● Você especifica
função map()
● Você especifica
função reduce()
● O framework cuida
do restante
Map Reduce
Lembra o
que era Map
/ Mapa?
Map Reduce
Map -
associação
chave-valor
(key-value) k,v
Map Reduce
● Duas fases: Map Reduce
● Entre MapReduce : shuffle e sort
Map Reduce
No Linux seria mais ou
menos:
cat /my/log | grep '*.*\.
html' | sort | uniq -c >
/output -file
Outros Map Reduce
● Hadoop
http://hadoop.apache.org/
● Twister
http://www.iterativemapreduce.org/
● Phoenix
http://mapreduce.stanford.edu/
● FileMap
http://mfisk.github.io/filemap/
Map Reduce
● Modelo Simples de
programação
● Sistema de arquivos
distribuidos com
gerenciamento de tarefas
Map Reduce
● Gerenciamento de cluster
● Excelente em
processamento em batch
● Não é feito para processos
online
Google Filesystem
Google Filesystem (GFS)
● Sistema de arquivos distribuídos
otimizados para atuar em dados não
estruturados
● Necessário pois os arquivos pode
começar a tornar grandes demais para
serem armazenados em apenas uma
máquina
Google Filesystem (GFS)
Google Filesystem (GFS)
● Tolerancia a falhas (se falhar um nó,
automaticamente replica para outro)
● Suporte a falha parcial
● Suporte a recuperação de
dados
● Suporte a recuperação
individual de nós
Google Filesystem (GFS)
● Consistência
● Escalável (pode aumentar / diminuir
sem afetar a aplicação)
● Milhares de nós
● Processamento paralelo
● Nós independentes
Map Reduce + GFS
Ou seja:
● Escalável
● Econômico
● Eficiente
● Confiável
Alexandre Uehara
@AleUehara
linkedin.com/in/aleuehara
slideshare.net/aleuehara