
## MapReduce - SHUFFLE

### Le MASTER qui prépare les WORKERS à la phase de shuffle.

Modifiez le MASTER pour qu'il envoie la liste des WORKERS à tous les WORKERS.

### Le WORKER qui prépare la phase de shuffle.

Modifiez le WORKER pour qu'il prépare la phase de shuffle, en calculant le "hash" pour chacune des clés et avec un modulo sur le nombre de machines de la liste, qui calcule quelle est la machine responsable de cette clé.

### Le WORKER qui exécute la phase de shuffle.

Modifiez le WORKER pour qu'il exécute la phase de shuffle.

Pour savoir sur quelle machine il faut envoyer les clés-valeurs, on utilise le hash calculé à partir de la clé (une valeur entière) et le nombre de machines du fichier. Il suffit de calculer le hash modulo le nombre de machine en considérant que la première machine du fichier a pour numéro 0, la deuxième 1 etc\... La formule utilisée pour trouver la machine sur laquelle sera envoyée le shuffle sera donc

numeroMachine = hash % nbMachines

### Un MASTER qui lance et attend la fin de la phase de shuffle.

Modifiez le MASTER pour qu'il lance la phase de shuffle une fois que la phase de map est terminée, sur plusieurs machines et affiche "SHUFFLE FINISHED".

Pour bien synchroniser le MASTER avec les WORKERS, veillez à afficher "SHUFFLE FINISHED" qu'une fois tous les SLAVEs terminés et uniquement quand tous les SLAVEs sont terminés, PAS AVANT! Le MASTER doit donc attendre que SLAVEs se terminent correctement.