MapReduce

61
MapReduce Diego Magalhães Cunha Jorge Luiz de Faria Fernandes Juliana Paula Félix

description

Apresentação desenvolvida por alunos do curso de Ciências da Computação, da Universidade Federal de Goiás, para a disciplina de Sistemas Distribuídos.Título: MapReduceAutores:Diego Magalhães CunhaJorge Luiz de Faria FernandesJuliana Paula Félix

Transcript of MapReduce

Page 1: MapReduce

MapReduce

Diego Magalhães CunhaJorge Luiz de Faria Fernandes

Juliana Paula Félix

Page 2: MapReduce

Roteiro1 - 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

Page 3: MapReduce

Introdução

Page 4: MapReduce

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.

Page 5: MapReduce

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.

Page 6: MapReduce

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.

Page 7: MapReduce

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.

Page 8: MapReduce

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ênciao tolerância a falhaso distribuição de dadoso e balanceamento de cargas.

Page 9: MapReduce

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.

Page 10: MapReduce

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.

Page 11: MapReduce

Processamento Distribuído

Page 12: MapReduce

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.

Page 13: MapReduce

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;

Page 14: MapReduce

Processamento Distribuído

Page 15: MapReduce

Processamento Distribuído

Page 16: MapReduce

Processamento Distribuído

Page 17: MapReduce

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.

Page 18: MapReduce

Processamento Distribuído

Page 19: MapReduce

Processamento Distribuído

Page 20: MapReduce

MapReduce

Page 21: 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.

Page 22: MapReduce

MapReduce

Modelo

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

Page 23: MapReduce

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.

Page 24: MapReduce

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.

Page 25: MapReduce

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.

Page 26: MapReduce

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.

Page 27: MapReduce

MapReduce

• Pseudocódigo que conta a quantidade de ocorrências de cada palavra em um documento

Page 28: MapReduce

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).

Page 29: MapReduce

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.

Page 30: MapReduce

MapReduce

Page 31: 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;

Page 32: MapReduce

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.

Page 33: MapReduce

MapReduce

Modelo

• frequência de acesso a URLso Map<URL; 1> / Reduce <URL, Total>

• grafo reverso de links webo Map<Destino, Origem> / Reduce

<destino, lista(origem)>

• índice invertidoo Map<palavra, ID documento> / Reduce

<palavra, lista(ID documento)>

Page 34: MapReduce

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.

Page 35: MapReduce

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);

Page 36: MapReduce

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.

Page 37: MapReduce

MapReduce

Visão Geral - Google

• Usuários submetem jobs (conjunto de tarefas) para o master;

• Master escalona tarefas para os workers.

Page 38: MapReduce

MapReduce

Page 39: 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.

Page 40: MapReduce

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).

Page 41: MapReduce

MapReduce

Arquitetura

Page 42: MapReduce

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;

Page 43: MapReduce

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).

Page 44: MapReduce

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.

Page 45: MapReduce

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.

Page 46: 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.

Page 47: MapReduce

MapReduce

Tolerância a falhas

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

Page 48: MapReduce

Hadoop

Page 49: MapReduce

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.

Page 50: MapReduce

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.

Page 51: MapReduce

Hadoop

Page 52: MapReduce

Hadoop

Relação entre Google MapReduce e Hadoop MapReduce

Page 53: MapReduce

Performance

Page 54: MapReduce

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.

Page 55: MapReduce

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%.

Page 56: MapReduce

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

Page 57: MapReduce

Performance

Page 58: MapReduce

Performance

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

• Sistema lida bem com falhas.

Page 59: MapReduce

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.

Page 60: MapReduce

Referências Bibliográficas

Page 61: MapReduce

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].