Question

Nous avons un bon travail élastique-mapreduce compliqué, grand et compliqué qui contient des contraintes extrêmement différentes sur le matériel pour le réducteur MAPPER VS Collector VS.

Le problème est le suivant: Pour les mappeurs, nous avons besoin de tonnes de machines légères pour exécuter plusieurs mappeurs en parallèle (tous bien là-bas); Les collectionneurs sont plus affamés de mémoire, mais il devrait toujours être correct de leur donner environ 6 Go de tas de pointe chacun. . . Mais le problème est les réducteurs. Quand l'une de ces coups de pied, il prendra environ 32-64 Go pour le traitement.

Le résultat que nous obtenons un type de décès de tâches ronds, car la mémoire complète d'une boîte est consommée, ce qui provoque une mappeuse et un réducteur pour les deux être redémarrés ailleurs.

L'approche la plus simple serait si nous pouvions également spécifier un moyen d'exécuter le réducteur sur un "groupe" différent (une poignée de boîtes ginormes) tout en ayant les mappeurs / collectionneurs en cours d'exécution sur des boîtes plus petites. Cela pourrait également entraîner des économies de coûts significatives, car nous ne devrions pas vraiment concevoir que les mappeurs des nœuds fonctionnent sur les exigences des réducteurs.

Une alternative serait de "casser" le travail de manière à ce qu'il y ait une deuxième cluster pouvant être renvoyée pour traiter la production du collectionneur de mapper - mais c'est évidemment "sous-optimal".

Alors, la question est:

  • y a-t-il une façon de spécifier ce que "groupes" un mappeur ou un réducteur sera courir sur Elastic Mapreduce et / ou Hadoop?
  • Y a-t-il un moyen d'empêcher les réducteurs de commencer jusqu'à ce que tous les mappers soient terminés?
  • Est-ce que quelqu'un a d'autres idées sur la manière de s'approcher de cela?

acclamations!

Était-ce utile?

La solution

Lors d'un emploi Hadoop Mapreduce, les réducteurs commencent à courir après la fin des mappeurs.La sortie de la phase de carte est mélangée et triée avant que la partition ait lieu pour décider quel réducteur reçoit les données.Ainsi, les réducteurs commencent à courir après la fin de la phase de shuffle / tri (après la fin des mappants).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top