2015-03-05 1 views
1

Existe-t-il un moyen de définir pour chaque étape le nombre de pannes que je peux tolérer lors de l'exécution d'un travail Spark? Par exemple, si j'ai 1000 noeuds et que je tolère 10 échecs, alors dans le cas où 5 noeuds ont échoué, mon travail ne les relancera pas et ignorera leurs résultats. Comme résultat, j'obtiendrai un résultat un peu moins précis, mais une telle capacité va hâter l'exécution du temps d'exécution puisque j'obtiens un résultat sans avoir besoin d'attendre les nœuds défaillants, en supposant que leur temps d'exécution prenne trop de temps .Tolérance aux pannes dans Spark

Merci!

+0

Dans le contexte de Hadoop, il est analogue à 'mapreduce.map.failures.maxpercent = 1' – dotan

Répondre

0

Je pense que ce que vous cherchez est

spark.speculation=true 

Ceci est de http://spark.apache.org/docs/1.2.0/configuration.html#scheduling

qui utilisera une heuristique pour relancer la tâche sur une autre machine si l'on est clairement pris du retard.

+0

La chose que je cherche est plus délicate. Je ne veux pas relancer la tâche mais je veux la laisser tomber. Si à la fin le nombre de défaillances n'a pas dépassé un certain taux, alors le travail a réussi. De cette façon, je renonce à des nœuds vraiment durs. – dotan