Map-Reduce é uma técnica para processar grandes quantidades de dados distribuídos através de duas fases: mapeamento (mapping) e redução (reducing). No mapeamento, os dados são organizados de forma a poderem ser processados em paralelo. Na redução, os resultados dos mapeamentos são agregados. Isso permite extrair informações complexas de dados armazenados de forma não-relacional.
Map-Reduce: Adquirindo informações de dados distribuidos
1. Map-Reduce:
Adquirindo informações de
dados distribuidos
Edson de Lima (ebl4@cin.ufpe.br)
Gabriela de Andrade (gcpa@cin.ufpe.br)
João Farias (jgfd@cin.ufpe.br)
Leonardo Borges (lrb@cin.ufpe.br)
2. 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]
3. 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
7. 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
11. 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.)
12. 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
13. 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
14. Fontes e links
●
Martin Fowler sobre o padrão Agregação
– Aggregate Oriented Database
●
http://martinfowler.com/bliki/AggregateOrientedDatabase
– 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
●
Map-Reduce Tutorial – MongoDB
– https://docs.mongodb.org/manual/core/map-reduce/