pregel: um sistema de processamento de grafos em larga-escala
TRANSCRIPT
![Page 1: Pregel: Um Sistema de Processamento de Grafos em Larga-Escala](https://reader031.vdocuments.pub/reader031/viewer/2022012318/55626392d8b42aed7d8b4d78/html5/thumbnails/1.jpg)
Pregel: A System for Large-Scale Graph Processing
Escrito por G. Malewicz et al. no SIGMOD 2010
![Page 2: Pregel: Um Sistema de Processamento de Grafos em Larga-Escala](https://reader031.vdocuments.pub/reader031/viewer/2022012318/55626392d8b42aed7d8b4d78/html5/thumbnails/2.jpg)
Pregel Um Sistema de Processamento de
Grafos em Larga-Escala
Sábado, 11 de Junho de 2011
Apresentado por: Bruno Cunha
![Page 3: Pregel: Um Sistema de Processamento de Grafos em Larga-Escala](https://reader031.vdocuments.pub/reader031/viewer/2022012318/55626392d8b42aed7d8b4d78/html5/thumbnails/3.jpg)
Sumário
• Grafos
• MapReduce
• Pregel
• Experimentos
• Conclusão
![Page 4: Pregel: Um Sistema de Processamento de Grafos em Larga-Escala](https://reader031.vdocuments.pub/reader031/viewer/2022012318/55626392d8b42aed7d8b4d78/html5/thumbnails/4.jpg)
Grafo
![Page 5: Pregel: Um Sistema de Processamento de Grafos em Larga-Escala](https://reader031.vdocuments.pub/reader031/viewer/2022012318/55626392d8b42aed7d8b4d78/html5/thumbnails/5.jpg)
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.
![Page 6: Pregel: Um Sistema de Processamento de Grafos em Larga-Escala](https://reader031.vdocuments.pub/reader031/viewer/2022012318/55626392d8b42aed7d8b4d78/html5/thumbnails/6.jpg)
Grafo Não-Direcionado no Mundo Real
Grafo de amizade é não-direcionado Grafo de rotas é não-direcionado
![Page 7: Pregel: Um Sistema de Processamento de Grafos em Larga-Escala](https://reader031.vdocuments.pub/reader031/viewer/2022012318/55626392d8b42aed7d8b4d78/html5/thumbnails/7.jpg)
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.
![Page 8: Pregel: Um Sistema de Processamento de Grafos em Larga-Escala](https://reader031.vdocuments.pub/reader031/viewer/2022012318/55626392d8b42aed7d8b4d78/html5/thumbnails/8.jpg)
Grafo Direcionado no Mundo Real
Grafo de seguidores no Twitter é direcionado Grafo de citações é direcionado
![Page 9: Pregel: Um Sistema de Processamento de Grafos em Larga-Escala](https://reader031.vdocuments.pub/reader031/viewer/2022012318/55626392d8b42aed7d8b4d78/html5/thumbnails/9.jpg)
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.
![Page 10: Pregel: Um Sistema de Processamento de Grafos em Larga-Escala](https://reader031.vdocuments.pub/reader031/viewer/2022012318/55626392d8b42aed7d8b4d78/html5/thumbnails/10.jpg)
Como Modelar um Mundo com Múltiplas Estruturas?
![Page 11: Pregel: Um Sistema de Processamento de Grafos em Larga-Escala](https://reader031.vdocuments.pub/reader031/viewer/2022012318/55626392d8b42aed7d8b4d78/html5/thumbnails/11.jpg)
MAPREDUCE E PREGEL Google Inc.
![Page 12: Pregel: Um Sistema de Processamento de Grafos em Larga-Escala](https://reader031.vdocuments.pub/reader031/viewer/2022012318/55626392d8b42aed7d8b4d78/html5/thumbnails/12.jpg)
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 Aplicar a função a todos elementos de uma lista
REDUCE Combinar os elementos de uma lista
quadrado x = x * x; map quadrado [1, 2, 3, 4, 5];
> [1, 4, 9, 16, 25]
reduce (+) [1, 2, 3, 4, 5]
> 15
![Page 13: Pregel: Um Sistema de Processamento de Grafos em Larga-Escala](https://reader031.vdocuments.pub/reader031/viewer/2022012318/55626392d8b42aed7d8b4d78/html5/thumbnails/13.jpg)
MapReduce
• Funcionamento básico
Entrada Map Reduce Saída
![Page 14: Pregel: Um Sistema de Processamento de Grafos em Larga-Escala](https://reader031.vdocuments.pub/reader031/viewer/2022012318/55626392d8b42aed7d8b4d78/html5/thumbnails/14.jpg)
MapReduce
MAP REDUCE Organiza
Entrada Saída
![Page 15: Pregel: Um Sistema de Processamento de Grafos em Larga-Escala](https://reader031.vdocuments.pub/reader031/viewer/2022012318/55626392d8b42aed7d8b4d78/html5/thumbnails/15.jpg)
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.
![Page 16: Pregel: Um Sistema de Processamento de Grafos em Larga-Escala](https://reader031.vdocuments.pub/reader031/viewer/2022012318/55626392d8b42aed7d8b4d78/html5/thumbnails/16.jpg)
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
![Page 17: Pregel: Um Sistema de Processamento de Grafos em Larga-Escala](https://reader031.vdocuments.pub/reader031/viewer/2022012318/55626392d8b42aed7d8b4d78/html5/thumbnails/17.jpg)
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
![Page 18: Pregel: Um Sistema de Processamento de Grafos em Larga-Escala](https://reader031.vdocuments.pub/reader031/viewer/2022012318/55626392d8b42aed7d8b4d78/html5/thumbnails/18.jpg)
PREGEL Processamento de Grafos de Larga-Escala
![Page 19: Pregel: Um Sistema de Processamento de Grafos em Larga-Escala](https://reader031.vdocuments.pub/reader031/viewer/2022012318/55626392d8b42aed7d8b4d78/html5/thumbnails/19.jpg)
O que significa Pregel?
Pregel é o nome do rio que passa sob as pontes de Königsberg.
Screenshot do Google Maps
Sete pontes de Königsberg
Destruídas durante a Segunda Guerra Mundial
![Page 20: Pregel: Um Sistema de Processamento de Grafos em Larga-Escala](https://reader031.vdocuments.pub/reader031/viewer/2022012318/55626392d8b42aed7d8b4d78/html5/thumbnails/20.jpg)
Estrutura Pregel
• Mestre (Master)
• Trabalhador (Worker)
• Passagem de Mensagem (Message Passing)
• Combinadores (Combiners)
• Agregadores (Aggregators)
• Mudança de Topologia (Topology Mutations)
• Entrada e Saída (Input/Output)
![Page 21: Pregel: Um Sistema de Processamento de Grafos em Larga-Escala](https://reader031.vdocuments.pub/reader031/viewer/2022012318/55626392d8b42aed7d8b4d78/html5/thumbnails/21.jpg)
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
![Page 22: Pregel: Um Sistema de Processamento de Grafos em Larga-Escala](https://reader031.vdocuments.pub/reader031/viewer/2022012318/55626392d8b42aed7d8b4d78/html5/thumbnails/22.jpg)
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)
![Page 23: Pregel: Um Sistema de Processamento de Grafos em Larga-Escala](https://reader031.vdocuments.pub/reader031/viewer/2022012318/55626392d8b42aed7d8b4d78/html5/thumbnails/23.jpg)
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
![Page 24: Pregel: Um Sistema de Processamento de Grafos em Larga-Escala](https://reader031.vdocuments.pub/reader031/viewer/2022012318/55626392d8b42aed7d8b4d78/html5/thumbnails/24.jpg)
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
![Page 25: Pregel: Um Sistema de Processamento de Grafos em Larga-Escala](https://reader031.vdocuments.pub/reader031/viewer/2022012318/55626392d8b42aed7d8b4d78/html5/thumbnails/25.jpg)
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
![Page 26: Pregel: Um Sistema de Processamento de Grafos em Larga-Escala](https://reader031.vdocuments.pub/reader031/viewer/2022012318/55626392d8b42aed7d8b4d78/html5/thumbnails/26.jpg)
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
![Page 27: Pregel: Um Sistema de Processamento de Grafos em Larga-Escala](https://reader031.vdocuments.pub/reader031/viewer/2022012318/55626392d8b42aed7d8b4d78/html5/thumbnails/27.jpg)
Funcionamento do Pregel
Nó 3
Nó 1
Nó 4
Nó 2
Nó 5
Nó N
![Page 28: Pregel: Um Sistema de Processamento de Grafos em Larga-Escala](https://reader031.vdocuments.pub/reader031/viewer/2022012318/55626392d8b42aed7d8b4d78/html5/thumbnails/28.jpg)
Funcionamento do Pregel
Nó 3
Nó 1
Nó 4
Nó 2
Master
Nó N
Uma máquina se torna Master
![Page 29: Pregel: Um Sistema de Processamento de Grafos em Larga-Escala](https://reader031.vdocuments.pub/reader031/viewer/2022012318/55626392d8b42aed7d8b4d78/html5/thumbnails/29.jpg)
Funcionamento do Pregel
Worker 3
Worker 1
Worker 4
Worker 2
Master
Worker N
As outras se tornam Workers
As outras se tornam Workers
As outras se tornam Workers
![Page 30: Pregel: Um Sistema de Processamento de Grafos em Larga-Escala](https://reader031.vdocuments.pub/reader031/viewer/2022012318/55626392d8b42aed7d8b4d78/html5/thumbnails/30.jpg)
Funcionamento do Pregel
Worker 3
Worker 1
Worker 4
Worker 2
Master
Worker N
Master particiona o grafo
Master particiona a entrada
Se um Worker recebe uma
entrada que não é para seus vértices, ele passa adiante
![Page 31: Pregel: Um Sistema de Processamento de Grafos em Larga-Escala](https://reader031.vdocuments.pub/reader031/viewer/2022012318/55626392d8b42aed7d8b4d78/html5/thumbnails/31.jpg)
Funcionamento do Pregel
Worker 3
Worker 1
Worker 4
Worker 2
Master
Worker N
Super Etapa: Início
Sincronismo e coordenação
Mensagens entre 2 nós podem ser
combinadas
![Page 32: Pregel: Um Sistema de Processamento de Grafos em Larga-Escala](https://reader031.vdocuments.pub/reader031/viewer/2022012318/55626392d8b42aed7d8b4d78/html5/thumbnails/32.jpg)
Funcionamento do Pregel
Worker 3
Worker 1
Worker 4
Worker 2
Master
Worker N
Super Etapa: Checkpoint
Banco de Dados
Master pode dizer aos Workers para
salvarem seus grafos
Checkpoint Master pode dizer aos Workers para
salvarem seus grafos
![Page 33: Pregel: Um Sistema de Processamento de Grafos em Larga-Escala](https://reader031.vdocuments.pub/reader031/viewer/2022012318/55626392d8b42aed7d8b4d78/html5/thumbnails/33.jpg)
Funcionamento do Pregel
Worker 3
Worker 1
Worker 4
Worker 2
Master
Worker N
Super Etapa: Tolêrancia a Falhas
Se um nó falha, o Master redistribui o grafo e entradas
para os outros Workers
Master usa o “ping” para detectar falhas
nos Workers
Todos recarregam seus estados através do último checkpoint
Banco de Dados
![Page 34: Pregel: Um Sistema de Processamento de Grafos em Larga-Escala](https://reader031.vdocuments.pub/reader031/viewer/2022012318/55626392d8b42aed7d8b4d78/html5/thumbnails/34.jpg)
Funcionamento do Pregel
Worker 3
Worker 1
Worker 4
Master
Worker N
Super Etapa: Recomeçando
A Super Etapa então é recomeçada a partir do último checkpoint
![Page 35: Pregel: Um Sistema de Processamento de Grafos em Larga-Escala](https://reader031.vdocuments.pub/reader031/viewer/2022012318/55626392d8b42aed7d8b4d78/html5/thumbnails/35.jpg)
Funcionamento do Pregel
Worker 3
Worker 1
Worker 4
Master
Worker N
Super Etapa: Final
Aggregator 1 Aggregator 2
Workers passam valores para um
Aggregator
Combinam e reduzem em valores globais
Valor final é enviado para o Master
![Page 36: Pregel: Um Sistema de Processamento de Grafos em Larga-Escala](https://reader031.vdocuments.pub/reader031/viewer/2022012318/55626392d8b42aed7d8b4d78/html5/thumbnails/36.jpg)
Funcionamento do Pregel
Worker 3
Worker 1
Worker 4
Master
Worker N
Super Etapa: Início
O Master envia o valor global para todos os Workers
Início da próxima Super Etapa
![Page 37: Pregel: Um Sistema de Processamento de Grafos em Larga-Escala](https://reader031.vdocuments.pub/reader031/viewer/2022012318/55626392d8b42aed7d8b4d78/html5/thumbnails/37.jpg)
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
![Page 38: Pregel: Um Sistema de Processamento de Grafos em Larga-Escala](https://reader031.vdocuments.pub/reader031/viewer/2022012318/55626392d8b42aed7d8b4d78/html5/thumbnails/38.jpg)
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
![Page 39: Pregel: Um Sistema de Processamento de Grafos em Larga-Escala](https://reader031.vdocuments.pub/reader031/viewer/2022012318/55626392d8b42aed7d8b4d78/html5/thumbnails/39.jpg)
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
![Page 40: Pregel: Um Sistema de Processamento de Grafos em Larga-Escala](https://reader031.vdocuments.pub/reader031/viewer/2022012318/55626392d8b42aed7d8b4d78/html5/thumbnails/40.jpg)
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
![Page 41: Pregel: Um Sistema de Processamento de Grafos em Larga-Escala](https://reader031.vdocuments.pub/reader031/viewer/2022012318/55626392d8b42aed7d8b4d78/html5/thumbnails/41.jpg)
PERGUNTAS? Obrigado!
![Page 42: Pregel: Um Sistema de Processamento de Grafos em Larga-Escala](https://reader031.vdocuments.pub/reader031/viewer/2022012318/55626392d8b42aed7d8b4d78/html5/thumbnails/42.jpg)
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
![Page 43: Pregel: Um Sistema de Processamento de Grafos em Larga-Escala](https://reader031.vdocuments.pub/reader031/viewer/2022012318/55626392d8b42aed7d8b4d78/html5/thumbnails/43.jpg)
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