5. Grafo Não-Direcionado
1. Vértices
• Todos os vértices denotam o
mesmo tipo de objeto.
2. Arestas
• Todas as arestas denotam o
mesmo tipo de
relacionamento.
• Todas as arestas denotam
um relacionamento
simétrico.
6. Grafo Não-Direcionado no Mundo Real
Grafo de amizade é não-direcionado Grafo de rotas é não-direcionado
7. Grafo Direcionado
1. Vértices
• Todos os vértices denotam o
mesmo tipo de objeto.
2. Arestas
• Todas as arestas denotam o
mesmo tipo de
relacionamento.
• Todas as arestas denotam
um relacionamento
assimétrico.
8. Grafo Direcionado no Mundo Real
Grafo de seguidores no Twitter é direcionado Grafo de citações é direcionado
9. Estruturas de Relacionamento Único
• Sem uma forma de demarcar as arestas, todas as arestas tem
o mesmo significado/tipo.
• É o tipo mais comum de grafo.
12. MapReduce
• Framework para computação distribuída
– Desenvolvedor não se preocupa com protocolos, tolerância a falhas, etc.
– Simplesmente escreve seu código
MAP REDUCE
Aplicar a função a todos Combinar os elementos
elementos de uma lista de uma lista
quadrado x = x * x; reduce (+) [1, 2, 3, 4, 5]
map quadrado [1, 2, 3, 4, 5];
> [1, 4, 9, 16, 25] > 15
15. MapReduce e Pregel
• MapReduce é uma infra-estrutura para computação
distribuída, e Pregel é outra.
• Por que eles fizeram o Pregel?
– MapReduce não é ideal para algoritmos de grafos
• Não suporta comunicação entre os nós.
– Não existe nenhum sistema desse tipo para computação de grafos em
larga-escala.
16. MapReduce e Pregel
• Pregel também usa a estrutura Master/Worker
– Master é responsável por coordenar as atividades dos Workers
– Worker mantém o estado de uma parte do grafo em memória
Master
Worker Worker Worker Worker
17. MapReduce VS Pregel
• No Pregel, o estado do Worker é armazenado
– Um Worker é responsável pelo mesmo conjunto de vértices
– O grafo é carregado na memória uma vez e reutilizado nas iterações
• No Pregel, somente os resultados são enviados
– Não é necessário enviar a estrutura do grafo
– Menor consumo de banda
• No Pregel, há um checkpoint periódico
– Cada Worker grava seu estado em disco
19. O que significa Pregel?
Pregel é o nome do rio que passa sob as pontes de Königsberg.
Destruídas durante a
Segunda Guerra Mundial
Sete pontes de Königsberg
Screenshot do Google Maps
21. Message Passing
• Não garante entrega das mensagens na ordem
• Mensagens são entregues exatamente uma vez (Exactly Once)
• Possível enviar mensagens para qualquer nó
• Se o destino não existe, uma função do usuário é chamada
22. Combiners
• Desabilitado por default
• Usuário especifica uma forma de reduzir várias mensagens
em um valor (igual ao Reduce no MapReduce)
• Extremamente útil em certos contextos (aumenta em 4x a
velocidade em computações de menor caminho)
23. Aggregators
• Usuário especifica uma função
– Cada Worker envia um valor ao aggregator
– Cada Worker recebe um aggregate(vals)
• Pregel inclui um número de agregators predefinidos, como
operações de min, max ou sum
• Pode ser usado para estatísticas e coordenação
24. Topology Mutations
• É possível criar/destruir vértices
• Resolvendo requisições conflitantes
– Ordenação parcial
• Operações de remoção são realizadas primeiro
• Remoção de um vértice implica na remoção de suas arestas
– Handlers definidos pelo usuário
• Usuário resolve os conflitos
25. Input / Output
• Pregel evita impor tipos para formatos de entrada
desacoplando a tarefa de interpretar essas entradas
• Da mesma forma, a saída pode ser gerada em um formato
arbitrário e armazenada da forma mais adequada
26. Master
• Tem controle sobre que Worker tem certa parte do grafo.
– Não conhece cada vértice do grafo
• Coordena todas as operações
• Mantém estatísticas
• É executado em um servidor HTTP para que usuários
visualizem as informações
29. Funcionamento do Pregel
Worker 1
Master
As outras se
tornam Workers Worker 3
Worker 2
Worker N
Worker 4
30. Funcionamento do Pregel
Master particiona a
entrada
Worker 1
Master
Master particiona o
grafo
Worker 2 Worker 3
Worker N
Se um Worker
recebe uma
Worker 4
entrada que não é
para seus vértices,
ele passa adiante
31. Funcionamento do Pregel
Super Etapa: Início
Worker 1
Master
Sincronismo e
coordenação
Worker 2 Worker 3
Worker N
Worker 4
Mensagens entre
2 nós podem ser
combinadas
32. Funcionamento do Pregel
Super Etapa: Checkpoint
Worker 1
Master
Worker 2 Worker 3
Worker N
Banco de Dados
Worker 4
Checkpoint
Master pode dizer
Master pode dizer
aos Workers para
aos Workers para
salvarem seus grafos
salvarem seus grafos
33. Funcionamento do Pregel
Super Etapa:
Todos recarregam
Tolêrancia a Falhas
seus estados através
Worker 1
do último checkpoint
Master
Master usa o “ping”
para detectar falhas Worker 2 Worker 3
nos Workers
Worker N
Banco de Dados
Worker 4
Se um nó falha, o Master
redistribui o grafo e entradas
para os outros Workers
34. Funcionamento do Pregel
Super Etapa:
Recomeçando
Worker 1
Master
Worker 3
Worker N
Worker 4
A Super Etapa então é
recomeçada a partir
do último checkpoint
35. Funcionamento do Pregel
Super Etapa:
Final
Worker 1
Master
Valor final é enviado
para o Master
Workers passam Worker 3
valores para um
Aggregator
Worker N
Worker 4
Aggregator 1 Aggregator 2
Combinam e reduzem
em valores globais
36. Funcionamento do Pregel
Super Etapa: Início da próxima
Início Super Etapa
Worker 1
Master
O Master envia o
valor global para Worker 3
todos os Workers
Worker N
Worker 4
37. Experimentos
• Cluster com 300 PCs multi-núcleos (multicore)
• Checkpoint foi desabilitado
• Peso de todas as arestas setado em 1
• Executado com árvores binárias
38. Variando Número de Workers
• Algoritmo do Menor Caminho
• Árvore binária com 1 bilhão de vértices
174 seg para 17 seg
16x mais Workers
=
10x menos tempo
39. Variando Tamanho do Grafo
• Algoritmo do Menor Caminho
• Árvore binária de 1 bilhão à 50 bilhões de vértices
• 800 Workers
17 seg para 702 seg
Tempo de execução
aumenta linearmente
com o tamanho do grafo
40. Conclusões
• Pregel é uma API de código fechado, porém gratuita
• Inspirado no modelo Bulk Synchronous Parallel
• Provê uma solução fácil para processamento de grafos de
larga-escala
• Acredita-se que 80% dos serviços do Google utilizam o
MapReduce e 20% o Pregel
• Pode ser usado para mapear e estudar os relacionamentos
nas Mídias Sociais
42. Referências
The Graph Traversal Programming Pattern
Marko A. Rodriguez
WindyCityDB – Chicago, Illinois
26 de Junho de 2010
Pregel: A System for Large-Scale Graph Processing
Cris Bunch
UCBS
12 de Outubro de 2010
43. Artigo Original
Pregel: A System for Large-Scale Graph Processing
Grzegorz Malewicz, Matthew H. Austern, Aart J. C. Bik,
James C. Dehnert, Ilan Horn, Naty Leiser, and Grzegorz
Czajkowski
Google Inc.
SIGMOD 2010