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