map-reduce: adquirindo informações de dados distribuidos

15
Map-Reduce: Adquirindo informações de dados distribuidos Edson de Lima ( [email protected] ) Gabriela de Andrade ( [email protected] ) João Farias ( [email protected] ) Leonardo Borges ( [email protected] )

Upload: joao-guilherme-farias-duda

Post on 13-Apr-2017

255 views

Category:

Data & Analytics


0 download

TRANSCRIPT

Page 1: Map-Reduce: Adquirindo informações de dados distribuidos

Map-Reduce:Adquirindo informações de

dados distribuidos

Edson de Lima ([email protected])Gabriela de Andrade ([email protected])

João Farias ([email protected])Leonardo Borges ([email protected])

Page 2: Map-Reduce: Adquirindo informações de dados distribuidos

Como banco de dados NoSQL guardam seus dados?

● Agregações DDD

– "...cluster of domain objects that can be treated as a single unit." Martin Fowler [1]

Page 3: Map-Reduce: Adquirindo informações de dados distribuidos

O problema com o padrão Agregação

● “E se eu quiser olhar para os dados entre agregados?”

– É fácil adquirir todas as informações de uma venda (Nome do cliente, hora, preço, produto, etc, etc), mas se eu quiser saber sobre o total de vendas no mês de Janeiro?

● Soluções

– Map-Reduce

● Técnica para reorganizar os dados para diferentes clientes

– Persistência Poliglota

Page 4: Map-Reduce: Adquirindo informações de dados distribuidos

Map-Reduce

● Lembrando o ambiente de um Sistema Distribuído

Page 5: Map-Reduce: Adquirindo informações de dados distribuidos

Map-Reduce

● Parte 1: Mapping

Page 6: Map-Reduce: Adquirindo informações de dados distribuidos

Map-Reduce

● Parte 2: Reducing

Page 7: Map-Reduce: Adquirindo informações de dados distribuidos

Map-Reduce

● O que é preciso para realizar uma operação de Map-Reduce?

– Um framework de Map-Reduce

● Hadoop● Spark● Riak

– Definir as funções de mapping, reducing e a query

Page 8: Map-Reduce: Adquirindo informações de dados distribuidos

Map-Reduce

● Exemplo

Page 9: Map-Reduce: Adquirindo informações de dados distribuidos

Map-Reduce: Particionando

● Vários reducers através da criação de partições

Page 10: Map-Reduce: Adquirindo informações de dados distribuidos

Map-Reduce: Combinando

● Reduzindo dados antes de enviar ao reducer

● Combinador-Redutor

Page 11: Map-Reduce: Adquirindo informações de dados distribuidos

Map-Reduce: Two-Step

● Criando operações complexas através de divide-and-conquer de pequenas operações de Map-Reduce

● Resultados intermediários: Materalized Views (M.V.)

Page 12: Map-Reduce: Adquirindo informações de dados distribuidos

Map-Reduce: Atualização de Dados

● Quando devemos re-computadar os dados?

– Mapping: Quando o input mudar

– Reduce: Quando os resultados do mapping mudarem

● Como evitar re-computação de reduções?

– Partições

– Se a função de redução é combinável e as mudanças são aditivas

● Faça redução do resultados anteriores (M.V.) e apenas dos novos dados

Page 13: Map-Reduce: Adquirindo informações de dados distribuidos

Map-Reduce: Principais pontos

● Como o padrão é usado para adquirir informação de negócio em um ambiente onde o modelo de dados não favorece isso, maximizando paralelismo, reuso de computação e tolerância a falhas

● Como aumentar a eficiência das operações de Map-Reduce

– Organização de dados: Partições e combinadores

– Pipelines de operações de Map-Reduce

– Saber quando é necessário re-computar resultados

Page 14: Map-Reduce: Adquirindo informações de dados distribuidos

Fontes e links

● Martin Fowler sobre o padrão Agregação

– Aggregate Oriented Database

● http://martinfowler.com/bliki/AggregateOrientedDatabase.html

– DDD-Aggregate

● http://martinfowler.com/bliki/DDD_Aggregate.html● NoSQL Distilled - Pramod J. Sadalage e Martin Fowler

– http://martinfowler.com/books/nosql.html

● Simon Miner - Understanding NoSQL

– http://www.math-cs.gordon.edu/courses/cs352/lectures-2012/12_Understanding_NoSQL.pdf

● Map-Reduce Tutorial – MongoDB

– https://docs.mongodb.org/manual/core/map-reduce/

Page 15: Map-Reduce: Adquirindo informações de dados distribuidos

Map-ReduceAdquirindo informações de dados distribuidos