Ciência da Computação

Trabalho de Conclusão
Título:AVALIAÇÃO DE DESEMPENHO ENTRE ALGORITMOS SEQUENCIAIS E SEUS SIMILARES EM MAPREDUCE
Aluno:Gustavo Fritzen Loef
Semestre:2015/02
Situação:Concluido
Áreas de interesse:Não informado
Orientador:Juliano Varella de Carvalho
Avaliadores:Adriana Neves dos Reis, Gabriel da Silva Simões
Documentos:Anteprojeto, Texto final TC1 (liberado apenas para a banca), Texto final TC2
Palavras-chave:MapReduce. Hadoop. Algoritmos Sequenciais. Algoritmos Paralelos. Experimentos.
Resumo:

Desde que se começou a guardar dados virtualmente, esta quantidade gerada aumenta significativamente a cada ano que passa. Um dos motivos é o crescente detalhamento na produção dos dados, além da grande variedade existente nesses conjuntos gerados. Grandes quantidades concedem problemas de eficiência para executá-las tradicionalmente. Essa adversidade foi solucionada por Dean e Ghemawat ao propor o modelo de programação MapReduce. Ele funciona basicamente em cima das funções lógicas map e reduce e trabalha com pares de chave-valor para a transferência de dados pela rede. A sua principal vantagem é o processamento paralelo de tarefas para cada função. Esse modelo é executado em um cluster com sistema de arquivos distribuídos, onde grandes conjuntos de dados são divididos em pedaços e armazenados em diferentes nodos. Um sistema de arquivos distribuídos, o qual permite executar o modelo, é o Apache Hadoop. O principal motivo de seu uso são as facilidades concedidas à programação paralela, que priva do programador a necessidade de preocupar-se com balanceamento de cargas, distribuição dos dados, atribuições de tarefas e diversos outros problemas existentes nesse modelo de programação. São essas as dificuldades que fazem com que muitos optem pela programação sequencial, cujos algoritmos são codificados para seguir as tarefas em uma determinada ordem. O modelo sequencial é fácil, simples e bom para trabalhar com pequenos conjuntos de dados, mas possui dependência de dados e de conclusão de tarefas. São esses aspectos que fazem a programação sequencial ser lenta ao processar grandes quantidades de dados e, em muitos casos, tornam a solução dela inviável. Diferentemente do que ocorre na programação paralela, cuja eficiência é superior por permitir que diversos cores realizem mesmas tarefas com distintos pedaços do conjunto de dados. É nesse ponto que existe a melhora no desempenho, uma vez que os dados são processados paralelamente. Por apresentar essas vantagens em um ambiente que envolva Big Data, este trabalho teve como objetivo converter algoritmos tradicionais em algoritmos paralelos, onde foi utilizado o modelo de programação MapReduce junto a um cluster com Apache Hadoop, comparando e avaliando seus desempenhos. A avaliação baseou-se em realizar testes com distintos cenários e colher os tempos de execução dos algoritmos. Esses cenários variaram o número de grupos em três e dez, a quantidade de cores em dois, quatro e sete e utilizaram um dataset com mais objetos e menos atributos e outro dataset com menos objetos e mais atributos. Concluiu-se que o melhor cenário alcançado no dataset com mais objetos foi o paralelo K-Means com quatro cores, tanto com três grupos quanto com dez. Já no dataset com menos objetos, o paralelo K-Medoids com quatro cores foi o com menor tempo de execução, tanto com três grupos quanto com dez. Os paralelos com dois cores tiveram tempos semelhantes aos seus sequenciais, enquanto que os paralelos com sete cores tiveram tempos semelhantes aos paralelos com quatro cores.

Link biblioteca:Não informado

TC Online - Sistema de Trabalhos de Conclusão Online