Análise de complexidade de tempo para o modelo Map-Reduce

8

Estou tentando redesenhar meu algoritmo para executar no paradigma Hadoop / MapReduce. Fiquei me perguntando se existe alguma abordagem holística para medir a complexidade do tempo para algoritmos nas plataformas de Big Data.

Como um exemplo simples, a média de n (= 1 bilhão) de números pode ser feita em O (n) + C (assumindo que a divisão seja uma operação em tempo constante). Se eu quebrar esse algoritmo massivamente paralelelizável para Map Reduce, dividindo dados em k nós, minha complexidade de tempo simplesmente se tornaria O (n / k) + C + C '. Aqui, C 'pode ser assumido como a sobrecarga do tempo de planejamento da tarefa de inicialização. Observe que não havia embaralhamento envolvido, e o trabalho do redutor era quase trivial.

Estou interessado em uma análise mais completa do algoritmo com loops iterativos sobre dados e envolva operações pesadas de embaralhamento e redutor. Quero incorporar, se possível, as operações de E / S e as transferências de dados na rede.

Mohitt
fonte
2
Não há como medir assintóticos. Você está interessado em benchmarks ou análises formais? O último é difícil em configurações paralelas e depende do modelo exato da sua máquina. As chances são de que, se você assumir um modelo que possa manipular durante a análise, os resultados não lhe dirão muito na prática.
Raphael
2
Dito isto, esta questão pode ser relevante.
Raphael
11
Você já viu Mineração de conjuntos de dados maciços ? Seções 2.5 e 2.6 conversa sobre minimizando comunicação (I / O) custos e tempo não compute o que é normalmente o gargalo real no Hadoop
Eric Farng
Nos jornais que li, você realmente não analisa a complexidade do tempo. Você conta o número de rodadas e a quantidade de dados que precisa processar em cada rodada (a complexidade da comunicação). Baralhar os dados pela rede normalmente é o gargalo na redução de mapa.
Adriann

Respostas:

0

S. Arora, B. Barak, Abordagem moderna da complexidade computacional, o capítulo 13 é um bom recurso introdutório para este tópico:

A complexidade da comunicação diz respeito ao seguinte cenário. Existem dois jogadores com poder computacional ilimitado, cada um com uman entrada de bits, digamos x e y. Nenhum dos dois conhece a opinião do outro e deseja calcular de forma colaborativaf(x,y) onde a função f:{0 0,1 1}n×{0 0,1 1}n{0 0,1 1}é conhecido por ambos. Além disso, eles previram essa situação (por exemplo, uma das partes poderia ser uma espaçonave e a outra a estação base na Terra), então já havia - antes que soubessem suas informações.x,y- concordou com um protocolo de comunicação. O custo desse protocolo é o número de bits comunicados pelos players para a pior escolha de entradasx,y.

fade2black
fonte
-1

Veja que você está certo, mas sabe que é muito difícil dizer uma complexidade de tempo específica da redução de mapas. Depende da consulta. Mas nesse caso, deve ser o (nlogn / k) + c + c 'por causa de k nós. Essas curtas consultas, incluindo uma fase de mapeamento de um mapa que reduz a técnica, seguem um conceito Btree. Portanto, a partir desse local para cálculos internos, podemos dizer que sua complexidade de tempo é> o (nlogn) + c + c '.

Corrija minhas sugestões, por favor.

Akshay Chatterjee
fonte
2
Bem vindo ao site! Quando você diz "corrija minhas sugestões, por favor", isso sugere que você não está muito confiante em sua resposta, o que faz parecer mais um palpite do que uma resposta real. Obviamente, qualquer resposta pode estar errada, mas esperamos que a pessoa que escreveu a resposta acredite estar correta!
David Richerby