SlideShare ist ein Scribd-Unternehmen logo
1 von 61
Downloaden Sie, um offline zu lesen
MapReduce
      Diego Magalhães Cunha
   Jorge Luiz de Faria Fernandes
         Juliana Paula Félix
Roteiro
1 - Introdução
2 - Processamento Distribuído
     2.1 - Clusters
     2.2 - Balanceamento de Carga
3 - MapReduce
     3.1 - Modelo
     3.2 - Visão Geral - Google
     3.3 - Arquitetura
     3.4 - Tolerância a Falhas
4 - Hadoop
     4.1 - Conceito
     4.2 - Relação entre Google MapReduce e Hadoop MapReduce
5 - Performance
     5.1 Backup Tasks
     5.2 Exemplo
5 - Conclusão
6 - Referências Bibliográficas
Introdução
Introdução
•   Com a evolução dos sistemas de
    informação e o aumento da quantidade
    de serviços disponibilizados a seus
    usuários, cresce também o volume de
    dados que precisam ser processados
    pelos sistemas computacionais.
Introdução
•   De acordo com a IDC (International
    Data Corporation), a quantidade de
    informação   criada, capturada    ou
    replicada em meio digital no ano de
    2009 apresentou um crescimento de
    62% (em relação à média dos anos
    anteriores),              alcançando
    aproximadamente 800.000 petabytes.
Introdução
•   Já em 2010, este valor foi por volta de
    1.2 milhões de petabytes. Para 2020 o
    crescimento esperado deve alcançar os
    35 zetabytes, equivalentes a 35
    milhões de petabytes.
Introdução
•   Para    que   a   computação     dessa
    quantidade     de   informação    seja
    realizada em tempo viável, cada vez
    mais faz-se necessária a exploração de
    paradigmas de programação paralela e
    processamento distribuído.
Introdução
•   Porém, desenvolver softwares para
    ambientes distribuídos é uma tarefa
    complexa, pois envolve uma série de
    conceitos e problemas que devem ser
    considerados pelos programadores,
    tais como:

    o concorrência
    o tolerância a falhas
    o distribuição de dados
    o e balanceamento de cargas.
Introdução
•   A fim de facilitar este processo, a
    multinacional Google desenvolveu o
    MapReduce,     um      modelo     de
    programação       paralela      para
    processamento largamente distribuído
    de grandes volumes de dados.
Introdução
•   Além do framework da Google,
    diversas  implementações    para   o
    MapReduce    foram     desenvolvidas,
    dentre as quais, a mais conhecida e
    divulgada está inserida no projeto
    Hadoop, mantido pela Apache Software
    Foundation.
Processamento
  Distribuído
Processamento Distribuído

Clusters

•   Um cluster pode ser definido como um
    conjunto de máquinas, administrado e
    utilizado por um único indivíduo, com o
    objetivo de solucionar problemas que
    levariam       muito     tempo      (de
    processamento) em uma única estação
    de trabalho.
Processamento Distribuído

Clusters - Características

•   constituído por máquinas de prateleira (baixo
    custo);
•   nós geograficamente próximos, geralmente em
    um mesmo prédio;
•   conexões entre as máquinas possuem altas
    taxas de transferências;
•   máquinas são homogêneas, ou seja, possuem
    capacidades de processamento similares;
Processamento Distribuído
Processamento Distribuído
Processamento Distribuído
Processamento Distribuído
Balanceamento de Carga

•   O balanceamento de carga é uma
    prática utilizada para atingir um
    aproveitamento ótimo dos recursos do
    sistema distribuído, através de uma
    política de alocação de trabalho
    coerente com a capacidade de
    processamento dos dispositivos do
    sistema, a fim de obter o mesmo nível
    de esforço em todos os recursos.
Processamento Distribuído
Processamento Distribuído
MapReduce
MapReduce

Modelo

•   O MapReduce, criado pela Google, é
    um modelo de programação paralela
    para     processamento        largamente
    distribuído de grandes volumes de
    dados. Seu objetivo é facilitar a
    programação         de         aplicativos
    distribuídos com este perfil.
MapReduce

Modelo

•   Para tal, o modelo inspira-se nas
    primitivas Map e Reduce presentes em
    diversas linguagens funcionais, como
    Lisp e Haskell, por exemplo.
MapReduce

Modelo

•   Essa abordagem foi adotada pois
    verificou-se que, em muitos casos, era
    necessário mapear fragmentos dos
    dados de entrada a uma chave
    identificadora, e então processar todos
    os fragmentos que compartilhassem a
    mesma chave.
MapReduce

Modelo

•   Assim,   a    tarefa  principal   do
    programador é implementar estas duas
    funções,    indicando    como      o
    mapeamento e redução dos dados
    serão compostos.
MapReduce

Modelo

•   Todo o trabalho de distribuição do
    sistema – incluindo problemas de
    comunicação, tolerância a falhas,
    concorrência, etc. – é abstraído, e fica
    a cargo do próprio framework.
MapReduce

Modelo

•   Durante a execução, as funções
    recebem e emitem dados no formato
    de pares <chave, valor>. Como o tipo
    destes   elementos    dependem     da
    aplicação que será executada, cabe ao
    desenvolvedor, também, definir estas
    propriedades.
MapReduce
•   Pseudocódigo que conta a quantidade de ocorrências
    de cada palavra em um documento
MapReduce

Modelo

•   No pseudocódigo, cada chamada da
    função map recebe o número dessa
    linha. Para cada palavra encontrada na
    linha recebida, a função emite um par
    chave/valor, onde a chave é a palavra
    em si, e o valor é a constante 1 (um).
MapReduce

Modelo

•   A função reduce, por sua vez, recebe
    como entrada uma palavra (chave), e
    um iterador para todos os valores
    emitidos pela função map, associados
    com a palavra em questão. Todos os
    valores são então somados em um par
    chave/valor contendo a palavra, e seu
    total de ocorrências é emitido.
MapReduce
MapReduce

Modelo

•   Cada linha de texto gera uma chamada
    à função map;
•   Cada função map gera n pares <chave,
    valor> intermediários (n palavras em
    cada linha);
•   Pares intermediários associados a uma
    mesma chave são pasados para uma
    função reduce;
MapReduce

Modelo

•   Cada função reduce retorna a soma de
    todos os valores presentes na lista de
    pares recebida.

•   Resultados    são   armazenados    no
    arquivo de saída.
MapReduce

Modelo

•   frequência de acesso a URLs
     o Map<URL; 1> / Reduce <URL, Total>
•   grafo reverso de links web
     o Map<Destino, Origem> / Reduce
       <destino, lista(origem)>
•   índice invertido
     o Map<palavra, ID documento> / Reduce
       <palavra, lista(ID documento)>
MapReduce

Modelo

•   O modelo MapReduce pode ser
    executado sobre uma variedade de
    plataformas e ambientes distintos.
    Logo, a melhor implementação do
    framework depende do ambiente alvo.
MapReduce

Visão Geral - Google

•   As máquinas são constituídas de
    múltiplos processadores x86 rodando
    linux, com 2-4 GB de memória;
•   Hardwares de redes usados são
    geralmente ou 100Mbit/s ou 1Gbit/s no
    nível da máquina;
•   Centenas ou milhares de máquinas
    (falhas de máquinas são comuns);
MapReduce

Visão Geral - Google

•   Armazenamento em discos locais IDE;
•   Sistema de arquivos distribuído gerencia os
    dados (GFS);
•   Usuário implementa as funções map e reduce
•   A implementação fragmenta o arquivo de
    entrada em blocos de 64MB (tamanho do bloco
    do GFS), e armazena cópias de cada bloco em
    diferentes máquinas.
MapReduce

Visão Geral - Google

•   Usuários submetem jobs (conjunto de
    tarefas) para o master;
•   Master escalona tarefas para os
    workers.
MapReduce
MapReduce

Arquitetura

•   Uma implementação feita para utilizar
    a GPU de uma máquina, por exemplo,
    provavelmente será beneficiada por
    um comportamento distinto a uma
    implementação destinada a um grande
    cluster.
MapReduce

Arquitetura

•   O Google MapReduce foi desenvolvido
    para grandes clusters de máquinas de
    prateleira, interligadas por uma rede
    do tipo switched Ethernet, e é
    constituído por basicamente dois tipos
    de nós: Master e Worker (denominados
    Mestre e Trabalhador em português,
    respectivamente).
MapReduce

Arquitetura
MapReduce

Arquitetura

•   O nó mestre tem como função atender
    requisições    de    execução      (jobs)
    efetuadas pelos usuários, e gerenciá-
    las, criando variáveis tarefas (tasks) e
    delegando-as aos nós trabalhadores;
MapReduce

Arquitetura

•   Os trabalhadores por sua vez são
    encarregados de executar de fato
    essas tarefas, aplicando, de acordo
    com seu tipo, as funções map ou
    reduce definidas pelo usuário (típica
    arquitetura master-slave).
MapReduce

Arquitetura

•   A arquitetura compreende, ainda, um
    sistema de arquivos distribuídos, onde
    ficam armazenados os dados utilizados
    como entrada para os Jobs. Para evitar
    a transferência excessiva de dados, os
    workers do MapReduce são também
    nós do sistema de arquivos.
MapReduce

Tolerância a falhas

Worker
•   Master detecta falhas através de pings
    periódicos;
•   Re-executa map tasks em progresso e
    concluídas;
•   Re-executa reduce tasks em progresso;
•   Master     re-executa   tasks   concluídas,
    eventualmente completando a operação de
    MapReduce.
MapReduce

Tolerância a falhas

Master
• Possui um único master, e sua falha é
  improvável;
• Poderia ser tratada através de
  checkpoints;
• A atual implementação da Google
  aborta o MapReduce se o master
  falhar.
MapReduce

Tolerância a falhas

•   Robusto: perdeu 1200 máquinas de um
    total de 1600, e a operação foi
    concluída com sucesso.
Hadoop
Hadoop

Conceito

•   Uma      das  implementações     mais
    conhecidas do MapReduce faz parte do
    projeto Hadoop, mantido pela Apache
    Software Foundation, e que tem como
    finalidade desenvolver software livre
    para computação distribuída, escalável
    e confiável.
Hadoop

Conceito

•   O    Hadoop     MapReduce    é   uma
    implementação em Java do modelo de
    framework criado pela Google, o qual
    foi originalmente desenvolvido em C+
    +.
•   Muito parecido com a implementação
    da Google, mas é flexível com relação
    às máquinas em que roda.
Hadoop
Hadoop

Relação entre Google MapReduce
e Hadoop MapReduce
Performance
Performance

Backup Tasks

•   Problemas causados por stragglers
    (máquinas cuja performance está
    aquém dos demais nós).

•   Tarefas executadas em stragglers
    atrasam         o    processamento,
    principalmente quando ocorre na fase
    final de um job.
Performance

Backup Tasks

•   São cópias de tasks em andamento no final
    de sua execução de map/reduce.


•   Quando qualquer uma das cópias termina
    sua execução com sucesso, as demais são
    encerradas.


•   Reduz o tempo de execução em cerca de
    40%.
Performance


Teste realizado em um cluster de 1800
máquinas, com processadores Intel Xeon
2GHz, 4GB de memória, dois discos IDE
160GB, e um link gigabit ethernet.
• Ordenação de 1 terabyte de dados
Performance
Performance


•   Utilização de Backup     Tasks reduz
    significativamente o      tempo   de
    execução.

•   Sistema lida bem com falhas.
Conclusão


•   Modelo fácil de usar, mesmo por
    programadores     sem     experiência em
    processamento distribuído;
•   Permite o programador focar no problema,
    e esquecer os "detalhes";
•   Grande variedade de problemas podem ser
    expressos em MapReduce;
•   Simplificou computações em larga escala
    do Google.
Referências
Bibliográficas
Referências Bibliográficas
1. MapReduce: Simplified Data Processing
   on Large Clusters [Jeffrey Dean and
   Sanjay Ghemawat].

2. Simulação e Estudo da Plataforma
   Hadoop MapReduce em Ambientes
   Heterogêneos [Wagner Kolberg].

Weitere ähnliche Inhalte

Ähnlich wie MapReduce e Hadoop para processamento distribuído de grandes volumes de dados

Big data para programadores convencionais
Big data para programadores convencionaisBig data para programadores convencionais
Big data para programadores convencionaisRoberto Oliveira
 
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
 
Filesystem distribuído com hadoop!!!
Filesystem distribuído com hadoop!!! Filesystem distribuído com hadoop!!!
Filesystem distribuído com hadoop!!! Alessandro Binhara
 
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
 
Bigdata na pratica: Resolvendo problemas de performance com hadoop
Bigdata na pratica: Resolvendo problemas de performance com hadoopBigdata na pratica: Resolvendo problemas de performance com hadoop
Bigdata na pratica: Resolvendo problemas de performance com hadooptdc-globalcode
 
[DTC21] Lucas Gomes - Do 0 ao 100 no Big Data
[DTC21] Lucas Gomes - Do 0 ao 100 no Big Data[DTC21] Lucas Gomes - Do 0 ao 100 no Big Data
[DTC21] Lucas Gomes - Do 0 ao 100 no Big DataDeep Tech Brasil
 
Big Data - O que é o hadoop, map reduce, hdfs e hive
Big Data - O que é o hadoop, map reduce, hdfs e hiveBig Data - O que é o hadoop, map reduce, hdfs e hive
Big Data - O que é o hadoop, map reduce, hdfs e hiveFlavio Fonte, PMP, ITIL
 
Apresentação em Aplicações Distribuídas – Hadoop MapReduce
Apresentação em Aplicações Distribuídas – Hadoop MapReduceApresentação em Aplicações Distribuídas – Hadoop MapReduce
Apresentação em Aplicações Distribuídas – Hadoop MapReduceMatteus Barbosa
 
Big Data Open Source com Hadoop
Big Data Open Source com HadoopBig Data Open Source com Hadoop
Big Data Open Source com HadoopAmbiente Livre
 
Palestra: Big Data Open Source com Hadoop - FLISOL 2014 - Curitiba
Palestra: Big Data Open Source com Hadoop - FLISOL 2014 - CuritibaPalestra: Big Data Open Source com Hadoop - FLISOL 2014 - Curitiba
Palestra: Big Data Open Source com Hadoop - FLISOL 2014 - CuritibaMarcio Junior Vieira
 
Arquitetura para solução Big Data – open source
Arquitetura para solução Big Data – open sourceArquitetura para solução Big Data – open source
Arquitetura para solução Big Data – open sourceFelipe RENZ - MBA TI / Big
 

Ähnlich wie MapReduce e Hadoop para processamento distribuído de grandes volumes de dados (20)

Big data para programadores convencionais
Big data para programadores convencionaisBig data para programadores convencionais
Big data para programadores convencionais
 
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...
 
MapReduce
MapReduceMapReduce
MapReduce
 
Filesystem distribuído com hadoop!!!
Filesystem distribuído com hadoop!!! Filesystem distribuído com hadoop!!!
Filesystem distribuído com hadoop!!!
 
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
 
Bigdata na pratica: Resolvendo problemas de performance com hadoop
Bigdata na pratica: Resolvendo problemas de performance com hadoopBigdata na pratica: Resolvendo problemas de performance com hadoop
Bigdata na pratica: Resolvendo problemas de performance com hadoop
 
Hadoop
HadoopHadoop
Hadoop
 
[DTC21] Lucas Gomes - Do 0 ao 100 no Big Data
[DTC21] Lucas Gomes - Do 0 ao 100 no Big Data[DTC21] Lucas Gomes - Do 0 ao 100 no Big Data
[DTC21] Lucas Gomes - Do 0 ao 100 no Big Data
 
BIG DATA na UFSM
BIG DATA na UFSMBIG DATA na UFSM
BIG DATA na UFSM
 
Map Reduce
Map ReduceMap Reduce
Map Reduce
 
Treinamento hadoop - dia3
Treinamento hadoop - dia3Treinamento hadoop - dia3
Treinamento hadoop - dia3
 
Big Data - O que é o hadoop, map reduce, hdfs e hive
Big Data - O que é o hadoop, map reduce, hdfs e hiveBig Data - O que é o hadoop, map reduce, hdfs e hive
Big Data - O que é o hadoop, map reduce, hdfs e hive
 
Apresentação em Aplicações Distribuídas – Hadoop MapReduce
Apresentação em Aplicações Distribuídas – Hadoop MapReduceApresentação em Aplicações Distribuídas – Hadoop MapReduce
Apresentação em Aplicações Distribuídas – Hadoop MapReduce
 
Servidores de Aplicações
Servidores de AplicaçõesServidores de Aplicações
Servidores de Aplicações
 
Hadoop
HadoopHadoop
Hadoop
 
Big Data Open Source com Hadoop
Big Data Open Source com HadoopBig Data Open Source com Hadoop
Big Data Open Source com Hadoop
 
RAD
RADRAD
RAD
 
Palestra: Big Data Open Source com Hadoop - FLISOL 2014 - Curitiba
Palestra: Big Data Open Source com Hadoop - FLISOL 2014 - CuritibaPalestra: Big Data Open Source com Hadoop - FLISOL 2014 - Curitiba
Palestra: Big Data Open Source com Hadoop - FLISOL 2014 - Curitiba
 
Arquitetura para solução Big Data – open source
Arquitetura para solução Big Data – open sourceArquitetura para solução Big Data – open source
Arquitetura para solução Big Data – open source
 
BigData MapReduce
BigData MapReduceBigData MapReduce
BigData MapReduce
 

MapReduce e Hadoop para processamento distribuído de grandes volumes de dados

  • 1. MapReduce Diego Magalhães Cunha Jorge Luiz de Faria Fernandes Juliana Paula Félix
  • 2. Roteiro 1 - Introdução 2 - Processamento Distribuído 2.1 - Clusters 2.2 - Balanceamento de Carga 3 - MapReduce 3.1 - Modelo 3.2 - Visão Geral - Google 3.3 - Arquitetura 3.4 - Tolerância a Falhas 4 - Hadoop 4.1 - Conceito 4.2 - Relação entre Google MapReduce e Hadoop MapReduce 5 - Performance 5.1 Backup Tasks 5.2 Exemplo 5 - Conclusão 6 - Referências Bibliográficas
  • 4. Introdução • Com a evolução dos sistemas de informação e o aumento da quantidade de serviços disponibilizados a seus usuários, cresce também o volume de dados que precisam ser processados pelos sistemas computacionais.
  • 5. Introdução • De acordo com a IDC (International Data Corporation), a quantidade de informação criada, capturada ou replicada em meio digital no ano de 2009 apresentou um crescimento de 62% (em relação à média dos anos anteriores), alcançando aproximadamente 800.000 petabytes.
  • 6. Introdução • Já em 2010, este valor foi por volta de 1.2 milhões de petabytes. Para 2020 o crescimento esperado deve alcançar os 35 zetabytes, equivalentes a 35 milhões de petabytes.
  • 7. Introdução • Para que a computação dessa quantidade de informação seja realizada em tempo viável, cada vez mais faz-se necessária a exploração de paradigmas de programação paralela e processamento distribuído.
  • 8. Introdução • Porém, desenvolver softwares para ambientes distribuídos é uma tarefa complexa, pois envolve uma série de conceitos e problemas que devem ser considerados pelos programadores, tais como: o concorrência o tolerância a falhas o distribuição de dados o e balanceamento de cargas.
  • 9. Introdução • A fim de facilitar este processo, a multinacional Google desenvolveu o MapReduce, um modelo de programação paralela para processamento largamente distribuído de grandes volumes de dados.
  • 10. Introdução • Além do framework da Google, diversas implementações para o MapReduce foram desenvolvidas, dentre as quais, a mais conhecida e divulgada está inserida no projeto Hadoop, mantido pela Apache Software Foundation.
  • 12. Processamento Distribuído Clusters • Um cluster pode ser definido como um conjunto de máquinas, administrado e utilizado por um único indivíduo, com o objetivo de solucionar problemas que levariam muito tempo (de processamento) em uma única estação de trabalho.
  • 13. Processamento Distribuído Clusters - Características • constituído por máquinas de prateleira (baixo custo); • nós geograficamente próximos, geralmente em um mesmo prédio; • conexões entre as máquinas possuem altas taxas de transferências; • máquinas são homogêneas, ou seja, possuem capacidades de processamento similares;
  • 17. Processamento Distribuído Balanceamento de Carga • O balanceamento de carga é uma prática utilizada para atingir um aproveitamento ótimo dos recursos do sistema distribuído, através de uma política de alocação de trabalho coerente com a capacidade de processamento dos dispositivos do sistema, a fim de obter o mesmo nível de esforço em todos os recursos.
  • 21. MapReduce Modelo • O MapReduce, criado pela Google, é um modelo de programação paralela para processamento largamente distribuído de grandes volumes de dados. Seu objetivo é facilitar a programação de aplicativos distribuídos com este perfil.
  • 22. MapReduce Modelo • Para tal, o modelo inspira-se nas primitivas Map e Reduce presentes em diversas linguagens funcionais, como Lisp e Haskell, por exemplo.
  • 23. MapReduce Modelo • Essa abordagem foi adotada pois verificou-se que, em muitos casos, era necessário mapear fragmentos dos dados de entrada a uma chave identificadora, e então processar todos os fragmentos que compartilhassem a mesma chave.
  • 24. MapReduce Modelo • Assim, a tarefa principal do programador é implementar estas duas funções, indicando como o mapeamento e redução dos dados serão compostos.
  • 25. MapReduce Modelo • Todo o trabalho de distribuição do sistema – incluindo problemas de comunicação, tolerância a falhas, concorrência, etc. – é abstraído, e fica a cargo do próprio framework.
  • 26. MapReduce Modelo • Durante a execução, as funções recebem e emitem dados no formato de pares <chave, valor>. Como o tipo destes elementos dependem da aplicação que será executada, cabe ao desenvolvedor, também, definir estas propriedades.
  • 27. MapReduce • Pseudocódigo que conta a quantidade de ocorrências de cada palavra em um documento
  • 28. MapReduce Modelo • No pseudocódigo, cada chamada da função map recebe o número dessa linha. Para cada palavra encontrada na linha recebida, a função emite um par chave/valor, onde a chave é a palavra em si, e o valor é a constante 1 (um).
  • 29. MapReduce Modelo • A função reduce, por sua vez, recebe como entrada uma palavra (chave), e um iterador para todos os valores emitidos pela função map, associados com a palavra em questão. Todos os valores são então somados em um par chave/valor contendo a palavra, e seu total de ocorrências é emitido.
  • 31. MapReduce Modelo • Cada linha de texto gera uma chamada à função map; • Cada função map gera n pares <chave, valor> intermediários (n palavras em cada linha); • Pares intermediários associados a uma mesma chave são pasados para uma função reduce;
  • 32. MapReduce Modelo • Cada função reduce retorna a soma de todos os valores presentes na lista de pares recebida. • Resultados são armazenados no arquivo de saída.
  • 33. MapReduce Modelo • frequência de acesso a URLs o Map<URL; 1> / Reduce <URL, Total> • grafo reverso de links web o Map<Destino, Origem> / Reduce <destino, lista(origem)> • índice invertido o Map<palavra, ID documento> / Reduce <palavra, lista(ID documento)>
  • 34. MapReduce Modelo • O modelo MapReduce pode ser executado sobre uma variedade de plataformas e ambientes distintos. Logo, a melhor implementação do framework depende do ambiente alvo.
  • 35. MapReduce Visão Geral - Google • As máquinas são constituídas de múltiplos processadores x86 rodando linux, com 2-4 GB de memória; • Hardwares de redes usados são geralmente ou 100Mbit/s ou 1Gbit/s no nível da máquina; • Centenas ou milhares de máquinas (falhas de máquinas são comuns);
  • 36. MapReduce Visão Geral - Google • Armazenamento em discos locais IDE; • Sistema de arquivos distribuído gerencia os dados (GFS); • Usuário implementa as funções map e reduce • A implementação fragmenta o arquivo de entrada em blocos de 64MB (tamanho do bloco do GFS), e armazena cópias de cada bloco em diferentes máquinas.
  • 37. MapReduce Visão Geral - Google • Usuários submetem jobs (conjunto de tarefas) para o master; • Master escalona tarefas para os workers.
  • 39. MapReduce Arquitetura • Uma implementação feita para utilizar a GPU de uma máquina, por exemplo, provavelmente será beneficiada por um comportamento distinto a uma implementação destinada a um grande cluster.
  • 40. MapReduce Arquitetura • O Google MapReduce foi desenvolvido para grandes clusters de máquinas de prateleira, interligadas por uma rede do tipo switched Ethernet, e é constituído por basicamente dois tipos de nós: Master e Worker (denominados Mestre e Trabalhador em português, respectivamente).
  • 42. MapReduce Arquitetura • O nó mestre tem como função atender requisições de execução (jobs) efetuadas pelos usuários, e gerenciá- las, criando variáveis tarefas (tasks) e delegando-as aos nós trabalhadores;
  • 43. MapReduce Arquitetura • Os trabalhadores por sua vez são encarregados de executar de fato essas tarefas, aplicando, de acordo com seu tipo, as funções map ou reduce definidas pelo usuário (típica arquitetura master-slave).
  • 44. MapReduce Arquitetura • A arquitetura compreende, ainda, um sistema de arquivos distribuídos, onde ficam armazenados os dados utilizados como entrada para os Jobs. Para evitar a transferência excessiva de dados, os workers do MapReduce são também nós do sistema de arquivos.
  • 45. MapReduce Tolerância a falhas Worker • Master detecta falhas através de pings periódicos; • Re-executa map tasks em progresso e concluídas; • Re-executa reduce tasks em progresso; • Master re-executa tasks concluídas, eventualmente completando a operação de MapReduce.
  • 46. MapReduce Tolerância a falhas Master • Possui um único master, e sua falha é improvável; • Poderia ser tratada através de checkpoints; • A atual implementação da Google aborta o MapReduce se o master falhar.
  • 47. MapReduce Tolerância a falhas • Robusto: perdeu 1200 máquinas de um total de 1600, e a operação foi concluída com sucesso.
  • 49. Hadoop Conceito • Uma das implementações mais conhecidas do MapReduce faz parte do projeto Hadoop, mantido pela Apache Software Foundation, e que tem como finalidade desenvolver software livre para computação distribuída, escalável e confiável.
  • 50. Hadoop Conceito • O Hadoop MapReduce é uma implementação em Java do modelo de framework criado pela Google, o qual foi originalmente desenvolvido em C+ +. • Muito parecido com a implementação da Google, mas é flexível com relação às máquinas em que roda.
  • 52. Hadoop Relação entre Google MapReduce e Hadoop MapReduce
  • 54. Performance Backup Tasks • Problemas causados por stragglers (máquinas cuja performance está aquém dos demais nós). • Tarefas executadas em stragglers atrasam o processamento, principalmente quando ocorre na fase final de um job.
  • 55. Performance Backup Tasks • São cópias de tasks em andamento no final de sua execução de map/reduce. • Quando qualquer uma das cópias termina sua execução com sucesso, as demais são encerradas. • Reduz o tempo de execução em cerca de 40%.
  • 56. Performance Teste realizado em um cluster de 1800 máquinas, com processadores Intel Xeon 2GHz, 4GB de memória, dois discos IDE 160GB, e um link gigabit ethernet. • Ordenação de 1 terabyte de dados
  • 58. Performance • Utilização de Backup Tasks reduz significativamente o tempo de execução. • Sistema lida bem com falhas.
  • 59. Conclusão • Modelo fácil de usar, mesmo por programadores sem experiência em processamento distribuído; • Permite o programador focar no problema, e esquecer os "detalhes"; • Grande variedade de problemas podem ser expressos em MapReduce; • Simplificou computações em larga escala do Google.
  • 61. Referências Bibliográficas 1. MapReduce: Simplified Data Processing on Large Clusters [Jeffrey Dean and Sanjay Ghemawat]. 2. Simulação e Estudo da Plataforma Hadoop MapReduce em Ambientes Heterogêneos [Wagner Kolberg].