modelos de computação distribuída no hadoop

53
Modelos e Sistemas para Computação Distribuída no Hadoop Thiago Cardoso | @tncardoso | zahpee.com São Paulo, BRA

Upload: big-data-week-sao-paulo

Post on 01-Jul-2015

133 views

Category:

Technology


3 download

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

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

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

A implementação do modelo ‘esconde’ estes desafios

Lógica para

processamento

dos dados

Page 4: Modelos de computação distribuída no Hadoop

Por que entender os modelos?

Page 5: Modelos de computação distribuída no Hadoop
Page 6: Modelos de computação distribuída no Hadoop
Page 7: Modelos de computação distribuída no Hadoop
Page 8: Modelos de computação distribuída no Hadoop
Page 9: Modelos de computação distribuída no Hadoop

NodeManager HiveMetastore

DataNodeSecondaryNameNode CatalogServer

NameNode JobHistoryServer Impalad

ResourceManager HiveServerStateStore

Page 10: Modelos de computação distribuída no Hadoop

Amazon Elastic

MapReduce

Page 11: Modelos de computação distribuída no Hadoop

O modelo utilizado deve ser escolhido de acordo com o problema

Page 12: Modelos de computação distribuída no Hadoop

MapReduce

Page 13: Modelos de computação distribuída no Hadoop

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

MapReduce

Map Reduce

Page 15: Modelos de computação distribuída no Hadoop

MapReduce

GFS / HDFS

Page 16: Modelos de computação distribuída no Hadoop

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

MapReduce

Crunch

Page 18: Modelos de computação distribuída no Hadoop

Processamento Iterativo

Page 19: Modelos de computação distribuída no Hadoop

Jobs iterativos no MapReduceLeitura dos dados em disco

Page 20: Modelos de computação distribuída no Hadoop

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

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

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

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

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

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

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

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

Processamento de Grafos

Page 29: Modelos de computação distribuída no Hadoop

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

Pregelsuperstep 0A : 3 B : 6 C : 2 D : 1

Page 31: Modelos de computação distribuída no Hadoop

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

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

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

Pregel

Apache Giraph Apache Hama

Page 35: Modelos de computação distribuída no Hadoop

Processamento Real-time

Page 36: Modelos de computação distribuída no Hadoop

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

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

Dremel

Page 39: Modelos de computação distribuída no Hadoop

Spark

Page 40: Modelos de computação distribuída no Hadoop

Processamento em Batch Sistemas Especializados

Page 41: Modelos de computação distribuída no Hadoop

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

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

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

Spark: Contando palavras

A B C DflatMap map reduceByKey

Page 45: Modelos de computação distribuída no Hadoop

Spark: Resilient Distributed Datasets

Page 46: Modelos de computação distribuída no Hadoop

Spark: Resilient Distributed Datasets

Page 47: Modelos de computação distribuída no Hadoop

Spark: Resilient Distributed Datasets

Page 48: Modelos de computação distribuída no Hadoop

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

TL;DR

Page 50: Modelos de computação distribuída no Hadoop

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

Thiago Cardoso | @tncardoso | zahpee.com

São Paulo, BRA

Page 52: Modelos de computação distribuída no Hadoop

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