2017-09-27 3 views
0

Hier, j'ai commencé un travail sur Google-Dataflow qui tourne habituellement environ 10-30min. Il courait toujours ce matin. Lorsque l'on regarde dans Stackdriver, j'ai vu une boucle répétitive de journaux pour le travail:Google Dataflow pipeline coincé sur shuffeling

I Refused to split GroupingShuffleReader <at position ShufflePosition(base64:AAAABOA3nVgAAQ) of shuffle range [ShufflePosition(base64:AAAAAAD_AP8A_wD_AAE), ShufflePosition(base64:AAAABOA3nVkAAQ))> at ShufflePosition(base64:AAAABOA3nVkAAQ) 
E Refusing to split <at position ShufflePosition(base64:AAAABOA3nVgAAQ) of shuffle range [ShufflePosition(base64:AAAAAAD_AP8A_wD_AAE), ShufflePosition(base64:AAAABOA3nVkAAQ))> at ShufflePosition(base64:AAAABOA3nVkAAQ): proposed split position out of range 
I Proposing dynamic split of work unit our-project-id;2017-09-26_09_29_26-14666853265610614017;1268593085087986642 at {"fractionConsumed":1.0,"position":{"shufflePosition":"AAAABOA3nVkAAQ"}} 
I Setting node annotation to enable volume controller attach/detach 

je maintenant annulé le travail. Avant que ce travail ne commence, j'ai réduit la taille de disksize pour les travailleurs à 40 Go, car notre quota de 10 240 Go (!!!) a été dépassé avec environ 15 Jobs. Je vais augmenter la disksize à environ 100 Go, mais plus ne devrait pas être nécessaire.

Des suggestions pour résoudre ce problème ou comment cela peut-il se produire? Il serait également intéressant de voir ce cette erreur signifie vraiment ...

JobId: 2017-09-26_09_29_26-14666853265610614017

enter image description here

L'étape « ToElasticsearch » montrais 16 heures avant le travail annulé. Dans cette étape, il n'y a que des http-Posts pour chaque article à Elasticsearch

+0

J'ai regardé ce travail et il semblait bloqué pour toujours sur un seul enregistrement dans l'étape ToElasticsearch - il semble que votre code utilisateur fasse quelque chose qui prend une éternité, par exemple. effectue une boucle de réessai infinie sur une requête HTTP défaillante, ou quelque chose comme ça. Vous pouvez ajouter un enregistrement à votre étape ToElasticsearch pour déboguer le problème. – jkff

+0

(La journalisation que vous voyez fait partie du fonctionnement normal et n'est pas liée au problème - Je suis d'accord que c'est déroutant, en particulier le message enregistré au niveau ERREUR) – jkff

+0

Si vous utilisez un SDK 2.1.0 ou plus récent, vous devriez pouvoir pour trouver ces éléments bloqués en recherchant dans les journaux la phrase "Traitement de l'accalmie". –

Répondre

0

La cause la plus probable de ceci est que vous avez une touche de raccourci. Plus précisément, l'une des clés produit la majorité de la sortie. Dans un tel cas, le travail ne distribue pas bien les travailleurs disponibles. Vous pouvez essayer d'insérer une transformation Reshuffle après les étapes qui peuvent avoir plusieurs sorties pour une seule entrée. Cela semble être le cas après l'étape ReadArticlesFromDatastore peut être le bon endroit.

+0

En général, il s'agit d'un bon conseil, mais dans ce cas, ce n'est pas une touche de raccourci, mais une simple valeur bloquée. – jkff