pregel: um sistema de processamento de grafos em larga-escala

43
Pregel: A System for Large-Scale Graph Processing Escrito por G. Malewicz et al. no SIGMOD 2010

Upload: bruno-cunha

Post on 25-May-2015

1.207 views

Category:

Technology


3 download

TRANSCRIPT

Page 1: Pregel: Um Sistema de Processamento de Grafos em Larga-Escala

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

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

Sumário

• Grafos

• MapReduce

• Pregel

• Experimentos

• Conclusão

Page 4: Pregel: Um Sistema de Processamento de Grafos em Larga-Escala

Grafo

Page 5: Pregel: Um Sistema de Processamento de Grafos em Larga-Escala

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

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

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

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

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

Como Modelar um Mundo com Múltiplas Estruturas?

Page 11: Pregel: Um Sistema de Processamento de Grafos em Larga-Escala

MAPREDUCE E PREGEL Google Inc.

Page 12: Pregel: Um Sistema de Processamento de Grafos em Larga-Escala

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

MapReduce

• Funcionamento básico

Entrada Map Reduce Saída

Page 14: Pregel: Um Sistema de Processamento de Grafos em Larga-Escala

MapReduce

MAP REDUCE Organiza

Entrada Saída

Page 15: Pregel: Um Sistema de Processamento de Grafos em Larga-Escala

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

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

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

PREGEL Processamento de Grafos de Larga-Escala

Page 19: Pregel: Um Sistema de Processamento de Grafos em 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

Page 20: Pregel: Um Sistema de Processamento de Grafos em Larga-Escala

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

PERGUNTAS? Obrigado!

Page 42: Pregel: Um Sistema de Processamento de Grafos em Larga-Escala

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

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