SlideShare uma empresa Scribd logo
1 de 37
Universidade Federal do Rio de Janeiro 
Disciplina: Redes I (EEL878) 
Alunos: 
Henrique Pan 
Pedro Henrique Cruz 
Pedro de Vasconcellos
Agenda 
• Histórico, motivação e cenário 
• Conceitos 
• Modelo MapReduce 
• Implementação 
• Para o futuro 
• Conclusão 
• Perguntas & Respostas
Histórico, motivação e cenário 
Fatores importantes: 
• Grande quantidade de dados 
• Pequeno aumento da frequência dos 
processadores 
Solução: paralelização!
Histórico, motivação e cenário (2) 
Figura 1 - Gráfico obtido com dados de [6].
Histórico, motivação e cenário (3) 
Na Google ®: 
• Paralelizações feitas caso-a-caso 
• Problemas em comum resolvidos várias 
vezes. 
Modelo de paralelizações mais geral
Conceito: Paralelização 
Executar partes diferentes de um algoritmo 
em unidades de processamento diferentes.
Conceito: Paralelização (2) 
Figura 2 – A paralelização de um processamento
Conceito: Paralelização (3) 
PROBLEMAS: 
• Designar processamento aos 
processadores 
• Fornecer exclusão mútua 
• Garantir equivalência nos algoritmos
Conceito: Computação distribuída 
• Sistema Paralelo 
• Único computador com vários 
processadores 
• Compartilhamento de recursos 
• Sistema Distribuído 
• Diversos computadores ligados em rede 
• cluster 
• nó
O modelo MapReduce 
Abstração que permite que o usuário seja isolado 
da camada de paralelização. [1] 
A paralelização depende da implementação do 
modelo MapReduce.
MapReduce: visão do usuário 
• Conceitos de programação funcional 
• Dados inalterados 
• Funções map e fold
map(f, lista) - programação funcional 
• f é aplicada a cada elemento de lista, 
retornando uma nova lista 
Figura 3 – Exemplo do mapeamento funcional
fold(f, lista) – programação funcional 
• f é aplicada cumulativamente a cada elemento 
de lista, até reduzi-la a um único valor de saída 
Figura 4 – Exemplo da redução funcional
map(chave, valor) 
map(chave, valor) => <chaveInt, valorInt> 
•Inspirada no mapeamento funcional 
•Implementada pelo usuário 
• Sem necessidade de argumento “f”
reduce(chaveInt, valoresInt) 
reduce(chaveInt, valoresInt) => 
valoresFinais 
•Inspirada na função fold 
•Implementada pelo usuário 
• Sem necessidade de argumento “f”
Funções map e reduce 
Pares de entrada 
(chave, valor) 
Pares de entrada 
(chave, valor) 
Conjunto de dados N 
map 
(chave 1, valores) (c2, v) (c3, v) 
Figura 5 – Esquematização das funções map e reduce – 
Adaptado de [8] 
Conjunto de dados 1 
map 
(chave 1, valores) (c2, v) (c3, v) 
Barreira (agrega valores intermediários de acordo com a chave) 
(chave 1, valores 
intermediários) 
reduce 
Valores finais 
provenientes da 
chave 1 
(chave 2, valores 
intermediários) 
reduce 
Valores finais 
provenientes da 
chave 2 
(chave 3, valores 
intermediários) 
reduce 
Valores finais 
provenientes da 
chave 3
Exemplo: contador de palavras 
Figura 6 – Funções map e reduce em um programa contador de palavras – 
Adaptado de [2]
A implementação do MapReduce 
Onde a paralelização acontece 
Diversas implementações são possíveis 
• Cenários diferentes demandam 
implementações diferentes
A implementação da Google® 
Características dos cluster’s disponíveis: 
• Dispositivos comuns 
• processadores x86 dual-core 
• discos IDE 
• memória de 2 a 4 GB 
• rede de 100 megabits/segundo 
• Centenas ou milhares de nós. 
• Sistema de arquivos distribuído próprio, o GFS 
[5]
A implementação da Google® (2) 
• Usuário: map, reduce e MapReduce 
• Arquivo de entrada é fragmentado (64 
MB/parte) 
• Fragmento = chave + valor 
• Funções map e reduce copiadas para os 
nós 
• Mestre 
• Trabalhadores 
• Mapeadores 
• Redutores
A implementação da Google® (3) 
• Mestre 
• Tarefas a trabalhadores ociosos 
• Mapeadores 
• Recebem um fragmento e chamam a 
função map 
• Guardam pares intermediários na memória 
• Escrevem os pares em disco 
periodicamente 
• Notificam o mestre sobre locais dos pares 
intermediários
A implementação da Google® (4) 
• Redutores 
• Recebem do mestre uma chave e os 
lugares de seus valores intermediários 
• Buscam os valores intermediários e 
chamam a função reduce 
• Escrevem as saídas em um arquivo 
• Implementação retorna ao programa do 
usuário
A implementação da Google® (5) 
Figura 7 – Esquema da implementação da 
Google®
Hadoop 
Framework de código aberto do modelo 
MapReduce [4] 
• Usa interfaces Java® para map e reduce 
• Interface Java®: classe com método(s) 
sem código, mas com assinatura 
• É parecido com a implementação da 
Google® 
• Flexível com relação ao cluster.
Ambientes oportunísticos 
Ciclos ociosos de máquinas podem ser 
usados para executar tarefas de map/reduce. 
• Recursos disponíveis por curtíssimos 
períodos de tempo 
Projeto MOON[7] (MapReduce On 
Opportunistic eNvironments)
Para o futuro 
• Implementação simplificada de 
MapReduce 
• Ambientes oportunísticos como serviço: 
• Como garantir um bom serviço? 
• Executar código de interesse nas 
máquinas de usuários de aplicativos web.
Conclusão 
• Dividir para conquistar 
• Peculiaridades de cada problema X 
operar um sistema distribuído 
• Estudar restrições e diminuir o impacto 
para o usuário 
“Funciona porque é simples”
DÚVIDAS?
Perguntas & Respostas 
1. O que são sistemas distribuídos e para 
que servem? 
R: São sistemas que resolvem problemas de 
computação utilizando diversas máquinas ligadas 
em rede, formando um cluster. Eles servem para 
diminuir o tempo na obtenção de uma resposta 
computacional sem precisar aumentar a 
velocidade de um processador individualmente.
Perguntas & Respostas 
2. O que é o modelo MapReduce e como ele 
ajuda a resolver problemas paralelizáveis? 
R: É uma abstração que cria uma interface entre um 
programador e um sistema distribuído. Dessa 
forma, ele faz com que o programador consiga 
implementar separadamente a solução para seu 
problema específico e uma solução geral para 
seu sistema distribuído, a implementação do 
MapReduce.
Perguntas & Respostas 
3. Qual é a abstração do modelo 
MapReduce? 
R: O usuário escreve duas funções: uma map(chave, 
valor) e uma reduce(chave, valores). Depois, o 
usuário chama a implementação indicando um 
conjunto fragmentável ou fragmentado de dados 
de entrada onde cada fragmento tem o 
formato (chave, valor).
Perguntas & Respostas 
4. O que é uma implementação do 
MapReduce? 
R: É a forma como o sistema distribuído em questão 
vai executar as funções map e reduce. Sistemas 
diferentes podem demandar implementações 
diferentes para um bom funcionamento do 
MapReduce.
Perguntas & Respostas 
5. Sobre a implementação da Google®, qual 
o papel do mestre e como as 
trabalhadoras são classificadas? 
R: O Mestre designa trabalho às trabalhadoras. As 
trabalhadoras podem ser classificadas em 
mapeadoras ou redutoras.
Referências 
[1] DEAN, Jeffrey; GHEMAWAT, Sanjay. MapReduce: Simplied 
Data Processing on Large Clusters. Communications of the 
ACM, v. 51, n. 1, p. 107-113, jan. 2008. Disponível em: 
<http://static.googleusercontent.com/external_content/untrust 
ed_dlcp/research.google.com/pt-BR//archive/mapreduce-osdi04. 
pdf>. Acesso em: 23 maio 2012. 
[2] LÄMMEL, Ralf. Google's MapReduce Programming Model 
- Revisited. Science of Computer Programming, v.70, n. 1, p. 
1-30, jan. 2008. Disponível em: 
<http://web.cs.wpi.edu/~cs3013/a11/Papers/Lammel_MapRed 
uce_Revisited.pdf>. Acesso em: 23 maio 2012.
Referências (2) 
[3] VENKATESH, Kirpal A.; NEELAMEGAM, K.; REVATHY, R. Usando 
MapReduce e balanceamento de carga em nuvens, out. 2010. 
Disponível em: 
<http://www.ibm.com/developerworks/br/java/library/cl-mapreduce/# 
N1010A>. Acesso em: 24 abr. 2012. 
[4] HADOOP. Hadoop 1.0.2 documentation. Disponível em: 
<http://hadoop.apache.org/common/docs/current/index.html>. 
Acesso em: 24 abr. 2012. 
[5] GHEMAWAT, Sanjay; GOBIOFF, Howard; LEUNG, Shun-Tak. The 
Google File System.ACM SIGOPS Operating Systems Review - 
SOSP '03, v. 37, n.5, p. 29-43, dez. 2003. Disponível em: 
<http://www.cs.brown.edu/courses/cs295-11/2006/gfs.pdf>. Acesso 
em: 23 maio 2012.
Referências (3) 
[6] INTEL. Microprocessor Quick Reference Guide. Disponível 
em: <http://www.intel.com/pressroom/kits/quickrefyr.htm>. 
Acesso em: 23 maio 2012. 
[7] Heshan Lin; ARCHULETA, Jeremy; Xiaosong Ma; Wu-chun 
Feng; Zhe Zhang; GARDNER, Mark. MOON: MapReduce 
On Opportunistic eNvironments. Proceedings of the 19th 
ACM International Symposium on High Performance 
Distributed Computing - ACM HPDC '10, p. 95-106, 2010. 
Disponível em: 
<http://eprints.cs.vt.edu/archive/00001089/01/moon.pdf>. 
Acesso em: 24 maio 2012.
Referências (4) 
[8] GOOGLE. Cluster Computing and MapReduce. 2007. 
Disponível em: <http://code.google.com/intl/pt- 
BR/edu/submissions/mapreduce-minilecture/listing.html>. 
Acesso em: 23 maio 2012.

Mais conteúdo relacionado

Semelhante a MapReduce UFRJ Disciplina Redes I

Map reduce novas abordagens para o processo de datamining em grandes volumn...
Map reduce   novas abordagens para o processo de datamining em grandes volumn...Map reduce   novas abordagens para o processo de datamining em grandes volumn...
Map reduce novas abordagens para o processo de datamining em grandes volumn...João Gabriel Lima
 
Big data para programadores convencionais
Big data para programadores convencionaisBig data para programadores convencionais
Big data para programadores convencionaisRoberto Oliveira
 
R: a alternativa ao SPSS e ao NVivo em software livre
R: a alternativa ao SPSS e ao NVivo em software livreR: a alternativa ao SPSS e ao NVivo em software livre
R: a alternativa ao SPSS e ao NVivo em software livreLuis Borges Gouveia
 
Ambiente de Simulação Gráfica 3D para Ensino da Arquitetura de Processadores
Ambiente de Simulação Gráfica 3D para Ensino da Arquitetura de ProcessadoresAmbiente de Simulação Gráfica 3D para Ensino da Arquitetura de Processadores
Ambiente de Simulação Gráfica 3D para Ensino da Arquitetura de ProcessadoresEduardo de Lucena Falcão
 
Arquiteturas, Tecnologias e Desafios para Análise de BigData
Arquiteturas, Tecnologias e Desafios para Análise de BigDataArquiteturas, Tecnologias e Desafios para Análise de BigData
Arquiteturas, Tecnologias e Desafios para Análise de BigDataSandro Andrade
 
Computação paralela 2 cluster e grid
Computação paralela 2 cluster e grid Computação paralela 2 cluster e grid
Computação paralela 2 cluster e grid Fernando Gomes Chaves
 
Modelos de computação distribuída no Hadoop
Modelos de computação distribuída no HadoopModelos de computação distribuída no Hadoop
Modelos de computação distribuída no HadoopBig Data Week São Paulo
 
Filesystem distribuído com hadoop!!!
Filesystem distribuído com hadoop!!! Filesystem distribuído com hadoop!!!
Filesystem distribuído com hadoop!!! Alessandro Binhara
 
Intro padroesprojetoadaptertemplateobserver
Intro padroesprojetoadaptertemplateobserverIntro padroesprojetoadaptertemplateobserver
Intro padroesprojetoadaptertemplateobserverEduardo Jorge
 
Algoritmos e Estruturas de Dados, edição de 2013/2014
Algoritmos e Estruturas de Dados, edição de 2013/2014Algoritmos e Estruturas de Dados, edição de 2013/2014
Algoritmos e Estruturas de Dados, edição de 2013/2014Pedro Guerreiro
 
Elementary Circuits Enumeration in Graphs
Elementary Circuits Enumeration in GraphsElementary Circuits Enumeration in Graphs
Elementary Circuits Enumeration in GraphsLuiz Kill
 
Paradigmas de Linguagens de Programação - Estruturas de Controle
Paradigmas de Linguagens de Programação - Estruturas de ControleParadigmas de Linguagens de Programação - Estruturas de Controle
Paradigmas de Linguagens de Programação - Estruturas de ControleAdriano Teixeira de Souza
 
Mini-curso Programação Paralela e Distribuída
Mini-curso Programação Paralela e DistribuídaMini-curso Programação Paralela e Distribuída
Mini-curso Programação Paralela e DistribuídaDeivid Martins
 
Oficina: construção de modelos descritivos e preditivos utilizando R
Oficina: construção de modelos descritivos e preditivos utilizando ROficina: construção de modelos descritivos e preditivos utilizando R
Oficina: construção de modelos descritivos e preditivos utilizando RFabrício Barth
 

Semelhante a MapReduce UFRJ Disciplina Redes I (20)

MapReduce
MapReduceMapReduce
MapReduce
 
Map Reduce
Map ReduceMap Reduce
Map Reduce
 
Map reduce novas abordagens para o processo de datamining em grandes volumn...
Map reduce   novas abordagens para o processo de datamining em grandes volumn...Map reduce   novas abordagens para o processo de datamining em grandes volumn...
Map reduce novas abordagens para o processo de datamining em grandes volumn...
 
Big data para programadores convencionais
Big data para programadores convencionaisBig data para programadores convencionais
Big data para programadores convencionais
 
Treinamento Hadoop - dia2
Treinamento Hadoop - dia2Treinamento Hadoop - dia2
Treinamento Hadoop - dia2
 
Seminário Hadoop
Seminário HadoopSeminário Hadoop
Seminário Hadoop
 
R: a alternativa ao SPSS e ao NVivo em software livre
R: a alternativa ao SPSS e ao NVivo em software livreR: a alternativa ao SPSS e ao NVivo em software livre
R: a alternativa ao SPSS e ao NVivo em software livre
 
poster
posterposter
poster
 
AulaAula1(introducao)
AulaAula1(introducao)AulaAula1(introducao)
AulaAula1(introducao)
 
Ambiente de Simulação Gráfica 3D para Ensino da Arquitetura de Processadores
Ambiente de Simulação Gráfica 3D para Ensino da Arquitetura de ProcessadoresAmbiente de Simulação Gráfica 3D para Ensino da Arquitetura de Processadores
Ambiente de Simulação Gráfica 3D para Ensino da Arquitetura de Processadores
 
Arquiteturas, Tecnologias e Desafios para Análise de BigData
Arquiteturas, Tecnologias e Desafios para Análise de BigDataArquiteturas, Tecnologias e Desafios para Análise de BigData
Arquiteturas, Tecnologias e Desafios para Análise de BigData
 
Computação paralela 2 cluster e grid
Computação paralela 2 cluster e grid Computação paralela 2 cluster e grid
Computação paralela 2 cluster e grid
 
Modelos de computação distribuída no Hadoop
Modelos de computação distribuída no HadoopModelos de computação distribuída no Hadoop
Modelos de computação distribuída no Hadoop
 
Filesystem distribuído com hadoop!!!
Filesystem distribuído com hadoop!!! Filesystem distribuído com hadoop!!!
Filesystem distribuído com hadoop!!!
 
Intro padroesprojetoadaptertemplateobserver
Intro padroesprojetoadaptertemplateobserverIntro padroesprojetoadaptertemplateobserver
Intro padroesprojetoadaptertemplateobserver
 
Algoritmos e Estruturas de Dados, edição de 2013/2014
Algoritmos e Estruturas de Dados, edição de 2013/2014Algoritmos e Estruturas de Dados, edição de 2013/2014
Algoritmos e Estruturas de Dados, edição de 2013/2014
 
Elementary Circuits Enumeration in Graphs
Elementary Circuits Enumeration in GraphsElementary Circuits Enumeration in Graphs
Elementary Circuits Enumeration in Graphs
 
Paradigmas de Linguagens de Programação - Estruturas de Controle
Paradigmas de Linguagens de Programação - Estruturas de ControleParadigmas de Linguagens de Programação - Estruturas de Controle
Paradigmas de Linguagens de Programação - Estruturas de Controle
 
Mini-curso Programação Paralela e Distribuída
Mini-curso Programação Paralela e DistribuídaMini-curso Programação Paralela e Distribuída
Mini-curso Programação Paralela e Distribuída
 
Oficina: construção de modelos descritivos e preditivos utilizando R
Oficina: construção de modelos descritivos e preditivos utilizando ROficina: construção de modelos descritivos e preditivos utilizando R
Oficina: construção de modelos descritivos e preditivos utilizando R
 

Mais de Pedro de Vasconcellos

Mais de Pedro de Vasconcellos (15)

FEBRL
FEBRLFEBRL
FEBRL
 
DQguru
DQguruDQguru
DQguru
 
cARdapp - cardápio em realidade aumentada
cARdapp - cardápio em realidade aumentadacARdapp - cardápio em realidade aumentada
cARdapp - cardápio em realidade aumentada
 
Design de Interação - Capítulo 8 - Design, Prototipação e Construção -
Design de Interação - Capítulo 8 - Design, Prototipação e Construção - Design de Interação - Capítulo 8 - Design, Prototipação e Construção -
Design de Interação - Capítulo 8 - Design, Prototipação e Construção -
 
Managing Innovation - 3rd edition – Capítulos 10 e 11
Managing Innovation - 3rd edition – Capítulos 10 e 11Managing Innovation - 3rd edition – Capítulos 10 e 11
Managing Innovation - 3rd edition – Capítulos 10 e 11
 
Gestão da Inovação - Produção acadêmica no Brasil
Gestão da Inovação - Produção acadêmica no BrasilGestão da Inovação - Produção acadêmica no Brasil
Gestão da Inovação - Produção acadêmica no Brasil
 
Bluetooth Low Energy
Bluetooth Low EnergyBluetooth Low Energy
Bluetooth Low Energy
 
Análise Comparativa: MP3 e AAC
Análise Comparativa: MP3 e AACAnálise Comparativa: MP3 e AAC
Análise Comparativa: MP3 e AAC
 
BitTorrent
BitTorrentBitTorrent
BitTorrent
 
Memória Compartilhada Distribuída (DSM)
Memória Compartilhada Distribuída (DSM)Memória Compartilhada Distribuída (DSM)
Memória Compartilhada Distribuída (DSM)
 
Redes Sociais
Redes SociaisRedes Sociais
Redes Sociais
 
Créditos de Carbono e MDL
Créditos de Carbono e MDLCréditos de Carbono e MDL
Créditos de Carbono e MDL
 
Efeitos Visuais
Efeitos VisuaisEfeitos Visuais
Efeitos Visuais
 
Inteligência de enxames - Cardume (PSO + AFSA)
Inteligência de enxames - Cardume (PSO + AFSA)Inteligência de enxames - Cardume (PSO + AFSA)
Inteligência de enxames - Cardume (PSO + AFSA)
 
O computador e a contracultura
O computador e a contraculturaO computador e a contracultura
O computador e a contracultura
 

Último

Lista de presença treinamento de EPI NR-06
Lista de presença treinamento de EPI NR-06Lista de presença treinamento de EPI NR-06
Lista de presença treinamento de EPI NR-06AndressaTenreiro
 
10 - RELOGIO COMPARADOR - OPERAÇÃO E LEITURA.pptx
10 - RELOGIO COMPARADOR - OPERAÇÃO E LEITURA.pptx10 - RELOGIO COMPARADOR - OPERAÇÃO E LEITURA.pptx
10 - RELOGIO COMPARADOR - OPERAÇÃO E LEITURA.pptxVagner Soares da Costa
 
07 - MICRÔMETRO EXTERNO SISTEMA MÉTRICO.pptx
07 - MICRÔMETRO EXTERNO SISTEMA MÉTRICO.pptx07 - MICRÔMETRO EXTERNO SISTEMA MÉTRICO.pptx
07 - MICRÔMETRO EXTERNO SISTEMA MÉTRICO.pptxVagner Soares da Costa
 
NR10 - Treinamento LOTO - 2023.pp tx
NR10 - Treinamento LOTO - 2023.pp     txNR10 - Treinamento LOTO - 2023.pp     tx
NR10 - Treinamento LOTO - 2023.pp txrafaelacushman21
 
TRABALHO INSTALACAO ELETRICA EM EDIFICIO FINAL.docx
TRABALHO INSTALACAO ELETRICA EM EDIFICIO FINAL.docxTRABALHO INSTALACAO ELETRICA EM EDIFICIO FINAL.docx
TRABALHO INSTALACAO ELETRICA EM EDIFICIO FINAL.docxFlvioDadinhoNNhamizi
 
apresentação de Bancos de Capacitores aula
apresentação de Bancos de Capacitores aulaapresentação de Bancos de Capacitores aula
apresentação de Bancos de Capacitores aulaWilliamCruz402522
 
Apresentação Manutenção Total Produtiva - TPM
Apresentação Manutenção Total Produtiva - TPMApresentação Manutenção Total Produtiva - TPM
Apresentação Manutenção Total Produtiva - TPMdiminutcasamentos
 

Último (7)

Lista de presença treinamento de EPI NR-06
Lista de presença treinamento de EPI NR-06Lista de presença treinamento de EPI NR-06
Lista de presença treinamento de EPI NR-06
 
10 - RELOGIO COMPARADOR - OPERAÇÃO E LEITURA.pptx
10 - RELOGIO COMPARADOR - OPERAÇÃO E LEITURA.pptx10 - RELOGIO COMPARADOR - OPERAÇÃO E LEITURA.pptx
10 - RELOGIO COMPARADOR - OPERAÇÃO E LEITURA.pptx
 
07 - MICRÔMETRO EXTERNO SISTEMA MÉTRICO.pptx
07 - MICRÔMETRO EXTERNO SISTEMA MÉTRICO.pptx07 - MICRÔMETRO EXTERNO SISTEMA MÉTRICO.pptx
07 - MICRÔMETRO EXTERNO SISTEMA MÉTRICO.pptx
 
NR10 - Treinamento LOTO - 2023.pp tx
NR10 - Treinamento LOTO - 2023.pp     txNR10 - Treinamento LOTO - 2023.pp     tx
NR10 - Treinamento LOTO - 2023.pp tx
 
TRABALHO INSTALACAO ELETRICA EM EDIFICIO FINAL.docx
TRABALHO INSTALACAO ELETRICA EM EDIFICIO FINAL.docxTRABALHO INSTALACAO ELETRICA EM EDIFICIO FINAL.docx
TRABALHO INSTALACAO ELETRICA EM EDIFICIO FINAL.docx
 
apresentação de Bancos de Capacitores aula
apresentação de Bancos de Capacitores aulaapresentação de Bancos de Capacitores aula
apresentação de Bancos de Capacitores aula
 
Apresentação Manutenção Total Produtiva - TPM
Apresentação Manutenção Total Produtiva - TPMApresentação Manutenção Total Produtiva - TPM
Apresentação Manutenção Total Produtiva - TPM
 

MapReduce UFRJ Disciplina Redes I

  • 1. Universidade Federal do Rio de Janeiro Disciplina: Redes I (EEL878) Alunos: Henrique Pan Pedro Henrique Cruz Pedro de Vasconcellos
  • 2. Agenda • Histórico, motivação e cenário • Conceitos • Modelo MapReduce • Implementação • Para o futuro • Conclusão • Perguntas & Respostas
  • 3. Histórico, motivação e cenário Fatores importantes: • Grande quantidade de dados • Pequeno aumento da frequência dos processadores Solução: paralelização!
  • 4. Histórico, motivação e cenário (2) Figura 1 - Gráfico obtido com dados de [6].
  • 5. Histórico, motivação e cenário (3) Na Google ®: • Paralelizações feitas caso-a-caso • Problemas em comum resolvidos várias vezes. Modelo de paralelizações mais geral
  • 6. Conceito: Paralelização Executar partes diferentes de um algoritmo em unidades de processamento diferentes.
  • 7. Conceito: Paralelização (2) Figura 2 – A paralelização de um processamento
  • 8. Conceito: Paralelização (3) PROBLEMAS: • Designar processamento aos processadores • Fornecer exclusão mútua • Garantir equivalência nos algoritmos
  • 9. Conceito: Computação distribuída • Sistema Paralelo • Único computador com vários processadores • Compartilhamento de recursos • Sistema Distribuído • Diversos computadores ligados em rede • cluster • nó
  • 10. O modelo MapReduce Abstração que permite que o usuário seja isolado da camada de paralelização. [1] A paralelização depende da implementação do modelo MapReduce.
  • 11. MapReduce: visão do usuário • Conceitos de programação funcional • Dados inalterados • Funções map e fold
  • 12. map(f, lista) - programação funcional • f é aplicada a cada elemento de lista, retornando uma nova lista Figura 3 – Exemplo do mapeamento funcional
  • 13. fold(f, lista) – programação funcional • f é aplicada cumulativamente a cada elemento de lista, até reduzi-la a um único valor de saída Figura 4 – Exemplo da redução funcional
  • 14. map(chave, valor) map(chave, valor) => <chaveInt, valorInt> •Inspirada no mapeamento funcional •Implementada pelo usuário • Sem necessidade de argumento “f”
  • 15. reduce(chaveInt, valoresInt) reduce(chaveInt, valoresInt) => valoresFinais •Inspirada na função fold •Implementada pelo usuário • Sem necessidade de argumento “f”
  • 16. Funções map e reduce Pares de entrada (chave, valor) Pares de entrada (chave, valor) Conjunto de dados N map (chave 1, valores) (c2, v) (c3, v) Figura 5 – Esquematização das funções map e reduce – Adaptado de [8] Conjunto de dados 1 map (chave 1, valores) (c2, v) (c3, v) Barreira (agrega valores intermediários de acordo com a chave) (chave 1, valores intermediários) reduce Valores finais provenientes da chave 1 (chave 2, valores intermediários) reduce Valores finais provenientes da chave 2 (chave 3, valores intermediários) reduce Valores finais provenientes da chave 3
  • 17. Exemplo: contador de palavras Figura 6 – Funções map e reduce em um programa contador de palavras – Adaptado de [2]
  • 18. A implementação do MapReduce Onde a paralelização acontece Diversas implementações são possíveis • Cenários diferentes demandam implementações diferentes
  • 19. A implementação da Google® Características dos cluster’s disponíveis: • Dispositivos comuns • processadores x86 dual-core • discos IDE • memória de 2 a 4 GB • rede de 100 megabits/segundo • Centenas ou milhares de nós. • Sistema de arquivos distribuído próprio, o GFS [5]
  • 20. A implementação da Google® (2) • Usuário: map, reduce e MapReduce • Arquivo de entrada é fragmentado (64 MB/parte) • Fragmento = chave + valor • Funções map e reduce copiadas para os nós • Mestre • Trabalhadores • Mapeadores • Redutores
  • 21. A implementação da Google® (3) • Mestre • Tarefas a trabalhadores ociosos • Mapeadores • Recebem um fragmento e chamam a função map • Guardam pares intermediários na memória • Escrevem os pares em disco periodicamente • Notificam o mestre sobre locais dos pares intermediários
  • 22. A implementação da Google® (4) • Redutores • Recebem do mestre uma chave e os lugares de seus valores intermediários • Buscam os valores intermediários e chamam a função reduce • Escrevem as saídas em um arquivo • Implementação retorna ao programa do usuário
  • 23. A implementação da Google® (5) Figura 7 – Esquema da implementação da Google®
  • 24. Hadoop Framework de código aberto do modelo MapReduce [4] • Usa interfaces Java® para map e reduce • Interface Java®: classe com método(s) sem código, mas com assinatura • É parecido com a implementação da Google® • Flexível com relação ao cluster.
  • 25. Ambientes oportunísticos Ciclos ociosos de máquinas podem ser usados para executar tarefas de map/reduce. • Recursos disponíveis por curtíssimos períodos de tempo Projeto MOON[7] (MapReduce On Opportunistic eNvironments)
  • 26. Para o futuro • Implementação simplificada de MapReduce • Ambientes oportunísticos como serviço: • Como garantir um bom serviço? • Executar código de interesse nas máquinas de usuários de aplicativos web.
  • 27. Conclusão • Dividir para conquistar • Peculiaridades de cada problema X operar um sistema distribuído • Estudar restrições e diminuir o impacto para o usuário “Funciona porque é simples”
  • 29. Perguntas & Respostas 1. O que são sistemas distribuídos e para que servem? R: São sistemas que resolvem problemas de computação utilizando diversas máquinas ligadas em rede, formando um cluster. Eles servem para diminuir o tempo na obtenção de uma resposta computacional sem precisar aumentar a velocidade de um processador individualmente.
  • 30. Perguntas & Respostas 2. O que é o modelo MapReduce e como ele ajuda a resolver problemas paralelizáveis? R: É uma abstração que cria uma interface entre um programador e um sistema distribuído. Dessa forma, ele faz com que o programador consiga implementar separadamente a solução para seu problema específico e uma solução geral para seu sistema distribuído, a implementação do MapReduce.
  • 31. Perguntas & Respostas 3. Qual é a abstração do modelo MapReduce? R: O usuário escreve duas funções: uma map(chave, valor) e uma reduce(chave, valores). Depois, o usuário chama a implementação indicando um conjunto fragmentável ou fragmentado de dados de entrada onde cada fragmento tem o formato (chave, valor).
  • 32. Perguntas & Respostas 4. O que é uma implementação do MapReduce? R: É a forma como o sistema distribuído em questão vai executar as funções map e reduce. Sistemas diferentes podem demandar implementações diferentes para um bom funcionamento do MapReduce.
  • 33. Perguntas & Respostas 5. Sobre a implementação da Google®, qual o papel do mestre e como as trabalhadoras são classificadas? R: O Mestre designa trabalho às trabalhadoras. As trabalhadoras podem ser classificadas em mapeadoras ou redutoras.
  • 34. Referências [1] DEAN, Jeffrey; GHEMAWAT, Sanjay. MapReduce: Simplied Data Processing on Large Clusters. Communications of the ACM, v. 51, n. 1, p. 107-113, jan. 2008. Disponível em: <http://static.googleusercontent.com/external_content/untrust ed_dlcp/research.google.com/pt-BR//archive/mapreduce-osdi04. pdf>. Acesso em: 23 maio 2012. [2] LÄMMEL, Ralf. Google's MapReduce Programming Model - Revisited. Science of Computer Programming, v.70, n. 1, p. 1-30, jan. 2008. Disponível em: <http://web.cs.wpi.edu/~cs3013/a11/Papers/Lammel_MapRed uce_Revisited.pdf>. Acesso em: 23 maio 2012.
  • 35. Referências (2) [3] VENKATESH, Kirpal A.; NEELAMEGAM, K.; REVATHY, R. Usando MapReduce e balanceamento de carga em nuvens, out. 2010. Disponível em: <http://www.ibm.com/developerworks/br/java/library/cl-mapreduce/# N1010A>. Acesso em: 24 abr. 2012. [4] HADOOP. Hadoop 1.0.2 documentation. Disponível em: <http://hadoop.apache.org/common/docs/current/index.html>. Acesso em: 24 abr. 2012. [5] GHEMAWAT, Sanjay; GOBIOFF, Howard; LEUNG, Shun-Tak. The Google File System.ACM SIGOPS Operating Systems Review - SOSP '03, v. 37, n.5, p. 29-43, dez. 2003. Disponível em: <http://www.cs.brown.edu/courses/cs295-11/2006/gfs.pdf>. Acesso em: 23 maio 2012.
  • 36. Referências (3) [6] INTEL. Microprocessor Quick Reference Guide. Disponível em: <http://www.intel.com/pressroom/kits/quickrefyr.htm>. Acesso em: 23 maio 2012. [7] Heshan Lin; ARCHULETA, Jeremy; Xiaosong Ma; Wu-chun Feng; Zhe Zhang; GARDNER, Mark. MOON: MapReduce On Opportunistic eNvironments. Proceedings of the 19th ACM International Symposium on High Performance Distributed Computing - ACM HPDC '10, p. 95-106, 2010. Disponível em: <http://eprints.cs.vt.edu/archive/00001089/01/moon.pdf>. Acesso em: 24 maio 2012.
  • 37. Referências (4) [8] GOOGLE. Cluster Computing and MapReduce. 2007. Disponível em: <http://code.google.com/intl/pt- BR/edu/submissions/mapreduce-minilecture/listing.html>. Acesso em: 23 maio 2012.