MapReduce
-
Upload
juliana-felix -
Category
Technology
-
view
4.339 -
download
3
description
Transcript of MapReduce
MapReduce
Diego Magalhães CunhaJorge Luiz de Faria Fernandes
Juliana Paula Félix
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
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ênciao tolerância a falhaso distribuição de dadoso 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 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)>
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].