A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

MapReduce Conceitos e Aplicações Tiago Pedroso da Cruz de Andrade.

Apresentações semelhantes


Apresentação em tema: "MapReduce Conceitos e Aplicações Tiago Pedroso da Cruz de Andrade."— Transcrição da apresentação:

1 MapReduce Conceitos e Aplicações Tiago Pedroso da Cruz de Andrade

2 Introdução

3 • 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. • 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 proces- samento distribuído.

4 Introdução • Porém, desenvolver software para ambientes distribuídos é uma tarefa complexa, pois envolve uma série de conceitos e problemas que devem ser considerados pelos programadores. • A fim de facilitar este processo, foi desenvolvido o MapReduce, um modelo de programação paralela para processamento largamente distribuído de grandes volumes de dados.

5 Conceitos

6 • O paradigma de programação MapReduce inspira-se nas primitivas Map e Reduce presentes em diversas linguagens funcionais. • 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 frag- mentos que compartilhassem a mesma chave. • Demonstrou ser adequado para trabalhar com problemas que podem ser divididos ou fragmentados em subproblemas.

7 Conceitos • É executado em cima de um cluster computacional de máqui- nas, que podem ser de prateleira ou não. • Se a quantidade de dados for grande, pode ser dividido para a execução de diversas funções Map ao mesmo tempo, em paralelo. • Podemos aplicar separadamente as funções Map e Reduce a um conjunto de dados.

8 Conceitos • 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. • A tarefa principal do programador é implementar estas duas funções, indicando como o mapeamento e a redução dos dados serão compostos. • 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.

9 Conceitos

10 Modelo de Programação

11 • A base de uma aplicação MapReduce consiste em dividir e processar conjuntos de dados com o uso das funções Map e Reduce. • A função Map recebe uma tupla como entrada e gera um conjunto intermediário de dados, também no formato. • A função Reduce também recebe como entrada uma tupla. Ela é executada para cada chave interme- diária, com todos os conjuntos de valores intermediários associados àquela chave combinados.

12 Modelo de Programação • O processamento é dividido em três etapas: – Uma etapa inicial de mapeamento, onde são executadas diversas tarefas de mapeamento. – Uma etapa intermediária, onde os dados são recolhidos das tarefas de mapeamento, agrupados e disponibilizados para as tarefas de redução. – Uma etapa de redução onde são executadas diversas tarefas de redução, agrupando os valores comuns e gerando a saída da aplicação.

13 Modelo de Programação

14 • Exemplo de aplicação: – Considere o problema de contar o número de ocorrências de uma palavra em uma grande coleção de documentos. – A seguir será mostrado o pseudocódigo das funções Map e Reduce.

15 Modelo de Programação map(String key, String value): // key: nome do documento // value: conteúdo do documento for each word w in value: emitIntermediate(w, “1”);

16 Modelo de Programação reduce(String key, Iterator value): // key: uma palavra // value: uma lista de contadores int result = 0; for each v in value: result += parseInt(v); emit(key, asString(result));

17 Modelo de Programação • No pseudocódigo: – Cada chamada da função Map recebe como entrada o conteúdo de um dos documentos da coleção. – Para cada palavra do documento de entrada, a função Map emite o valor “1” associado à chave que representa a palavra em questão. – Cada chamada da função Reduce recebe como entrada uma palavra 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 uma tupla contendo a palavra e seu total de ocorrências.

18 Arquitetura

19 • O MapReduce é realizado em um cluster computacional constituído por basicamente dois tipos de nós: Mestre e Escravo. • O nó Mestre tem como função atender requisições de execução efetuadas pelos usuários e gerenciá-las, criando várias tarefas e delegando-as aos nós Escravos. • Os nós Escravos, por sua vez, são encarregados de executar de fato essas tarefas, aplicando de acordo com seu tipo as função Map ou Reduce definidas pelo usuário. • Também é usado um sistema de arquivos distribuído.

20 Etapas do Processo

21 • O primeiro passo do MapReduce é dividir os dados em partes e iniciar uma série de cópias do programa nas máquinas do cluster computacional.

22 Etapas do Processo • Uma destas cópias é o Mestre e as outras são todas Escravos.

23 Etapas do Processo • O trabalho consiste em realizar X tarefas de mapeamento e Y tarefas de redução, sendo o Mestre responsável por atribuir aos Escravos essas tarefas.

24 Etapas do Processo • O Escravo para o qual foi atribuída uma tarefa de mapeamento deve ler o conteúdo de uma parte do arquivo, separar todas as tuplas e enviar para a função de mapeamento. As tuplas produzidas pela função de mapeamento são armazenadas em memória.

25 Etapas do Processo • Periodicamente, as tuplas armazenadas em memória são escritas em disco. Para isso é usado o sistema de arquivos distribuído.

26 Etapas do Processo • Os Escravos para os quais foram atribuídas tarefas de redução devem pegar todos os valores de uma determinada chave, que foi produzido pelas tarefas de mapeamento, e enviar para a função de redução.

27 Etapas do Processo • Quando todas as tarefas de mapeamento e redução forem concluídas, o Mestre acorda o programa do usuário e retorna o controle para ele.

28 Tolerância a Falhas

29 • Escravos: – O Mestre detecta falhas através de pings periódicos. – As tarefas de mapeamento são reexecutadas – tanto as em progresso quanto as concluídas. – As tarefas de redução em progresso são reexecutadas.

30 Tolerância a Falhas • Mestre: – Possui um único Mestre e sua falha é indesejável. – Necessita de um controle mais complexo. – Executa checkpoints periódicos. – Uma nova instância pode ser criada a partir dos checkpoints.

31 Conclusão

32 • Fácil de usar, mesmo por programadores sem experiência em processamento distribuído. • Permite o programador focar no problema e esquecer os detalhes. • Uma grande variedade de problemas podem ser expressos em MapReduce. • Simplificou computações em larga escala de grandes volumes de dados.

33 Referências

34 1.“MapReduce: Simplified data processing on large clusters” 2.“The Google File System” 3.“Evaluating MapReduce for multi-core and multiprocessor systems” 4.“A dynamic MapReduce scheduler for heterogeneous workloads” 5.“Hadoop: The Definitive Guide” 6.“Improving MapReduce performance in heterogeneous environments”


Carregar ppt "MapReduce Conceitos e Aplicações Tiago Pedroso da Cruz de Andrade."

Apresentações semelhantes


Anúncios Google