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

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

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

  • Slide 1
  • MapReduce Conceitos e Aplicaes Tiago Pedroso da Cruz de Andrade
  • Slide 2
  • Introduo
  • Slide 3
  • Com a evoluo dos sistemas de informao e o aumento da quantidade de servios disponibilizados a seus usurios, cresce tambm o volume de dados que precisam ser processados pelos sistemas computacionais. Para que a computao dessa quantidade de informao seja realizada em tempo vivel, cada vez mais faz-se necessria a explorao de paradigmas de programao paralela e proces- samento distribudo.
  • Slide 4
  • Introduo Porm, desenvolver software para ambientes distribudos uma tarefa complexa, pois envolve uma srie de conceitos e problemas que devem ser considerados pelos programadores. A fim de facilitar este processo, foi desenvolvido o MapReduce, um modelo de programao paralela para processamento largamente distribudo de grandes volumes de dados.
  • Slide 5
  • Conceitos
  • Slide 6
  • O paradigma de programao 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 necessrio mapear fragmentos dos dados de entrada a uma chave identificadora, e ento 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.
  • Slide 7
  • Conceitos executado em cima de um cluster computacional de mqui- nas, que podem ser de prateleira ou no. Se a quantidade de dados for grande, pode ser dividido para a execuo de diversas funes Map ao mesmo tempo, em paralelo. Podemos aplicar separadamente as funes Map e Reduce a um conjunto de dados.
  • Slide 8
  • Conceitos Todo o trabalho de distribuio do sistema incluindo problemas de comunicao, tolerncia a falhas, concorrncia, etc. abstrado, e fica a cargo do prprio framework. A tarefa principal do programador implementar estas duas funes, indicando como o mapeamento e a reduo dos dados sero compostos. O modelo MapReduce pode ser executado sobre uma variedade de plataformas e ambientes distintos. Logo, a melhor implementao do framework depende do ambiente alvo.
  • Slide 9
  • Conceitos
  • Slide 10
  • Modelo de Programao
  • Slide 11
  • A base de uma aplicao MapReduce consiste em dividir e processar conjuntos de dados com o uso das funes Map e Reduce. A funo Map recebe uma tupla como entrada e gera um conjunto intermedirio de dados, tambm no formato. A funo Reduce tambm recebe como entrada uma tupla. Ela executada para cada chave interme- diria, com todos os conjuntos de valores intermedirios associados quela chave combinados.
  • Slide 12
  • Modelo de Programao O processamento dividido em trs etapas: Uma etapa inicial de mapeamento, onde so executadas diversas tarefas de mapeamento. Uma etapa intermediria, onde os dados so recolhidos das tarefas de mapeamento, agrupados e disponibilizados para as tarefas de reduo. Uma etapa de reduo onde so executadas diversas tarefas de reduo, agrupando os valores comuns e gerando a sada da aplicao.
  • Slide 13
  • Modelo de Programao
  • Slide 14
  • Exemplo de aplicao: Considere o problema de contar o nmero de ocorrncias de uma palavra em uma grande coleo de documentos. A seguir ser mostrado o pseudocdigo das funes Map e Reduce.
  • Slide 15
  • Modelo de Programao map(String key, String value): // key: nome do documento // value: contedo do documento for each word w in value: emitIntermediate(w, 1);
  • Slide 16
  • Modelo de Programao 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));
  • Slide 17
  • Modelo de Programao No pseudocdigo: Cada chamada da funo Map recebe como entrada o contedo de um dos documentos da coleo. Para cada palavra do documento de entrada, a funo Map emite o valor 1 associado chave que representa a palavra em questo. Cada chamada da funo Reduce recebe como entrada uma palavra e um iterador para todos os valores emitidos pela funo Map, associados com a palavra em questo. Todos os valores so ento somados em uma tupla contendo a palavra e seu total de ocorrncias.
  • Slide 18
  • Arquitetura
  • Slide 19
  • O MapReduce realizado em um cluster computacional constitudo por basicamente dois tipos de ns: Mestre e Escravo. O n Mestre tem como funo atender requisies de execuo efetuadas pelos usurios e gerenci-las, criando vrias tarefas e delegando-as aos ns Escravos. Os ns Escravos, por sua vez, so encarregados de executar de fato essas tarefas, aplicando de acordo com seu tipo as funo Map ou Reduce definidas pelo usurio. Tambm usado um sistema de arquivos distribudo.
  • Slide 20
  • Etapas do Processo
  • Slide 21
  • O primeiro passo do MapReduce dividir os dados em partes e iniciar uma srie de cpias do programa nas mquinas do cluster computacional.
  • Slide 22
  • Etapas do Processo Uma destas cpias o Mestre e as outras so todas Escravos.
  • Slide 23
  • Etapas do Processo O trabalho consiste em realizar X tarefas de mapeamento e Y tarefas de reduo, sendo o Mestre responsvel por atribuir aos Escravos essas tarefas.
  • Slide 24
  • Etapas do Processo O Escravo para o qual foi atribuda uma tarefa de mapeamento deve ler o contedo de uma parte do arquivo, separar todas as tuplas e enviar para a funo de mapeamento. As tuplas produzidas pela funo de mapeamento so armazenadas em memria.
  • Slide 25
  • Etapas do Processo Periodicamente, as tuplas armazenadas em memria so escritas em disco. Para isso usado o sistema de arquivos distribudo.
  • Slide 26
  • Etapas do Processo Os Escravos para os quais foram atribudas tarefas de reduo devem pegar todos os valores de uma determinada chave, que foi produzido pelas tarefas de mapeamento, e enviar para a funo de reduo.
  • Slide 27
  • Etapas do Processo Quando todas as tarefas de mapeamento e reduo forem concludas, o Mestre acorda o programa do usurio e retorna o controle para ele.
  • Slide 28
  • Tolerncia a Falhas
  • Slide 29
  • Escravos: O Mestre detecta falhas atravs de pings peridicos. As tarefas de mapeamento so reexecutadas tanto as em progresso quanto as concludas. As tarefas de reduo em progresso so reexecutadas.
  • Slide 30
  • Tolerncia a Falhas Mestre: Possui um nico Mestre e sua falha indesejvel. Necessita de um controle mais complexo. Executa checkpoints peridicos. Uma nova instncia pode ser criada a partir dos checkpoints.
  • Slide 31
  • Concluso
  • Slide 32
  • Fcil de usar, mesmo por programadores sem experincia em processamento distribudo. Permite o programador focar no problema e esquecer os detalhes. Uma grande variedade de problemas podem ser expressos em MapReduce. Simplificou computaes em larga escala de grandes volumes de dados.
  • Slide 33
  • Referncias
  • Slide 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