Modelos e Sistemas para Computação
Distribuída no Hadoop
Thiago Cardoso | @tncardoso | zahpee.com
São Paulo, BRA
Desafios da Computação Distribuída
Particionamento
dos Dados
Escalonamento
da Execução
Falhas de
Hardware
Comunicação
entr...
A implementação do modelo ‘esconde’ estes desafios
Lógica para
processamento
dos dados
Por que entender os modelos?
NodeManager HiveMetastore
DataNode
Secondary
NameNode
CatalogServer
NameNode JobHistoryServer Impalad
ResourceManager Hive...
Amazon
Elastic
MapReduce
O modelo utilizado deve ser escolhido
de acordo com o problema
MapReduce
MapReduce
● Publicado em 2004 pelo Google
● Usuário define duas funções: map e reduce
(k1, v1) lista(k2, v2)
(k2, lista(v2...
MapReduce
Map Reduce
MapReduce
GFS / HDFS
MapReduce - Contando palavras
palavra1 palavra2
palavra3
palavra1 palavra3
(“palavra1”, 1)
(“palavra1”, 1)
(“palavra2”, 1)...
MapReduce
Crunch
Processamento Iterativo
Jobs iterativos no MapReduce
Leitura dos dados em disco
Jobs iterativos no MapReduce
Leitura dos dados em disco
Mapper emite valores intermediários
Dados ordenados em disco
Jobs iterativos no MapReduce
Leitura dos dados em disco
Mapper emite valores intermediários
Dados ordenados em disco
Dados...
Jobs iterativos no MapReduce
Leitura dos dados em disco
Mapper emite valores intermediários
Dados ordenados em disco
Dados...
Jobs iterativos no MapReduce
Leitura dos dados em disco
Mapper emite valores intermediários
Dados ordenados em disco
Dados...
Bulk Synchronous Parallel
● Publicado em 1990 por Leslie G. Valiant
● Algoritmo BSP -> Sequência de supersteps
● Cada supe...
Bulk Synchronous Parallel
P1 P2 P3 P4 P5 P6
Computação local
Comunicação global
Barreira de sincronização
BSP - Estimando PI
Método de Monte Carlo para
calcular PI
Agregador de resultados parciais
Bulk Synchronous Parallel
● Apache Hama
● BSP compatível com o Hadoop YARN
● Módulo para processamento de grafos
● Módulo ...
Processamento de Grafos
Pregel
● Publicado em 2010 pelo Google
● Inspirado no BSP com foco em Grafos
● Um processo para cada vértice
● Vértices e ...
Pregel
superstep 0A : 3 B : 6 C : 2 D : 1
Pregel
superstep 0
superstep 1
A : 3 B : 6 C : 2 D : 1
A : 6 B : 6 D : 6C : 2
Pregel
superstep 0
superstep 1
superstep 2
A : 3 B : 6 C : 2 D : 1
A : 6
A : 6
B : 6
B : 6
D : 6
D : 6
C : 2
C : 6
Pregel
superstep 0
superstep 1
superstep 2
superstep 3
A : 3 B : 6 C : 2 D : 1
A : 6
A : 6
A : 6
B : 6
B : 6
B : 6
D : 6
D...
Pregel
Apache Giraph Apache Hama
Processamento Real-time
Dremel
● Publicado em 2010 pelo Google
● Engine para execução de consultas
● Dados armazenados em formato
orientado a colu...
Dremel
Camada de armazenamento (ex. GFS,
HDFS)
SELECT A, COUNT(B) FROM T GROUP BY A
SELECT A, SUM(c) FROM
(R1 UNION ALL .....
Dremel
Spark
Processamento em Batch Sistemas Especializados
Spark
● Desenvolvido inicialmente em Berkeley
● 80 operadores para escrita de software paralelo
● Resilient Distributed Da...
Spark: Resilient Distributed Datasets
● Coleção de dados particionada somente-leitura
● Criados por operações determinísti...
Spark: Contando palavras
file = spark.textFile("hdfs://...")
file.flatMap(lambda line: line.split())
.map(lambda word: (wo...
Spark: Contando palavras
A B C D
flatMap map reduceByKey
Spark: Resilient Distributed Datasets
Spark: Resilient Distributed Datasets
Spark: Resilient Distributed Datasets
Spark
● Comunidade crescente
● Sub-projetos:
○ GraphX - Processamento de Grafos
○ Shark - Execução de SQL
○ Spark Streamin...
TL;DR
Hadoop
MapReduce
Hama Giraph Impala/Drill Spark
Modelo MapReduce BSP/Pregel Pregel Dremel RDD
Algoritmos
iterativos
x x x
...
Thiago Cardoso | @tncardoso | zahpee.com
São Paulo, BRA
Imagens
● Ungroup designed by Steve Swedler from the Noun Project
● Broken Machine by Anton Håkanson from The Noun Project...
Referências
● http://parquet.io/
● A bridging model for parallel computation
● https://www.usenix.org/system/files/confere...
Modelos de computação distribuída no Hadoop
Modelos de computação distribuída no Hadoop
Modelos de computação distribuída no Hadoop
Modelos de computação distribuída no Hadoop
Upcoming SlideShare
Loading in...5
×

Modelos de computação distribuída no Hadoop

137

Published on

Modelos de computação distribuída no Hadoop

O desenvolvimento de uma aplicação distribuída requer diversos conhecimentos para lidar com problemas como: particionamento de entrada, escalonamento da execução, comunicação entre as máquinas e falhas no cluster. Para que o desenvolvedor possa focar somente na aplicação que está sendo desenvolvida, diversos modelos para processar os dados distribuídos foram criados. Cada modelo tem suas características, pontos fracos e fortes, que os fazem apropriados para determinados tipos de aplicações. A apresentação irá abordar os temas: Hadoop 2/Map Reduce; Bulk Synchronous Parallel; Pregel; Dremel; Processamento de Stream; Próximas tecnologias.

Tiago Cardoso

Co-fundador e CTO da Zahpee.

Mestre em Ciência da Computação pela UFMG. Co-fundador e CTO da Zahpee, trabalha há mais de quatro anos no desenvolvimento de produtos para coleta, processamento e visualização de dados.

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
137
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
4
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Modelos de computação distribuída no Hadoop

  1. 1. Modelos e Sistemas para Computação Distribuída no Hadoop Thiago Cardoso | @tncardoso | zahpee.com São Paulo, BRA
  2. 2. Desafios da Computação Distribuída Particionamento dos Dados Escalonamento da Execução Falhas de Hardware Comunicação entre Máquinas
  3. 3. A implementação do modelo ‘esconde’ estes desafios Lógica para processamento dos dados
  4. 4. Por que entender os modelos?
  5. 5. NodeManager HiveMetastore DataNode Secondary NameNode CatalogServer NameNode JobHistoryServer Impalad ResourceManager HiveServerStateStore
  6. 6. Amazon Elastic MapReduce
  7. 7. O modelo utilizado deve ser escolhido de acordo com o problema
  8. 8. MapReduce
  9. 9. MapReduce ● Publicado em 2004 pelo Google ● Usuário define duas funções: map e reduce (k1, v1) lista(k2, v2) (k2, lista(v2)) lista(v2) Map: Reduce:
  10. 10. MapReduce Map Reduce
  11. 11. MapReduce GFS / HDFS
  12. 12. MapReduce - Contando palavras palavra1 palavra2 palavra3 palavra1 palavra3 (“palavra1”, 1) (“palavra1”, 1) (“palavra2”, 1) (“palavra3”, 1) (“palavra3”, 1) (“palavra1”, 2) (“palavra2”, 1) (“palavra3”, 2) + + + Map Reduce
  13. 13. MapReduce Crunch
  14. 14. Processamento Iterativo
  15. 15. Jobs iterativos no MapReduce Leitura dos dados em disco
  16. 16. Jobs iterativos no MapReduce Leitura dos dados em disco Mapper emite valores intermediários Dados ordenados em disco
  17. 17. Jobs iterativos no MapReduce Leitura dos dados em disco Mapper emite valores intermediários Dados ordenados em disco Dados enviados para reducers
  18. 18. Jobs iterativos no MapReduce Leitura dos dados em disco Mapper emite valores intermediários Dados ordenados em disco Dados enviados para reducers Resultado escrito em disco
  19. 19. Jobs iterativos no MapReduce Leitura dos dados em disco Mapper emite valores intermediários Dados ordenados em disco Dados enviados para reducers Resultado escrito em disco Novo job é criado
  20. 20. Bulk Synchronous Parallel ● Publicado em 1990 por Leslie G. Valiant ● Algoritmo BSP -> Sequência de supersteps ● Cada superstep tem três fases
  21. 21. Bulk Synchronous Parallel P1 P2 P3 P4 P5 P6 Computação local Comunicação global Barreira de sincronização
  22. 22. BSP - Estimando PI Método de Monte Carlo para calcular PI Agregador de resultados parciais
  23. 23. Bulk Synchronous Parallel ● Apache Hama ● BSP compatível com o Hadoop YARN ● Módulo para processamento de grafos ● Módulo para Machine Learning
  24. 24. Processamento de Grafos
  25. 25. Pregel ● Publicado em 2010 pelo Google ● Inspirado no BSP com foco em Grafos ● Um processo para cada vértice ● Vértices e arestas ficam armazenados localmente
  26. 26. Pregel superstep 0A : 3 B : 6 C : 2 D : 1
  27. 27. Pregel superstep 0 superstep 1 A : 3 B : 6 C : 2 D : 1 A : 6 B : 6 D : 6C : 2
  28. 28. Pregel superstep 0 superstep 1 superstep 2 A : 3 B : 6 C : 2 D : 1 A : 6 A : 6 B : 6 B : 6 D : 6 D : 6 C : 2 C : 6
  29. 29. Pregel superstep 0 superstep 1 superstep 2 superstep 3 A : 3 B : 6 C : 2 D : 1 A : 6 A : 6 A : 6 B : 6 B : 6 B : 6 D : 6 D : 6 D : 6 C : 2 C : 6 C : 6
  30. 30. Pregel Apache Giraph Apache Hama
  31. 31. Processamento Real-time
  32. 32. Dremel ● Publicado em 2010 pelo Google ● Engine para execução de consultas ● Dados armazenados em formato orientado a colunas ● Queries executadas de forma nativa (não utiliza MapReduce)
  33. 33. Dremel Camada de armazenamento (ex. GFS, HDFS) SELECT A, COUNT(B) FROM T GROUP BY A SELECT A, SUM(c) FROM (R1 UNION ALL ...Rn) GROUP BY A Ri = SELECT A, COUNT(B) AS c FROM Ti GROUP BY A servidor raíz servidores intermediários servidores folha
  34. 34. Dremel
  35. 35. Spark
  36. 36. Processamento em Batch Sistemas Especializados
  37. 37. Spark ● Desenvolvido inicialmente em Berkeley ● 80 operadores para escrita de software paralelo ● Resilient Distributed Datasets (RDDs)
  38. 38. Spark: Resilient Distributed Datasets ● Coleção de dados particionada somente-leitura ● Criados por operações determinísticas (transformações) em outro RDD ou arquivo ● Usuário define particionamento (otimizações de localidade) e armazenamento (RAM, disco)
  39. 39. Spark: Contando palavras file = spark.textFile("hdfs://...") file.flatMap(lambda line: line.split()) .map(lambda word: (word, 1)) .reduceByKey(lambda a, b: a+b)
  40. 40. Spark: Contando palavras A B C D flatMap map reduceByKey
  41. 41. Spark: Resilient Distributed Datasets
  42. 42. Spark: Resilient Distributed Datasets
  43. 43. Spark: Resilient Distributed Datasets
  44. 44. Spark ● Comunidade crescente ● Sub-projetos: ○ GraphX - Processamento de Grafos ○ Shark - Execução de SQL ○ Spark Streaming ○ MLlib - Machine Learning
  45. 45. TL;DR
  46. 46. Hadoop MapReduce Hama Giraph Impala/Drill Spark Modelo MapReduce BSP/Pregel Pregel Dremel RDD Algoritmos iterativos x x x Grafos x x x Tolerancia a falhas x x x - x Real-time x x
  47. 47. Thiago Cardoso | @tncardoso | zahpee.com São Paulo, BRA
  48. 48. Imagens ● Ungroup designed by Steve Swedler from the Noun Project ● Broken Machine by Anton Håkanson from The Noun Project ● Plug designed by Nick Abrams from the Noun Project ● Hour Glass designed by Benni from the Noun Project ● "Microsoft Bing Maps' datacenter" by Robert Scoble ● "DSCN9980" by mtneer_man ● Computer designed by Claudine Rodriguez from the Noun Project
  49. 49. Referências ● http://parquet.io/ ● A bridging model for parallel computation ● https://www.usenix.org/system/files/conference/nsdi12/nsdi12-final138.pdf ● http://research.google.com/archive/mapreduce.html ● http://dl.acm.org/citation.cfm?id=1807184 ● http://research.google.com/pubs/pub36632.html ● https://hama.apache.org/ ● http://hive.apache.org/ ● https://giraph.apache.org/ ● http://spark.apache.org/ ● http://pig.apache.org/ ● http://crunch.apache.org/
  1. Gostou de algum slide específico?

    Recortar slides é uma maneira fácil de colecionar informações para acessar mais tarde.

×