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.