modelos de computação distribuída no hadoop
DESCRIPTION
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.TRANSCRIPT
![Page 1: Modelos de computação distribuída no Hadoop](https://reader031.vdocuments.pub/reader031/viewer/2022020717/55930d741a28ab0b318b4677/html5/thumbnails/1.jpg)
Modelos e Sistemas para Computação Distribuída no HadoopThiago Cardoso | @tncardoso | zahpee.com
São Paulo, BRA
![Page 2: Modelos de computação distribuída no Hadoop](https://reader031.vdocuments.pub/reader031/viewer/2022020717/55930d741a28ab0b318b4677/html5/thumbnails/2.jpg)
Desafios da Computação Distribuída
Particionamentodos Dados
Escalonamentoda Execução
Falhas deHardware
Comunicaçãoentre Máquinas
![Page 3: Modelos de computação distribuída no Hadoop](https://reader031.vdocuments.pub/reader031/viewer/2022020717/55930d741a28ab0b318b4677/html5/thumbnails/3.jpg)
A implementação do modelo ‘esconde’ estes desafios
Lógica para
processamento
dos dados
![Page 4: Modelos de computação distribuída no Hadoop](https://reader031.vdocuments.pub/reader031/viewer/2022020717/55930d741a28ab0b318b4677/html5/thumbnails/4.jpg)
Por que entender os modelos?
![Page 5: Modelos de computação distribuída no Hadoop](https://reader031.vdocuments.pub/reader031/viewer/2022020717/55930d741a28ab0b318b4677/html5/thumbnails/5.jpg)
![Page 6: Modelos de computação distribuída no Hadoop](https://reader031.vdocuments.pub/reader031/viewer/2022020717/55930d741a28ab0b318b4677/html5/thumbnails/6.jpg)
![Page 7: Modelos de computação distribuída no Hadoop](https://reader031.vdocuments.pub/reader031/viewer/2022020717/55930d741a28ab0b318b4677/html5/thumbnails/7.jpg)
![Page 8: Modelos de computação distribuída no Hadoop](https://reader031.vdocuments.pub/reader031/viewer/2022020717/55930d741a28ab0b318b4677/html5/thumbnails/8.jpg)
![Page 9: Modelos de computação distribuída no Hadoop](https://reader031.vdocuments.pub/reader031/viewer/2022020717/55930d741a28ab0b318b4677/html5/thumbnails/9.jpg)
NodeManager HiveMetastore
DataNodeSecondaryNameNode CatalogServer
NameNode JobHistoryServer Impalad
ResourceManager HiveServerStateStore
![Page 10: Modelos de computação distribuída no Hadoop](https://reader031.vdocuments.pub/reader031/viewer/2022020717/55930d741a28ab0b318b4677/html5/thumbnails/10.jpg)
Amazon Elastic
MapReduce
![Page 11: Modelos de computação distribuída no Hadoop](https://reader031.vdocuments.pub/reader031/viewer/2022020717/55930d741a28ab0b318b4677/html5/thumbnails/11.jpg)
O modelo utilizado deve ser escolhido de acordo com o problema
![Page 12: Modelos de computação distribuída no Hadoop](https://reader031.vdocuments.pub/reader031/viewer/2022020717/55930d741a28ab0b318b4677/html5/thumbnails/12.jpg)
MapReduce
![Page 13: Modelos de computação distribuída no Hadoop](https://reader031.vdocuments.pub/reader031/viewer/2022020717/55930d741a28ab0b318b4677/html5/thumbnails/13.jpg)
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:
![Page 14: Modelos de computação distribuída no Hadoop](https://reader031.vdocuments.pub/reader031/viewer/2022020717/55930d741a28ab0b318b4677/html5/thumbnails/14.jpg)
MapReduce
Map Reduce
![Page 15: Modelos de computação distribuída no Hadoop](https://reader031.vdocuments.pub/reader031/viewer/2022020717/55930d741a28ab0b318b4677/html5/thumbnails/15.jpg)
MapReduce
GFS / HDFS
![Page 16: Modelos de computação distribuída no Hadoop](https://reader031.vdocuments.pub/reader031/viewer/2022020717/55930d741a28ab0b318b4677/html5/thumbnails/16.jpg)
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
![Page 17: Modelos de computação distribuída no Hadoop](https://reader031.vdocuments.pub/reader031/viewer/2022020717/55930d741a28ab0b318b4677/html5/thumbnails/17.jpg)
MapReduce
Crunch
![Page 18: Modelos de computação distribuída no Hadoop](https://reader031.vdocuments.pub/reader031/viewer/2022020717/55930d741a28ab0b318b4677/html5/thumbnails/18.jpg)
Processamento Iterativo
![Page 19: Modelos de computação distribuída no Hadoop](https://reader031.vdocuments.pub/reader031/viewer/2022020717/55930d741a28ab0b318b4677/html5/thumbnails/19.jpg)
Jobs iterativos no MapReduceLeitura dos dados em disco
![Page 20: Modelos de computação distribuída no Hadoop](https://reader031.vdocuments.pub/reader031/viewer/2022020717/55930d741a28ab0b318b4677/html5/thumbnails/20.jpg)
Jobs iterativos no MapReduceLeitura dos dados em disco
Mapper emite valores intermediários
Dados ordenados em disco
![Page 21: Modelos de computação distribuída no Hadoop](https://reader031.vdocuments.pub/reader031/viewer/2022020717/55930d741a28ab0b318b4677/html5/thumbnails/21.jpg)
Jobs iterativos no MapReduceLeitura dos dados em disco
Mapper emite valores intermediários
Dados ordenados em disco
Dados enviados para reducers
![Page 22: Modelos de computação distribuída no Hadoop](https://reader031.vdocuments.pub/reader031/viewer/2022020717/55930d741a28ab0b318b4677/html5/thumbnails/22.jpg)
Jobs iterativos no MapReduceLeitura dos dados em disco
Mapper emite valores intermediários
Dados ordenados em disco
Dados enviados para reducers
Resultado escrito em disco
![Page 23: Modelos de computação distribuída no Hadoop](https://reader031.vdocuments.pub/reader031/viewer/2022020717/55930d741a28ab0b318b4677/html5/thumbnails/23.jpg)
Jobs iterativos no MapReduceLeitura dos dados em disco
Mapper emite valores intermediários
Dados ordenados em disco
Dados enviados para reducers
Resultado escrito em disco
Novo job é criado
![Page 24: Modelos de computação distribuída no Hadoop](https://reader031.vdocuments.pub/reader031/viewer/2022020717/55930d741a28ab0b318b4677/html5/thumbnails/24.jpg)
Bulk Synchronous Parallel
● Publicado em 1990 por Leslie G. Valiant
● Algoritmo BSP -> Sequência de supersteps
● Cada superstep tem três fases
![Page 25: Modelos de computação distribuída no Hadoop](https://reader031.vdocuments.pub/reader031/viewer/2022020717/55930d741a28ab0b318b4677/html5/thumbnails/25.jpg)
Bulk Synchronous Parallel
P1 P2 P3 P4 P5 P6
Computação local
Comunicação global
Barreira de sincronização
![Page 26: Modelos de computação distribuída no Hadoop](https://reader031.vdocuments.pub/reader031/viewer/2022020717/55930d741a28ab0b318b4677/html5/thumbnails/26.jpg)
BSP - Estimando PI
Método de Monte Carlo para calcular PI
Agregador de resultados parciais
![Page 27: Modelos de computação distribuída no Hadoop](https://reader031.vdocuments.pub/reader031/viewer/2022020717/55930d741a28ab0b318b4677/html5/thumbnails/27.jpg)
Bulk Synchronous Parallel
● Apache Hama
● BSP compatível com o Hadoop YARN
● Módulo para processamento de grafos
● Módulo para Machine Learning
![Page 28: Modelos de computação distribuída no Hadoop](https://reader031.vdocuments.pub/reader031/viewer/2022020717/55930d741a28ab0b318b4677/html5/thumbnails/28.jpg)
Processamento de Grafos
![Page 29: Modelos de computação distribuída no Hadoop](https://reader031.vdocuments.pub/reader031/viewer/2022020717/55930d741a28ab0b318b4677/html5/thumbnails/29.jpg)
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
![Page 30: Modelos de computação distribuída no Hadoop](https://reader031.vdocuments.pub/reader031/viewer/2022020717/55930d741a28ab0b318b4677/html5/thumbnails/30.jpg)
Pregelsuperstep 0A : 3 B : 6 C : 2 D : 1
![Page 31: Modelos de computação distribuída no Hadoop](https://reader031.vdocuments.pub/reader031/viewer/2022020717/55930d741a28ab0b318b4677/html5/thumbnails/31.jpg)
Pregelsuperstep 0
superstep 1
A : 3 B : 6 C : 2 D : 1
A : 6 B : 6 D : 6C : 2
![Page 32: Modelos de computação distribuída no Hadoop](https://reader031.vdocuments.pub/reader031/viewer/2022020717/55930d741a28ab0b318b4677/html5/thumbnails/32.jpg)
Pregelsuperstep 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
![Page 33: Modelos de computação distribuída no Hadoop](https://reader031.vdocuments.pub/reader031/viewer/2022020717/55930d741a28ab0b318b4677/html5/thumbnails/33.jpg)
Pregelsuperstep 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
![Page 34: Modelos de computação distribuída no Hadoop](https://reader031.vdocuments.pub/reader031/viewer/2022020717/55930d741a28ab0b318b4677/html5/thumbnails/34.jpg)
Pregel
Apache Giraph Apache Hama
![Page 35: Modelos de computação distribuída no Hadoop](https://reader031.vdocuments.pub/reader031/viewer/2022020717/55930d741a28ab0b318b4677/html5/thumbnails/35.jpg)
Processamento Real-time
![Page 36: Modelos de computação distribuída no Hadoop](https://reader031.vdocuments.pub/reader031/viewer/2022020717/55930d741a28ab0b318b4677/html5/thumbnails/36.jpg)
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)
![Page 37: Modelos de computação distribuída no Hadoop](https://reader031.vdocuments.pub/reader031/viewer/2022020717/55930d741a28ab0b318b4677/html5/thumbnails/37.jpg)
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
servidoresintermediários
servidoresfolha
![Page 38: Modelos de computação distribuída no Hadoop](https://reader031.vdocuments.pub/reader031/viewer/2022020717/55930d741a28ab0b318b4677/html5/thumbnails/38.jpg)
Dremel
![Page 39: Modelos de computação distribuída no Hadoop](https://reader031.vdocuments.pub/reader031/viewer/2022020717/55930d741a28ab0b318b4677/html5/thumbnails/39.jpg)
Spark
![Page 40: Modelos de computação distribuída no Hadoop](https://reader031.vdocuments.pub/reader031/viewer/2022020717/55930d741a28ab0b318b4677/html5/thumbnails/40.jpg)
Processamento em Batch Sistemas Especializados
![Page 41: Modelos de computação distribuída no Hadoop](https://reader031.vdocuments.pub/reader031/viewer/2022020717/55930d741a28ab0b318b4677/html5/thumbnails/41.jpg)
Spark
● Desenvolvido inicialmente em Berkeley
● 80 operadores para escrita de software paralelo
● Resilient Distributed Datasets (RDDs)
![Page 42: Modelos de computação distribuída no Hadoop](https://reader031.vdocuments.pub/reader031/viewer/2022020717/55930d741a28ab0b318b4677/html5/thumbnails/42.jpg)
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)
![Page 43: Modelos de computação distribuída no Hadoop](https://reader031.vdocuments.pub/reader031/viewer/2022020717/55930d741a28ab0b318b4677/html5/thumbnails/43.jpg)
Spark: Contando palavras
file = spark.textFile("hdfs://...")
file.flatMap(lambda line: line.split())
.map(lambda word: (word, 1))
.reduceByKey(lambda a, b: a+b)
![Page 44: Modelos de computação distribuída no Hadoop](https://reader031.vdocuments.pub/reader031/viewer/2022020717/55930d741a28ab0b318b4677/html5/thumbnails/44.jpg)
Spark: Contando palavras
A B C DflatMap map reduceByKey
![Page 45: Modelos de computação distribuída no Hadoop](https://reader031.vdocuments.pub/reader031/viewer/2022020717/55930d741a28ab0b318b4677/html5/thumbnails/45.jpg)
Spark: Resilient Distributed Datasets
![Page 46: Modelos de computação distribuída no Hadoop](https://reader031.vdocuments.pub/reader031/viewer/2022020717/55930d741a28ab0b318b4677/html5/thumbnails/46.jpg)
Spark: Resilient Distributed Datasets
![Page 47: Modelos de computação distribuída no Hadoop](https://reader031.vdocuments.pub/reader031/viewer/2022020717/55930d741a28ab0b318b4677/html5/thumbnails/47.jpg)
Spark: Resilient Distributed Datasets
![Page 48: Modelos de computação distribuída no Hadoop](https://reader031.vdocuments.pub/reader031/viewer/2022020717/55930d741a28ab0b318b4677/html5/thumbnails/48.jpg)
Spark
● Comunidade crescente
● Sub-projetos:
○ GraphX - Processamento de Grafos
○ Shark - Execução de SQL
○ Spark Streaming
○ MLlib - Machine Learning
![Page 49: Modelos de computação distribuída no Hadoop](https://reader031.vdocuments.pub/reader031/viewer/2022020717/55930d741a28ab0b318b4677/html5/thumbnails/49.jpg)
TL;DR
![Page 50: Modelos de computação distribuída no Hadoop](https://reader031.vdocuments.pub/reader031/viewer/2022020717/55930d741a28ab0b318b4677/html5/thumbnails/50.jpg)
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
![Page 51: Modelos de computação distribuída no Hadoop](https://reader031.vdocuments.pub/reader031/viewer/2022020717/55930d741a28ab0b318b4677/html5/thumbnails/51.jpg)
Thiago Cardoso | @tncardoso | zahpee.com
São Paulo, BRA
![Page 52: Modelos de computação distribuída no Hadoop](https://reader031.vdocuments.pub/reader031/viewer/2022020717/55930d741a28ab0b318b4677/html5/thumbnails/52.jpg)
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
![Page 53: Modelos de computação distribuída no Hadoop](https://reader031.vdocuments.pub/reader031/viewer/2022020717/55930d741a28ab0b318b4677/html5/thumbnails/53.jpg)
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/