Sobes.tech
Middle

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).

  1. 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.

  2. 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.

  3. 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.