Upload
bruno-cunha
View
1.208
Download
3
Embed Size (px)
Citation preview
Pregel: A System for Large-Scale Graph Processing
Escrito por G. Malewicz et al. no SIGMOD 2010
Pregel Um Sistema de Processamento de
Grafos em Larga-Escala
Sábado, 11 de Junho de 2011
Apresentado por: Bruno Cunha
Sumário
• Grafos
• MapReduce
• Pregel
• Experimentos
• Conclusão
Grafo
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.
Grafo Não-Direcionado no Mundo Real
Grafo de amizade é não-direcionado Grafo de rotas é não-direcionado
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.
Grafo Direcionado no Mundo Real
Grafo de seguidores no Twitter é direcionado Grafo de citações é direcionado
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.
Como Modelar um Mundo com Múltiplas Estruturas?
MAPREDUCE E PREGEL Google Inc.
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
MapReduce
• Funcionamento básico
Entrada Map Reduce Saída
MapReduce
MAP REDUCE Organiza
Entrada Saída
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.
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
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
PREGEL Processamento de Grafos de Larga-Escala
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
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)
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
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)
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
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
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
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
Funcionamento do Pregel
Nó 3
Nó 1
Nó 4
Nó 2
Nó 5
Nó N
Funcionamento do Pregel
Nó 3
Nó 1
Nó 4
Nó 2
Master
Nó N
Uma máquina se torna Master
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
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
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
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
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
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
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
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
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
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
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
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
PERGUNTAS? Obrigado!
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
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