Você está na página 1de 5

MapReduce

Motivao A era digital tem aumentado significativamente a quantidade de dados com que as organizaes tm que manipular, para extrair informaes significtivasantes de logs, da sesso do usurio, de sistemas espalhados na empresa, de bases distribudas e diversos outros locais. . De igual modo, a pesquisa cientfica com o suporte da computao em seus experimentos. Os experimentos geralmente manipulam grandes volumes de dados. e p Por esse motivo, isso enfrentam desafios para aumentar a produtividade das pesquisas na seara da otimizao do tempo de resposta do processamento dessas informaes um desafio para organizaes e pesquisadores. . A paralelizao em um ambiente distribudo uma abordagem utilizada para resolver esta questo. No entanto, no uma soluo trivial, pois vriasos problemas questes devem ser enfrentadosendereadas, como por exemplo: fragmentao da consulta base distribuda, replicao do banco de dados, recomposio dos retornos das consultas distribudas unificando a resposta. Segundo [Ferlim, 1997], para promover a paralelizao, tradicionalmente se aborda de uma das trs formas: paralelizao explcita, quando um programador define o que deve ser executado em paralelo, dizendo como as tarefas cooperam entre si; paralelizao implcita, quando o programador usa linguagens no imperativas para representar o que deve ser feito sem seqenciamento; e finalmente, paralelizao automtica, quando o programador desenvolve programa de forma seqencial e o compilador se encarrega de fazer o paralelismo. Trabalhos relacionados Ferlin1 afirma que a programao do paralelismo um problema em mquinas distribudas, e classifica a programao em trs tipos: explcita, quando um programador define explicitamente o que deve ser executado em paralelo, implcita, quando o programador usa linguagens no imperativas para representar o que deve ser feito sem seqenciamento, e finalmente, automtica , quando o programador desenvolve programa de forma seqencial das tarefas e o compilador se encarrega de fazer o paralelismo. Estas tcnicas de paralelizao no Estas abordagens no so satisfatrias em vrios cenrios, trazendo vrios inconvenientes e dando margem para o surgimento de alternativas na paralelizao das tarefas. Neste contexto que se apresenta o MapReduce como um modelo de programao projetado para manipular grande volumes de dados de forma paralela em um ambiente distribudo, dividindo a carga de trabalho para melhorar o tempo de resposta das tarefas. Este modelo foi originalmente apresentado pelo Google2, para resolver seus problemas de pesquisa na World Wide Web inteira, manipulando uma grande quantidade de dados e tendo que ter um tempo de resposta otimizado. A estratgia era no confiar em Sistema Gerenciadores de Banco de Dados tradicionais, e sim, construir um sistema de processamento de dados paralelos em um ambiente de ns nada compartilhados. No porque SGBDs no fossem eficientes, mas porque eles traziam uma sobrecarga de caractersticas que no eram necessrias para o problema especfico de pesquisa na web.
1 2

Edson Ferlin Avaliao de mtodos de paralelizao automtica - (EdsonFerlinM - paralelizao) Map-Reduce-Merge: Simplified Relational Data Processing on Large Clusters (mapreducemergesigmod07 - google.pdf)

Criar um armazenamento distribudo simplificado, aplicando apenas alguns princpios de bancos de dados, e uma infra-estrutura de programao paralela foram estratgias adotadas pela Google e seguidas por vrias empresas de motor de busca desde ento para enderear seus problemas de pesquisa. O modelo usado para resolver diversos outros problemas que envolvam manipulao de grandes volumes de dados em um ambiente distribudo, o que o torna particularmente ideal para o uso na computao em nuvem. O conceito est fundamentado em duas operaes conhecidas da programao funcional: Map e Reduce. Para melhor compreenso do paradigma, as prximas sees trataram dessas duas operaes. Funes Map e Reduce As operaes map e reduce so operaes originrias de linguagens funcionais como Haskell, F#, Lisp. Nestas linguagens a operao map recebe uma funo como parmetro para uma lista e uma funo, executando a funo sobre cada um dos valores da lista, retornando uma nova lista alterada. A funo reduce uma funo recursiva que recebe uma operao e uma lista e aplica recursivamente a funo sobre cada item da lista retornando um resultado nico. A Google se inspirou nestas operaes quando desenvolveram o modelo MapReduce, O modelo MapReduce recebe um par de entradas no formato de par chave/valor, essa funo cria uma nova lista de valores intermedirios e retorna valores intermedirio alterados para serem processados no ambiente distribudo, a operao reduce recebe as chaves intermedirias e seu conjunto de valores associados, itera sobre essa lista executando uma lgica provida pelo usurio, normalmente a operao map encontra algo e a operao reduce sumariza os resultados encontrados. Cada tarefa composta por essas duas operaes como visto na figua 1. Como definido em Souza, Moreira e Machado3, o sistema MapReduce gerencia o processamento atravs de um processo master, cuja funo orquestrar o processamento, gerenciar o processo de agrupamento de registros e distribuir os blocos de forma equilibrada. O MapReduce foi implementado utilizando a linguagem C++ e possui interfaces para Java e Python. O MapReduce foi desenvolvido pelo Google mas existem algumas implementaes de cdigo livre, dentre as quais destaca-se o Hadoop. Na figura X, o exemplo em cdigo Python demonstra como um programador define duas uma operaeso que utilizam as operaes primitivas Map e Reduce, a def reduccer(x, y): primeira para elevar os valores de uma lista ao quadrado e a outra funo para somar return x + y todos os valores da nova lista criada. def mapper(x): return x * x class MySimpleJob(): def mapReduce(self, funcaoMap, funcaoRed, lista): _newSeq = map (funcaoMap, lista) print "funcao mapper: " , _newSeq print "funcao reduccer: ", reduce (funcaoRed, _newSeq)
3

Computao em Nuvem: Conceitos, Tecnologias, Aplicaes e Desafios - Flvio R. C. Sousa, Leonardo O. Moreira e Javam C. MySimpleJob().mapReduce(mapper, reduccer, range(1,6)) Machado

if __name__ == "__main__":

>>> funcao mapper: [1, 2, 3, 4, 5] funcao reduccer: 15

Modelo de programao A implementao do MapReduce por conta do programador, que define uma srie de tarefas que deseja paralelizar. Essas tarefas no podem ser dependentes uma das outras, ou seja, devem atender um axioma conhecido como Condio de Berstain4, que afirma em seu teorema que dois comandos podem ser executados em paralelo se suas entradas e sadas no forem intradependentes entre si. O programador deve criar uma srie de tarefas., Ppara cada tarefa computacional as funes map, passando os pares de chave e valor, e reduce, expressando como deseja que a sada seja exibida. Como a implementao mais conhecida de MapReduce a Hadoop, a prxima sesso abordar suas caractersticas. Hadoop Hadoop um framework da Apache Software Foundation e liberado como opensource que foi desenvolvido com o ncleo do MapRaduce, Hadoop MapReduce, e composto com o Hadoop Distributed File System(HDFS), um sistema de arquivo otimizado para carga orientado a batch. No HDFS ficam armazenadas as informaes de entrada para o passo da fase map, e os resultados obtidos pela execuo do passo da fase reduce.
4

EdsonFerlin - paralelizao

Sua instalao basicamente feito em um n mestre chamado JobTracker, responsvel por receber as tarefas dos clientes, dividir em atividades e atribuir aos ns que executaro o trabalho; e vrios outros ns, chamados TaskTracker, que so os que processam o trabalho que o n mestre atribui. O processo de execuo das tarefas no Hadoop descritas por Condie at al. Como segue: O JobTracker l o HDFS e atribui um bloco de entrada de dados que por default 64MB, denominado split, a cada tarefa de map, esse passo define a quantidade de tarefas de map existentes na execuo.. A fase map l as tarefas parseia em registros chave/valor, aplica a funo map a cada registro, na fase commit, que aps a execuo dessas tarefas, o TaskTracker registrado com o resultado, e avisa ao JobTracker que terminou a tarefa.

Quem usa Terabytes5 de logs das sesses de visitas dos clientes da empresa yelp so processados diariamente para conseguir minerar informaes importantes para a empresa. Os dados de seus clientes so analisados para poder oferecer sugestes, tais como, quem leu determinado livro tambm leu outro que sugerido para compra. A empresa utiliza o map reduce em um ambiente de computao distribuda para realizar tarefas, tais como processamento de algoritmos de aprendizagem de mquina que intensivo em dados e processamento volumoso de logs, em que a funo map l as linhas de entrada e devolve linhas de chave valor, cada chave e todos os seus valores correspondentes so enviados para a funo reduce.

Exemplo de usos do mapreduce

Introduo
5

http://engineeringblog.yelp.com/2010/10/mrjob-distributed-computing-for-everybody.html

Como funciona Motivao Exemplos de uso Trabalhos relacionados

Você também pode gostar