Como funciona o MapReduce e como os dados são distribuídos pelos trabalhadores e os resultados combinados?
sobes.tech IA
Resposta da IA
MapReduce é um modelo de programação para processar grandes volumes de dados num ambiente distribuído. Consiste em duas fases principais: Map (mapear) e Reduce (reduzir).
-
Map: os dados de entrada são divididos em partes e distribuídos entre os trabalhadores (nós). Cada trabalhador aplica a função Map à sua parte dos dados, transformando as entradas em pares chave-valor.
-
Shuffle and Sort: os resultados da fase Map são agrupados por chaves e ordenados. Esta operação garante que todos os valores com a mesma chave cheguem a um mesmo trabalhador para a fase Reduce.
-
Reduce: cada trabalhador recebe um grupo de valores para uma chave específica e aplica a função Reduce, combinando esses valores num resultado final.
A distribuição de dados ocorre através de um sistema de ficheiros (por exemplo, HDFS), que divide os dados em blocos e os atribui aos trabalhadores. Após a fase Map, os dados intermédios são transmitidos pela rede aos trabalhadores Reduce, onde ocorre a agregação.
Exemplo: contar o número de palavras num texto grande.
// Função Map
map(String key, String value) {
for (String word : value.split(" ")) {
emit(word, 1);
}
}
// Função Reduce
reduce(String key, Iterator<Integer> values) {
int sum = 0;
while (values.hasNext()) {
sum += values.next();
}
emit(key, sum);
}
Assim, o MapReduce permite processar grandes volumes de dados de forma eficiente em paralelo num cluster.