O documento discute o sistema de arquivos distribuído Hadoop para processamento de grandes volumes de dados. Ele explica como o Hadoop permite armazenar e processar petabytes de dados em hardware comum e tolera falhas de forma transparente para as aplicações. Também descreve os principais componentes do Hadoop como HDFS, MapReduce e como eles trabalham juntos para fornecer escalabilidade e confiabilidade.
3. Por que ???
• Requisitos
–
–
–
–
500M+ usuário únicos por mês
Bilhões de eventos interessantes por dia
Necessidade de scalabilidade massiva
PB’s de storage, milhares de arquivos, 1000’s de nós
• Necessidade de ter baixo custo
– Uso de hardware comum
– Compartilhar recursos com vários projetos
– Fornecer escala quando necessário
• Precisa de infraestrutura confiável
– Deve ser capaz de lidar com falhas - hardware, software, networking
• A falha é esperada, e não uma exceção
– Transparente para as aplicações
• muito caro para construir confiabilidade em cada aplicação
• A infra-estrutura do Hadoop prove essas capacidade.
4. Começando com Hadoop!!!
• Histórico
–
–
–
–
Em 2004: Google publica um artigo sobre MapReduce
2005: Doug Cutting integra MapReduce no Hadoop
2006: Doug Cutting contratado pelo Yahoo
Yahoo! tornou-se o promeiro contribuidor em 2006
• Escalou de 20 node para 4000 node clusters em 2010
– 2008: Cloudera é Fundada (www.cloudera.com)
• Características
– Escrito em Java, OpenSource
– Roda em hardware comum
– Linux, Mac OS/X, Windows, and Solaris
5. O que é o Hadoop
• O Apache Hadoop é um projeto desenvolvimento
como open-source software para escalavel ,
confiável e processamento distribuído. Inclui:
– MapReduce e Sistema de arquivos distribuído
framework para for large commodity clusters
– Master/Slave
– JobTracker organiza todas as tarefas e coordena o
fluxo de dados entre os TaskTrackers
– TaskTracker manipula todos os worker no node
– Worker Task executa as operações de map ou reduce
– Integra-se com HDFS com os dados localmente
6. Características do Hadoop
• Um sistema escalável e confiável para
armazenamento compartilhado e análises.
• Ele automaticamente trata da replicação de
dados e da falhas em cada nó.
• Ele faz o trabalho duro - desenvolvedor pode
se concentrar em processamento da lógica de
dados
• Permite que os aplicativos usem petabytes de
dados em paralelo
7. Ecosistema Hadoop
• Hadoop Core
Hadoop Core
– Distributed File System
Distributed File System
MapReduce Framework
– MapReduce Framework
Pig Yahoo!)
• Pig (criado pelo(criado pelo Yahoo!)Runtime
Parallel Programming Language e
– Parallel Programming Language e Runtime
Hbase (criado pelo Powerset)
• Hbase (criadoTable storage for semi-structured data
pelo Powerset)
– Table storage for semi-structured(criado pelo
Zookeaper data
Yahoo!)
• Zookeaper (criado pelo Yahoo!)
Coordinating distributed systems
– Coordinating distributed systems
Hive (criado pelo Facebook)
• Hive (criado pelo Facebook) and metastore
SQL-like query language
– SQL-like query language and metastore
8. Quem usa o Hadoop ?
•
•
•
•
•
Buscapé / Ebehavior
Amazon/A9
Facebook
Google
IBM
•
•
•
•
•
•
Joost
Last.fm
New York Times
PowerSet
Veoh
Yahoo!
9. M45(open cirrus cluster )
• Colaboração com grandes universidades de
pesquisa(via open cirrus)
–
–
–
–
Carnegie Mellon University
The University of California at Berkeley
Cornell University
The University of Massachusetts at Amherst joined
• Seed Facility:
Datacenter na caixa (DiB)
– 500 nodes, 4000 cores, 3TB RAM, 1.5PB disk
– Conexão de alta velocidade com a internet
– Localizado no Yahoo no campu Coorporativo
• Roda Hadoop
• Tem sido usado no últimos 2 anos
10. Hadoop no Facebook
• Cluster em produção
–
–
–
–
–
4800 cores, 600 máquina, 16GB por máquina – Abril/2009
8000 cores, 1000 máquinas, 32 GB por máquina – julho/2009
4 SATA discos de 1 TB por máquina
2 níveis de rede hierarquica, 40 máquinas por rack
Total do tamanho do cluster 2 PB, projetado para 12 PB no Q3 2009
• Cluster de Teste
• 800 cores, 16GB cada
12. Uso de Hardware Comum
Tipicamente em 2 níveis
– Nós são PCs comuns
– 30-40 nodes/rack
– Rack em Uplink de 3-4 gigabit
– Rack-interno de 1 gigabit
13. HDFS
• Inspirado em GFS
• Projetado para trabalhar com arquivos muito
grandes
• Executado em hardware commodity
• Streaming de acesso a dados
• Replicação e localidade
14. HDFS
• Projetado para escalar a petabytes de armazenamento, e
correr em cima dos sistemas de arquivos do sistema
operacional subjacente.
• “NameNode” - Master
– Gerencia o sistema de arquivos namespace
Conhece todos os blocos de localização
– lida com a replicação, exclusão, criação
• “DataNode” - Slave (workers)
– Manter os blocos de dados
– Relatório de volta para namenode suas listas de blocos
periodicamente
– lida com a recuperação de dados
15. HDFS - Duplicação
• Dados de entrada é
copiado para HDFS é
dividido em blocos
• Cada blocos de dados é
replicado para várias
máquinas
16. HDFS – Hadoop FileSystem
• Sistema de Arquivos Distribuído para grande
Volumes
– 10K nodes, 100 milhões de arquivos, 10 PB
• Hardware Comum (comodite)
– Os arquivos são replicados esperando falha de
hardware
– Detecção de falhas e recuperação
• Otimizado para Batch Processing
– Os dados ficam expostos, a computação pode
ser movida onde os dados estiverem
• Roda em diversos OS (win, linux, mac)
20. O que é Map Reduce
• MapReduce é um modelo de programação e
implementação associados para o
processamento e geração de grandes conjuntos
de dados (Jeffrey Dean e Sanjay Ghemawat, 2004)
– A ideia tem mais de 40 anos
– Baseado em um modelo de programação funcional
(como Lisp, Ml, etc)
– Processamento de dados base em batch
– A abstração limpa para programadores
– Paralelização automática e distribuição
– Tolerância a falhas
22. MapReduce – Função Map
• Input:
– Registros de alguma fonte de dados (por exemplo,
linhas de arquivos, linhas de um banco de dados,
...) estão associados no par (chave, valor)
• Output:
– Um ou mais valores intermediários no formato
(chave, valor)
• Exemplo: (palavra, numero_de_ocorrencias)
25. MapReduce – Função Reduce
Depois que a fase de mapeamento terminar, todos
os valores intermediários vão para uma chave de
saída, estes são combinadas em uma lista
• Input
– Valores Intermediários :
– Example: (“A”, [42, 100, 312])
• Output
– Normalmente, apenas um valor final por chave
– Exemplo (“a”, 454)
27. Exemplo – Função Reduce
reduce (k, vals):
sum = 0
foreach int v in vals:
sum += v
emit (k, sum)
(“A”, [42, 100, 312]) (“A”, 454)
(“B”, [12, 6, -2]) (“B”, 16)
28. MapReduce - Terminologia
• Job: unidade de trabalho que o cliente quer ser
realizados
– Dados de entrada + programa MapReduce +
configuração da informação
• Task: parte do trabalho
– Mapa e reduzir tarefas
• Jobtracker: nó que coordena todos os trabalhos
na sistema de agendamento de tarefas para rodar
em tasktrackers.
• TaskTracker: nós que executar tarefas e enviar o
progresso ao jobtracker
30. Exemplo Real
map (String key, String value):
// key: document name
// value: document contents
for each word w in value:
EmitIntermediate(w, "1");
31. Reduce
reduce(String key, Iterator values):
// key: a palavra
// values: a lista de valores
int result = 0;
for each v in values:
result += ParseInt(v);
Emit(AsString(result));
32. Map/Reduce Cluster
Input
files
M map
tasks
Intermediate
files
R reduce
tasks
split 0
split 1
split 2
split 3
split 4
Vários Map ou Reduce
podem ser executados em
um único computador
Output
files
Output 0
Output 1
Cada arquivo
intermediário é dividido em
partições R, pela função de
particionamento
Cada tarefa reduce
corresponde uma
partição
38. Passo a Passo
• Os passos básicos para a execução de um
trabalho Hadoop são:
– Compile o seu trabalho em um arquivo JAR
– Copiar dados de entrada no HDFS
– Execute hadoop passando para o AJR
os parametros relevantes
– Monitorar tarefas via interface Web (opcional)
– Examinar a saída quando o trabalho estiver
completo