SlideShare una empresa de Scribd logo
1 de 41
Descargar para leer sin conexión
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
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
Nokia Institute of Technology
Introdução
MapReduce Overview
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
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
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
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
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
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] )
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
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
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
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
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)
Nokia Institute of Technology
Padrões de Filtragem
Filtragem Simples - Exexmplo: Distributed Grep
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
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
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)
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
Nokia Institute of Technology
Padrões de Organização dos Dados
Post/Comment - Driver
Nokia Institute of Technology
Padrões de Organização dos Dados
Post/Comment - Mappers
Nokia Institute of Technology
Padrões de Organização dos Dados
Post/Comment - Reducer
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
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
Nokia Institute of Technology
Padrões de Join
Para MapReduce
• Reduce Side Join
• Replicated Join
• Composite Join
• Cartesian Product
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
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
Nokia Institute of Technology
Padrões de Join
Reduce Side Join
• Estrutura
Fonte: MapReduce Design Patterns by Donald Miner and Adam Shook (2012)
Nokia Institute of Technology
Padrões de Join
• Driver Code
Reduce Side Join
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
Nokia Institute of Technology
Padrões de Join
List A
List B
OutputexecuteJoinLogic
Reducer
A + B
Reduce Side Join
executeJoinLogic
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
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
Nokia Institute of Technology
Padrões de Join
Replicated Join
• Estrutura
Fonte: MapReduce Design Patterns by Donald Miner and Adam Shook (2012)
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
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
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
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)
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)
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
Obrigado!
Felipe Ferreira
felipe.a.ferreira@indt.org.br
Karla Okada Gomes
@karlaokada
karla.gomes@indt.org.br
INdT - Instituto Nokia de Tecnologia
www.indt.org.br
Manaus – Am

Más contenido relacionado

Similar a Padrões de Design para MapReduce

Big data e mineração de dados
Big data e mineração de dadosBig data e mineração de dados
Big data e mineração de dadosElton Meira
 
2019-2 - BD I - Aula 01 C - Introdução a Banco de Dados
2019-2 - BD I - Aula 01 C - Introdução a Banco de Dados2019-2 - BD I - Aula 01 C - Introdução a Banco de Dados
2019-2 - BD I - Aula 01 C - Introdução a Banco de DadosRodrigo Kiyoshi Saito
 
Performance no MongoDB - TDC 2017 | Florianópolis
Performance no MongoDB - TDC 2017 | FlorianópolisPerformance no MongoDB - TDC 2017 | Florianópolis
Performance no MongoDB - TDC 2017 | FlorianópolisJefferson Martins de Andrade
 
DataOps, Data Mesh e Data Fabric. Melhores práticas para seu projeto de arqui...
DataOps, Data Mesh e Data Fabric. Melhores práticas para seu projeto de arqui...DataOps, Data Mesh e Data Fabric. Melhores práticas para seu projeto de arqui...
DataOps, Data Mesh e Data Fabric. Melhores práticas para seu projeto de arqui...Eduardo Hahn
 
[DTC21] André Marques - Jornada do Engenheiro de Dados
[DTC21] André Marques - Jornada do Engenheiro de Dados[DTC21] André Marques - Jornada do Engenheiro de Dados
[DTC21] André Marques - Jornada do Engenheiro de DadosDeep Tech Brasil
 
Utilizando NoSQL no desenvolvimento de soluções inteligentes
Utilizando NoSQL no desenvolvimento de soluções inteligentesUtilizando NoSQL no desenvolvimento de soluções inteligentes
Utilizando NoSQL no desenvolvimento de soluções inteligentesChristiano Anderson
 
Big data para programadores convencionais
Big data para programadores convencionaisBig data para programadores convencionais
Big data para programadores convencionaisRoberto Oliveira
 
FireDAC para BigDATA: Teradata e MongoDB
FireDAC para BigDATA: Teradata e MongoDBFireDAC para BigDATA: Teradata e MongoDB
FireDAC para BigDATA: Teradata e MongoDBAlan Glei
 
Banco de Dados em Grafos com Neo4J
Banco de Dados em Grafos com Neo4J  Banco de Dados em Grafos com Neo4J
Banco de Dados em Grafos com Neo4J Daniel San Martin
 
Introdução no sql mongodb java
Introdução no sql mongodb javaIntrodução no sql mongodb java
Introdução no sql mongodb javaFabiano Modos
 
I nd t_bigdata(1)
I nd t_bigdata(1)I nd t_bigdata(1)
I nd t_bigdata(1)wchevreuil
 
2019 - GUOB MeetUp - Journey to Cloud and DBA Career
2019 - GUOB MeetUp - Journey to Cloud and DBA Career2019 - GUOB MeetUp - Journey to Cloud and DBA Career
2019 - GUOB MeetUp - Journey to Cloud and DBA CareerMarcus Vinicius Miguel Pedro
 
Como Implementar a Análise de Dados em Tempo Real
Como Implementar a Análise de Dados em Tempo RealComo Implementar a Análise de Dados em Tempo Real
Como Implementar a Análise de Dados em Tempo RealDenodo
 
Desenvolvimento de Projetos Interativos: Especificação e Implementação
Desenvolvimento de Projetos Interativos: Especificação e ImplementaçãoDesenvolvimento de Projetos Interativos: Especificação e Implementação
Desenvolvimento de Projetos Interativos: Especificação e ImplementaçãoEdyd B. Junges
 
Caçadores de Mitos: A virtualização dos dados pode sustentar o desempenho com...
Caçadores de Mitos: A virtualização dos dados pode sustentar o desempenho com...Caçadores de Mitos: A virtualização dos dados pode sustentar o desempenho com...
Caçadores de Mitos: A virtualização dos dados pode sustentar o desempenho com...Denodo
 
Sistemas Inteligentes para Textos da Web
Sistemas Inteligentes para Textos da WebSistemas Inteligentes para Textos da Web
Sistemas Inteligentes para Textos da WebFernando Hideo Fukuda
 
Pipeconf no CoffeOps Campinas
Pipeconf no CoffeOps CampinasPipeconf no CoffeOps Campinas
Pipeconf no CoffeOps CampinasAécio Pires
 

Similar a Padrões de Design para MapReduce (20)

Big data e mineração de dados
Big data e mineração de dadosBig data e mineração de dados
Big data e mineração de dados
 
2019-2 - BD I - Aula 01 C - Introdução a Banco de Dados
2019-2 - BD I - Aula 01 C - Introdução a Banco de Dados2019-2 - BD I - Aula 01 C - Introdução a Banco de Dados
2019-2 - BD I - Aula 01 C - Introdução a Banco de Dados
 
Performance no MongoDB - TDC 2017 | Florianópolis
Performance no MongoDB - TDC 2017 | FlorianópolisPerformance no MongoDB - TDC 2017 | Florianópolis
Performance no MongoDB - TDC 2017 | Florianópolis
 
Ruby on Rails for beginners 2.0
Ruby on Rails for beginners 2.0Ruby on Rails for beginners 2.0
Ruby on Rails for beginners 2.0
 
DataOps, Data Mesh e Data Fabric. Melhores práticas para seu projeto de arqui...
DataOps, Data Mesh e Data Fabric. Melhores práticas para seu projeto de arqui...DataOps, Data Mesh e Data Fabric. Melhores práticas para seu projeto de arqui...
DataOps, Data Mesh e Data Fabric. Melhores práticas para seu projeto de arqui...
 
Web Scale Data Management
Web Scale Data ManagementWeb Scale Data Management
Web Scale Data Management
 
[DTC21] André Marques - Jornada do Engenheiro de Dados
[DTC21] André Marques - Jornada do Engenheiro de Dados[DTC21] André Marques - Jornada do Engenheiro de Dados
[DTC21] André Marques - Jornada do Engenheiro de Dados
 
Utilizando NoSQL no desenvolvimento de soluções inteligentes
Utilizando NoSQL no desenvolvimento de soluções inteligentesUtilizando NoSQL no desenvolvimento de soluções inteligentes
Utilizando NoSQL no desenvolvimento de soluções inteligentes
 
Big data para programadores convencionais
Big data para programadores convencionaisBig data para programadores convencionais
Big data para programadores convencionais
 
FireDAC para BigDATA: Teradata e MongoDB
FireDAC para BigDATA: Teradata e MongoDBFireDAC para BigDATA: Teradata e MongoDB
FireDAC para BigDATA: Teradata e MongoDB
 
Banco de Dados em Grafos com Neo4J
Banco de Dados em Grafos com Neo4J  Banco de Dados em Grafos com Neo4J
Banco de Dados em Grafos com Neo4J
 
Integração de dados
Integração de dadosIntegração de dados
Integração de dados
 
Introdução no sql mongodb java
Introdução no sql mongodb javaIntrodução no sql mongodb java
Introdução no sql mongodb java
 
I nd t_bigdata(1)
I nd t_bigdata(1)I nd t_bigdata(1)
I nd t_bigdata(1)
 
2019 - GUOB MeetUp - Journey to Cloud and DBA Career
2019 - GUOB MeetUp - Journey to Cloud and DBA Career2019 - GUOB MeetUp - Journey to Cloud and DBA Career
2019 - GUOB MeetUp - Journey to Cloud and DBA Career
 
Como Implementar a Análise de Dados em Tempo Real
Como Implementar a Análise de Dados em Tempo RealComo Implementar a Análise de Dados em Tempo Real
Como Implementar a Análise de Dados em Tempo Real
 
Desenvolvimento de Projetos Interativos: Especificação e Implementação
Desenvolvimento de Projetos Interativos: Especificação e ImplementaçãoDesenvolvimento de Projetos Interativos: Especificação e Implementação
Desenvolvimento de Projetos Interativos: Especificação e Implementação
 
Caçadores de Mitos: A virtualização dos dados pode sustentar o desempenho com...
Caçadores de Mitos: A virtualização dos dados pode sustentar o desempenho com...Caçadores de Mitos: A virtualização dos dados pode sustentar o desempenho com...
Caçadores de Mitos: A virtualização dos dados pode sustentar o desempenho com...
 
Sistemas Inteligentes para Textos da Web
Sistemas Inteligentes para Textos da WebSistemas Inteligentes para Textos da Web
Sistemas Inteligentes para Textos da Web
 
Pipeconf no CoffeOps Campinas
Pipeconf no CoffeOps CampinasPipeconf no CoffeOps Campinas
Pipeconf no CoffeOps Campinas
 

Padrões de Design para MapReduce

  • 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
  • 3. Nokia Institute of Technology Introdução MapReduce Overview
  • 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
  • 41. Obrigado! Felipe Ferreira felipe.a.ferreira@indt.org.br Karla Okada Gomes @karlaokada karla.gomes@indt.org.br INdT - Instituto Nokia de Tecnologia www.indt.org.br Manaus – Am