SlideShare uma empresa Scribd logo
1 de 43
Baixar para ler offline
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?
Google Inc.

MAPREDUCE E PREGEL
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
MapReduce

• Funcionamento básico




Entrada      Map         Reduce   Saída
MapReduce




          MAP   Organiza   REDUCE




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
Processamento de Grafos de Larga-Escala

PREGEL
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
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ó 1
  Nó 5




               Nó 2            Nó 3



Nó N


                 Nó 4
Funcionamento do Pregel
Uma máquina se
 torna Master
                                         Nó 1
                  Master




                                Nó 2            Nó 3



                 Nó N


                                  Nó 4
Funcionamento do Pregel


                                       Worker 1
                   Master


  As outras se
tornam Workers                                    Worker 3
                                Worker 2


                 Worker N


                                  Worker 4
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
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
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
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
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
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
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
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
Obrigado!

PERGUNTAS?
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

Mais conteúdo relacionado

Destaque

Clipping ring lovers fevereiro maxima
Clipping ring lovers   fevereiro maximaClipping ring lovers   fevereiro maxima
Clipping ring lovers fevereiro maximadomingosacervo
 
Arquitectura defensiva en el castro de Castromaior
Arquitectura defensiva en el castro de CastromaiorArquitectura defensiva en el castro de Castromaior
Arquitectura defensiva en el castro de CastromaiorMiguel Angel Lopez Marcos
 
Utfprfazpesquisa claudia bordinrodrigues_nov2016
Utfprfazpesquisa claudia bordinrodrigues_nov2016Utfprfazpesquisa claudia bordinrodrigues_nov2016
Utfprfazpesquisa claudia bordinrodrigues_nov2016profclaubordin
 
Folha Dominical - 18.11.12 Nº 449
Folha Dominical - 18.11.12 Nº 449Folha Dominical - 18.11.12 Nº 449
Folha Dominical - 18.11.12 Nº 449Comunidades Vivas
 
Clipping jessica di netti fevereiro shape
Clipping jessica di netti   fevereiro shapeClipping jessica di netti   fevereiro shape
Clipping jessica di netti fevereiro shapedomingosacervo
 
O calendário do jorge 2014
O calendário do jorge 2014O calendário do jorge 2014
O calendário do jorge 2014Jorge Biber
 
Mi vida jhon sebastian vinasco
Mi vida  jhon sebastian vinascoMi vida  jhon sebastian vinasco
Mi vida jhon sebastian vinascolucesitamomo14
 
Vertical publisitaria de mi campaña
Vertical publisitaria de mi campañaVertical publisitaria de mi campaña
Vertical publisitaria de mi campañaAndresgarciazuccardi
 
Hotel Data and Analytics News - October 2016
Hotel Data and Analytics News - October 2016Hotel Data and Analytics News - October 2016
Hotel Data and Analytics News - October 2016SnapShot Travel
 
Folha Dominical - 21.03.10 Nº314
Folha Dominical - 21.03.10 Nº314Folha Dominical - 21.03.10 Nº314
Folha Dominical - 21.03.10 Nº314Comunidades Vivas
 

Destaque (13)

Clipping ring lovers fevereiro maxima
Clipping ring lovers   fevereiro maximaClipping ring lovers   fevereiro maxima
Clipping ring lovers fevereiro maxima
 
Ejercicio1
Ejercicio1Ejercicio1
Ejercicio1
 
Arquitectura defensiva en el castro de Castromaior
Arquitectura defensiva en el castro de CastromaiorArquitectura defensiva en el castro de Castromaior
Arquitectura defensiva en el castro de Castromaior
 
Utfprfazpesquisa claudia bordinrodrigues_nov2016
Utfprfazpesquisa claudia bordinrodrigues_nov2016Utfprfazpesquisa claudia bordinrodrigues_nov2016
Utfprfazpesquisa claudia bordinrodrigues_nov2016
 
Contrasenas cadivi
Contrasenas cadiviContrasenas cadivi
Contrasenas cadivi
 
Folha Dominical - 18.11.12 Nº 449
Folha Dominical - 18.11.12 Nº 449Folha Dominical - 18.11.12 Nº 449
Folha Dominical - 18.11.12 Nº 449
 
Clipping jessica di netti fevereiro shape
Clipping jessica di netti   fevereiro shapeClipping jessica di netti   fevereiro shape
Clipping jessica di netti fevereiro shape
 
Projeto meu lugar no mundo
Projeto meu lugar no mundoProjeto meu lugar no mundo
Projeto meu lugar no mundo
 
O calendário do jorge 2014
O calendário do jorge 2014O calendário do jorge 2014
O calendário do jorge 2014
 
Mi vida jhon sebastian vinasco
Mi vida  jhon sebastian vinascoMi vida  jhon sebastian vinasco
Mi vida jhon sebastian vinasco
 
Vertical publisitaria de mi campaña
Vertical publisitaria de mi campañaVertical publisitaria de mi campaña
Vertical publisitaria de mi campaña
 
Hotel Data and Analytics News - October 2016
Hotel Data and Analytics News - October 2016Hotel Data and Analytics News - October 2016
Hotel Data and Analytics News - October 2016
 
Folha Dominical - 21.03.10 Nº314
Folha Dominical - 21.03.10 Nº314Folha Dominical - 21.03.10 Nº314
Folha Dominical - 21.03.10 Nº314
 

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

  • 1. Pregel: A System for Large-Scale Graph Processing Escrito por G. Malewicz et al. no SIGMOD 2010
  • 2. Pregel Um Sistema de Processamento de Grafos em Larga-Escala Sábado, 11 de Junho de 2011 Apresentado por: Bruno Cunha
  • 3. Sumário • Grafos • MapReduce • Pregel • Experimentos • Conclusão
  • 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.
  • 10. Como Modelar um Mundo com Múltiplas Estruturas?
  • 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
  • 14. MapReduce MAP Organiza REDUCE Entrada Saída
  • 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
  • 18. Processamento de Grafos de Larga-Escala PREGEL
  • 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
  • 20. 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)
  • 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
  • 27. Funcionamento do Pregel Nó 1 Nó 5 Nó 2 Nó 3 Nó N Nó 4
  • 28. Funcionamento do Pregel Uma máquina se torna Master Nó 1 Master Nó 2 Nó 3 Nó N Nó 4
  • 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