O documento apresenta vários padrões de design para MapReduce, incluindo padrões de sumarização, filtragem, organização de dados, join e input/output. Os padrões descrevem como estruturar tarefas comuns de análise de big data usando MapReduce de forma eficiente.
1. Nokia Institute of Technology
Padrões de Design para MapReduce
TDC 2013 – São Paulo
Your natural partner to develop innovative
solutions
Felipe Ferreira
Karla Okada Gomes
Wellington Chevreuil
2. Agenda
• Introdução
• Padrões de Sumarização
• Padrões de Filtragem
• Padrões de Organização de Dados
• Padrões de Join
• Padrões de Input e Output
4. Nokia Institute of Technology
Introdução
MapReduce Design Patterns
1. Sumarização: sumarizando e agrupando dados
2. Filtragem: ter a visão de subconjuntos de dados
3. Organização de Dados: reorganizar dados para
trabalhar com outros sistemas, ou para facilitar a
análise de MapReduce
4. Join: analizar diferentes data sets agrupados para
descobrir relacionamentos
5. Metapattern: unificar vários padrões para solucionar
problemas multi-stage ou para realizar diversas análise
no mesmo job
6. Input e Output: customizar a maneira como você usa
Hadoop para carregar e armazenar dados
• 23 Padrões no total
5. Nokia Institute of Technology
Padrões de Sumarização
• Grandes volumes de dados são produzidos diariamente
• Proporcionar uma visão resumida de alto nível de grandes data sets.
• Possibilitar análises sobre os dados, identificar padrões
• Exemplos de Padrões:
• Sumarização Numérica
• Sumarização de Índice Invertido
• Contadores
6. Nokia Institute of Technology
Padrões de Sumarização
Sumarização Numérica
• Objetivo- Agrupar registrospor um key field e calcularuma agregação
numéricapor grupo
• Motivação- Data setsmuito grandes para análisemais simples (Ex:
terabytesde logs de websites)
• Aplicabilidade–Dados numéricosou contagem.Os dados podem ser
agrupados por camposespecíficos
• Consequências–Arquivoscontendoum único registro (key, vlrs
agregados)por grupo
• Ex:-word/recordcount,min/max/count,average,median,standard
deviation
7. Nokia Institute of Technology
Padrões de Sumarização
Sumarização Numérica
• Performance
• Combiners podem ser usados para melhorar a execução
• Distorções nos reducers: muito mais k/v com uma chave
específica que outras keys. Um reducer pode ficar mais
sobrecarregado que outros
8. Nokia Institute of Technology
Padrões de Sumarização
Sum. Numérica – Código Exemplo
• Caso de Uso: Dada uma lista de comentários de usuários de um
blog, determinar o primeiro(Min) e último comentário(Max) e o
número total de comentários (Count) por usuário
9. Nokia Institute of Technology
Padrões de Sumarização
Índice Invertido
• Objetivo- Gerar Índice de um data set
• Motivação– Indexar grandes data sets em keywords facilita a busca
por valores específicos
• Aplicabilidade– Necessidadede consultas rápidas.
• Consequências– Arquivo contendo (keywords -> [ids] )
10. Nokia Institute of Technology
Padrões de Sumarização
Índice Invertido
• Performance
• Cardinalidade de index keys aumenta o número de reducers
• Nro de conteúdo p/ a key “de” pode ser muito maior que os demais
• Um partitioner customizado pode ajudar no load balance
11. Nokia Institute of Technology
Padrões de Sumarização
Índice Invertido - Exemplo
• Caso de Uso: Dado um conjunto de comentários de usuários de
um blog, construir um Índice de URLs da Wikipedia para um
conjunto de Ids de respostas postadas em um blog. Analisar cada
resposta de um blog para encontrarhyperlinks para Wikipedia
12. Nokia Institute of Technology
Padrões de Filtragem
• Encontrar um subset dos dados sem alterar seu estado atual.
• Filtragem permite uma análise mais detalhada de pequenas partes
dos dados. Ex: Encontrar os registros de um usuário específico
• Alguns padrões: Filtragem simples, Filtragem Bloom, Top Ten,
Distinct
13. Nokia Institute of Technology
Padrões de Filtragem
Filtragem Simples
• Objetivo- Filtrar registros que não interessam. Reter somente os
interessantes
• Motivação– Data sets muito grandes. Necessidade de analisar um
subset.
• Aplicabilidade– Registros que podem ser filtrados baseados em
um critério
• Consequências– Subset de dados. Se o formato for mantido, um
mesmo job que executa sobre o data set original, pode executar
sobre o subset.
• Ex: Distributed Grep
14. Nokia Institute of Technology
Padrões de Filtragem
Filtragem Simples
• Performance
• Sem Reducers
• Dados não precisam ser transmitidos entre map e reducers
• Não necessita de ambas as fases: sort e reducer (mais
rápido)
15. Nokia Institute of Technology
Padrões de Filtragem
Filtragem Simples - Exexmplo: Distributed Grep
16. Nokia Institute of Technology
Padrões de Organização dos Dados
• Hadoop e MapReduce muitas vezes são uma pequena parte em
uma plataforma de análise de dados
• Dados precisam ser transformados para tornar possível sua análise
através de MapReduce
• Exemplos de padrões: Structured to Hierarchical, Partitioning,
Binning, Total Order Sorting
17. Nokia Institute of Technology
Padrões de Organização dos Dados
Structured to Hierarchical
• Objetivo- Transformar os dados para um formato de hierarquia. Ex:
JSON, XML
• Motivação– Migração de dados de um RDBMS para o Hadoop.
Table Joins. Reformatar os dados em uma forma mais clara.
• Aplicabilidade– Dados ligados por foreing keys. Dados
estruturados e “row-based”
• Ex: Preparar dados para o Hbase
18. Nokia Institute of Technology
Padrões de Organização dos Dados
Structured to Hierarchical - Overview
Fonte: MapReduce Design Patterns by Donald Miner and Adam Shook (2012)
19. Nokia Institute of Technology
Padrões de Organização dos Dados
Exemplo – Post/Comment
• Caso de Uso: Dado uma lista de posts e comentários, criar uma
hierarquia estruturada em XML para aninhar os comentários com
seu post
20. Nokia Institute of Technology
Padrões de Organização dos Dados
Post/Comment - Driver
21. Nokia Institute of Technology
Padrões de Organização dos Dados
Post/Comment - Mappers
22. Nokia Institute of Technology
Padrões de Organização dos Dados
Post/Comment - Reducer
23. Nokia Institute of Technology
Padrões de Join
Sobre Joins
• Inner JoinA B
A + B
• Left Outer Join
A + B
• Right Outer Join
A + B
24. Nokia Institute of Technology
Padrões de Join
Sobre Joins
• Full Outer JoinA B
A + B
• Anti Join = Full Outer Join - Inner join
• Produto Cartesiano
25. Nokia Institute of Technology
Padrões de Join
Para MapReduce
• Reduce Side Join
• Replicated Join
• Composite Join
• Cartesian Product
26. Nokia Institute of Technology
Padrões de Join
Reduce Side Join
• Objetivo
• Unir múltiplas bases de dados através de uma chave
• Motivação
• Simples de implementar
• Suporta todos os tipos de “Joins”
• Sem restrição de limite quanto ao tamanho das bases de
dados
• Aplicabilidade
• Múltiplas bases de dados agrupadas por uma chave
• Flexibilidade de poder executar qualquer operação de join
27. Nokia Institute of Technology
Padrões de Join
Reduce Side Join
• Performance
• Tráfego de dados na rede para a fase de reduce
• Não apresenta otimizações se puder, melhor utilizar outro
padrão de Join
Em SQL
Caso de Uso:
Dado um conjunto de informações sobre usuários e uma lista de comentários de
um blog, enriquecer os comentários com informações sobre os usuários que
criaram os mesmos
28. Nokia Institute of Technology
Padrões de Join
Reduce Side Join
• Estrutura
Fonte: MapReduce Design Patterns by Donald Miner and Adam Shook (2012)
29. Nokia Institute of Technology
Padrões de Join
• Driver Code
Reduce Side Join
30. Nokia Institute of Technology
Reduce Side Join
Padrões de Join
Input A
<User>
...<User>
Output
Mapper A
Fase Map
Key = UserID
Value = “A” + User Data
Input B
<Comment>
...<Comment>
Output
Mapper B
Key = UserID
Value = “B” + Comment Data
31. Nokia Institute of Technology
Padrões de Join
List A
List B
OutputexecuteJoinLogic
Reducer
A + B
Reduce Side Join
executeJoinLogic
32. Nokia Institute of Technology
Padrões de Join
Replicated Join
• Objetivo
• Unir uma base de dados grande e várias pequenas,
eliminando a fase de Reduce
• Motivação
• Execução apenas na fase de map
• Suporta Inner Join e Left Outer Join
• Aplicabilidade
• Quando Inner ou Left Outer Join são necessários, com a
base de dados grande sendo a parte “left” na operação
• As bases pequenas devem caber na memória, sendo
carregadas durante a fase de setup de cada tarefa de map
33. Nokia Institute of Technology
Padrões de Join
Replicated Join
• Performance
• O Replicated Join pode ser o tipo mais rápido de padrão de
Join, por fazer acesso a memória e não necessitar da fase de
reduce
• Limitações quanto a quantidade de dados que podem ser
armazenados na JVM
34. Nokia Institute of Technology
Padrões de Join
Replicated Join
• Estrutura
Fonte: MapReduce Design Patterns by Donald Miner and Adam Shook (2012)
35. Nokia Institute of Technology
Context-Aware Recommender Systems
Context Information
Padrões de Join
Replicated Join
• Distributed Cache
Distributed
Cache
Mapper
Setup
Key (UserID) Value (User Data)
3 New York
4 New York
5 San Diego
9 Oakland
36. Nokia Institute of Technology
Contextual Intelligence
Context-Aware Recommender SystemsContext-Aware Recommender Systems
Context Information
Padrões de Join
Replicated Join
• Mapper
Recupera dados
em memória
para fazer o join
37. Nokia Institute of Technology
Contextual Intelligence
Context-Aware Recommender SystemsContext-Aware Recommender Systems
Context Information
Padrões de Join
Composite Join
• Objetivo
• Unir bases de dados pre-formatadas através de uma chave,
com a execução apenas na fase de map
• Motivação
• Particularmente útil para unir bases grandes, mas exige um
pre-processamento dos dados
• Suporta Inner e Full Outer Join
• Aplicabilidade
• Quando desejado um Inner ou Full Outer Join entre bases
grandes
• As bases devem ser ordenadas e particionadas pela chave
estrangeira e lidas de uma maneira específica
38. Nokia Institute of Technology
Contextual Intelligence
Context-Aware Recommender SystemsContext-Aware Recommender Systems
Context Information
Padrões de Join
Composite Join Pré-processamento
• Todas as bases devem ser
lidas com a chave estrangeira
sendo a chave de input para
o mapper
• Todas as bases devem
possuir o mesmo número de
partições
• Cada partição é ordenada
pela chave estrangeira, e
todas as chaves devem
residir na partição associada
de cada base de dados
Fonte: MapReduce Design Patterns by Donald Miner and Adam Shook (2012)
39. Nokia Institute of Technology
Contextual Intelligence
Context-Aware Recommender SystemsContext-Aware Recommender Systems
Context Information
Padrões de Join
Composite Join
• Estrutura:
Fonte: MapReduce Design Patterns by Donald Miner and Adam Shook (2012)
40. Nokia Institute of Technology
Contextual Intelligence
Context-Aware Recommender SystemsContext-Aware Recommender Systems
Context Information
Padrões de Input e Output
• Customizar Input e Output no Hadoop
• Configurar como chuncks de input são gerados a partir
dos blocos do HDFS
• Configurar como registros aparecem na fase de map
• RecordReader and InputFormat classes
• RecordWriter and OutputFormat classes
• Padrões:
• Generating Data
• External Source Output
• External Source Input
• Partition Pruning