Modelos de computação distribuída no Hadoop

Preview:

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.

Citation preview

Modelos e Sistemas para Computação Distribuída no HadoopThiago Cardoso | @tncardoso | zahpee.com

São Paulo, BRA

Desafios da Computação Distribuída

Particionamentodos Dados

Escalonamentoda Execução

Falhas deHardware

Comunicaçãoentre Máquinas

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

Lógica para

processamento

dos dados

Por que entender os modelos?

NodeManager HiveMetastore

DataNodeSecondaryNameNode CatalogServer

NameNode JobHistoryServer Impalad

ResourceManager HiveServerStateStore

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)) lista(v2)

Map:

Reduce:

MapReduce

Map Reduce

MapReduce

GFS / HDFS

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

MapReduce

Crunch

Processamento Iterativo

Jobs iterativos no MapReduceLeitura dos dados em disco

Jobs iterativos no MapReduceLeitura dos dados em disco

Mapper emite valores intermediários

Dados ordenados em disco

Jobs iterativos no MapReduceLeitura dos dados em disco

Mapper emite valores intermediários

Dados ordenados em disco

Dados enviados para reducers

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

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

Bulk Synchronous Parallel

● Publicado em 1990 por Leslie G. Valiant

● Algoritmo BSP -> Sequência de supersteps

● Cada superstep tem três fases

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 para Machine Learning

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 arestas ficam armazenados localmente

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

Pregelsuperstep 0

superstep 1

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

A : 6 B : 6 D : 6C : 2

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

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

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 colunas

● Queries executadas de forma

nativa (não utiliza MapReduce)

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

Dremel

Spark

Processamento em Batch Sistemas Especializados

Spark

● Desenvolvido inicialmente em Berkeley

● 80 operadores para escrita de software paralelo

● Resilient Distributed Datasets (RDDs)

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)

Spark: Contando palavras

file = spark.textFile("hdfs://...")

file.flatMap(lambda line: line.split())

.map(lambda word: (word, 1))

.reduceByKey(lambda a, b: a+b)

Spark: Contando palavras

A B C DflatMap 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 Streaming

○ MLlib - Machine Learning

TL;DR

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

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● 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

Recommended