web-dev-qa-db-fra.com

Nombre de réducteurs par défaut

Dans Hadoop, si nous n'avons pas défini le nombre de réducteurs, alors combien de nombre de réducteurs seront créés?

Comme le nombre de mappeurs dépend de (taille totale des données)/(taille de division d'entrée), par ex. si la taille des données est 1 TB et la taille du fractionnement d'entrée est de 100 Mo. Le nombre de mappeurs sera alors (1000 * 1000)/100 = 10000 (dix mille).

Le nombre de réducteur dépend de quels facteurs? Combien de réducteurs sont créés pour un travail?

11
Mohit Jain

Combien de réductions? (De documentation officielle)

Le bon nombre de réductions semble être 0,95 ou 1,75 multiplié par (nombre de nœuds) * (nombre de conteneurs maximum par nœud ).

Avec 0,95, toutes les réductions peuvent être lancées immédiatement et commencer à transférer les sorties de carte à la fin des cartes. Avec la version 1.75, les nœuds les plus rapides termineront leur première série de réductions et lanceront une deuxième vague de réductions en faisant un bien meilleur travail d'équilibrage de charge.

L'augmentation du nombre de réductions augmente le temps système, mais augmente l'équilibrage de charge et réduit le coût des défaillances.

Les facteurs d'échelle ci-dessus sont légèrement inférieurs aux nombres entiers pour réserver quelques emplacements réduits dans le cadre pour les tâches spéculatives et les tâches ayant échoué.

Cet article couvre également le nombre de mappeurs.

Combien de cartes?

Le nombre de mappages est généralement déterminé par la taille totale des entrées, c'est-à-dire le nombre total de blocs des fichiers d'entrée.

Le bon niveau de parallélisme pour les cartes semble être de l'ordre de 10 à 100 cartes par nœud , bien qu'il ait été configuré pour 300 cartes pour très cpu- tâches de carte légère. La configuration des tâches prend un certain temps, il est donc préférable que les cartes prennent au moins une minute à exécuter.

Ainsi, si vous vous attendez à 10 To de données d'entrée et que vous avez une taille de bloc de 128 Mo, vous vous retrouverez avec 82 000 cartes , à moins que Configuration.set(MRJobConfig.NUM_MAPS, int) (qui ne fournit qu'un indice au framework) soit utilisé pour le placer encore plus haut.

Si vous souhaitez modifier la valeur par défaut de 1 pour le nombre de réducteurs, vous pouvez définir la propriété ci-dessous (à partir de la version hadoop 2.x) comme paramètre de ligne de commande

mapreduce.job.reduces

OR

vous pouvez définir par programme avec

job.setNumReduceTasks(integer_numer);

Jetez un oeil à une autre question SE liée: Quel est le nombre idéal de réducteurs sur Hadoop?

12
Ravindra babu

Par défaut, le nombre de réducteurs est défini sur 1.

Vous pouvez le changer en ajoutant un paramètre

mapred.reduce.tasks Dans la ligne de commande ou dans le code du pilote ou dans le fichier conf que vous passez.

par exemple: Argument de ligne de commande: bin/hadoop jar ... -Dmapred.reduce.tasks=<num reduce tasks> ou, dans le code du pilote comme: conf.setNumReduceTasks(int num);

Lecture recommandée: https://wiki.Apache.org/hadoop/HowManyMapsAndReduces

4
Koustav Ray