| (Uma revisão intermediária pelo mesmo usuário não está sendo mostrada) | |||
| Linha 8: | Linha 8: | ||
== Funcionamento == | == Funcionamento == | ||
<center>[[Arquivo:MapReduce.png]]</center> | <center>[[Arquivo:MapReduce.png]]</center> | ||
* Explicação: | |||
** No processo de Map/Reduce, pode-se dizer que os computadores que realizam as operações de MAP e REDUCE são chamados de "Workers", enquanto a máquina que controla o processo inteiro é chamada de "Master". Esse tipo de processo recebe grandes volumes de dados para serem processados, por isso, esses volumes são subdivididos, para que então possam ser distribuídos a vários computadores para que possam ser mapeados e em seguida reduzidos. | |||
** Para exemplificar o processo, será descrito o processo de quantidade de palavras com certa quantidade de letras (EX: um arquivo possui 5 palavras de 2 letras, 6 palavras de 3, etc.) | |||
* MAP: | |||
** A função de MAP recebe comandos da MASTER e faz a leitura de parte do cluster em forma de [chave;valor] e as mapeia, formando novas informações de [chave;valor]. Para o programa de contagem de palavras, a função map recebe [nomeDoArquivo;textoNoArquivo] e depois de mapeá-lo, retorna as informações do tipo [numeroDeLetras;Palavra]. Para o retorno dessa função, as informações mapeadas são postas em uma lista. | |||
* REDUCE: | |||
** Esta função recebe as informações da função map da mesma maneira que a MAP recebe da MASTER, porém ela receberá [localDaLista;lista([numeroDeLetras;Palavra])]. No caso do programa de contagem de palavras, a função REDUCE irá agrupar e somar a informação 'numeroDeLetras' e retornará uma lista contendo o numero de palavras de 0 à 'n' letras. [lista(numeroDePalavras)] | |||
* MASTER: | |||
** É a função que 'gerencia' o processo das outras duas. Ela possui variáveis de estado tanto da MAP quanto da REDUCE, que verificam e alertam o usuário o estado do processo dos workers (se estão processando, inativos, com problema, etc.) | |||
== Exemplo == | == Exemplo == | ||
Edição atual tal como às 21h09min de 26 de maio de 2015
Informações Gerais
MapReduce é um modelo de programação e implementaçãoque tem como objetivo a simplificação do processamento de um extenso conjunto de dados, publicado pela primeira vez em 2004 pela Google. Sua criação foi inspirada principalmente pela função “MAP” da linguagem de programação LISP (List Programming), essa que por sua vez ‘mapea’ uma lista e executa uma operação em todos os elementos da mesma.
Este algoritmo, que segue o paradigma de programação funcional, já possui sua implementação em várias linguagens e tem obtido muita notoriedade devido à sua execução paralelizada automaticamente, permitindo que mesmo programadores inexperientes nas áreas de sistemas distribuídos possam utilizar seus recursos. Além disso, por ter sua execução em paralelo, ele é altamente escalável, o que o torna muito apto para realizar tarefas onde se possui bancos de dados muito grandes e dinâmicos, devida à alta demanda por performance dos mesmos, isso é possível pois o modelo do algoritmo permite um processamento distribuído em grande escala.
Funcionamento

- Explicação:
- No processo de Map/Reduce, pode-se dizer que os computadores que realizam as operações de MAP e REDUCE são chamados de "Workers", enquanto a máquina que controla o processo inteiro é chamada de "Master". Esse tipo de processo recebe grandes volumes de dados para serem processados, por isso, esses volumes são subdivididos, para que então possam ser distribuídos a vários computadores para que possam ser mapeados e em seguida reduzidos.
- Para exemplificar o processo, será descrito o processo de quantidade de palavras com certa quantidade de letras (EX: um arquivo possui 5 palavras de 2 letras, 6 palavras de 3, etc.)
- MAP:
- A função de MAP recebe comandos da MASTER e faz a leitura de parte do cluster em forma de [chave;valor] e as mapeia, formando novas informações de [chave;valor]. Para o programa de contagem de palavras, a função map recebe [nomeDoArquivo;textoNoArquivo] e depois de mapeá-lo, retorna as informações do tipo [numeroDeLetras;Palavra]. Para o retorno dessa função, as informações mapeadas são postas em uma lista.
- REDUCE:
- Esta função recebe as informações da função map da mesma maneira que a MAP recebe da MASTER, porém ela receberá [localDaLista;lista([numeroDeLetras;Palavra])]. No caso do programa de contagem de palavras, a função REDUCE irá agrupar e somar a informação 'numeroDeLetras' e retornará uma lista contendo o numero de palavras de 0 à 'n' letras. [lista(numeroDePalavras)]
- MASTER:
- É a função que 'gerencia' o processo das outras duas. Ela possui variáveis de estado tanto da MAP quanto da REDUCE, que verificam e alertam o usuário o estado do processo dos workers (se estão processando, inativos, com problema, etc.)