2017-09-27 11 views
0

昨日私はGoogle Dataflowでジョブを開始しました。通常、これは約10-30分です。今朝はまだ走っていた。スタックドライバーを調べると、ジョブのログが繰り返されるループが1つ見られました。Google Dataflowパイプラインがシャッフルしたままになった

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 

私は今仕事をキャンセルしました。この仕事が始まる前は、従業員のディスクサイズを40GBに減らしました。これは約15ジョブで10,240GB(!!!)のクォータを超えたためです。私は約100ギガバイトにディスクのサイズを増やしますが、もっと必要はありません。

これを修正する方法やこれがどうなるかについてのご意見はありますか?また、

ジョブID ...このエラーは実際に何を意味するのか興味深いものになるだろう:私は仕事をキャンセルする前に2017-09-26_09_29_26-14666853265610614017は

enter image description here

ステップ「ToElasticsearchは」16hoursを見せていました。このステップでは、Elasticsearchに各記事のhttp-Postのみがあります

+0

私はこの仕事を見て、それはToElasticsearchステップの1つのレコードに永久に固執していたようです。ユーザーコードが何かをしているようです。失敗したHTTPリクエストやそのようなものに対して、無限の再試行ループを行っています。問題をデバッグするには、ToElasticsearchステップにいくつかのログを追加するとよいでしょう。 – jkff

+0

(表示されているログは通常の操作の一部であり、問​​題とは無関係です - 特に紛らわしいことに同意します、特にエラーレベルで記録されたメッセージ) – jkff

+0

2.1.0 SDK以降を使用している場合、これらの要素を見つけるには、ログの "Processing lull"というフレーズを検索します。 –

答えて

0

これは、ホットキーがある可能性が最も高い原因です。具体的には、キーの1つが出力の大部分を生成します。そのような場合、作業は利用可能な作業者にうまく分散されません。 1つの入力に対して複数の出力がある可能性のあるステップの後にReshuffleトランスフォームを挿入してみてください。これは、ReadArticlesFromDatastoreのステップが適切な場所になった後に行うように思えます。

+0

これは一般的には良いアドバイスですが、この場合はホットキーではありませんが、固まった値です。 – jkff

関連する問題