2017-08-29 7 views
2

私たちのテストクラスタのFlinkでApache Beamパイプラインを実行しようとしています。シリアライズによるオブジェクトのエンコーディング中にがorg.apache.flink.runtime.io.disk.SimpleCollectingOutputView:79で失敗しました。私はまだローカルでエラーを再現することができませんでした。 the entire job log hereが見つかります。いくつかの値は偽のデータに置き換えられました。FlinkのBeamパイプライン実行中のメモリセグメントに関連するEOFException

パイプラインを実行するために使用するコマンド:

bin/flink run \ 
    -m yarn-cluster           \ 
    --yarncontainer     1      \ 
    --yarnslots      4      \ 
    --yarnjobManagerMemory   2000     \ 
    --yarntaskManagerMemory   2000     \ 
    --yarnname "EBI"  \ 
    pipeline.jar    \ 
    --runner=FlinkRunner \ 
    --zookeeperQuorum=hdp-master-001.fake.org:2181 

私はそれが関連していないと思うが、オブジェクトツーことシリアライズがserialisableで、暗黙的および明示的なコーダが、このdoesnの両方を持っていました状況に影響を与えません。

このような状況を引き起こしている可能性がありますが、それに対処するために何ができますか?今の


、どこかの間に4と8GiBにマネージャーのヒープメモリを増やすと、例外を防ぐように思われます。これが通常のFlinkの動作であると想定されているかどうかはまだ分かりません(ディスクにこぼれないでください)。規模を拡大する解決策のようには見えません。

答えて

1

Flinkにメモリバッファが不足しているため、EOFExceptionがスローされます。 Flinkは、EOFExceptionがディスクへのデータの書き込みを開始することを通知すると想定しています。

この問題は、SerializableCoderEOFExceptionCoderExceptionにラップすることによって発生します。したがって、Flinkは予想されるEOFExceptionを捕まえておらず、失敗します。

EOFExceptionをラップせずに転送するカスタムコーダーを使用すると、問題を解決できます。

+0

この問題はBeamチームに報告されており、ソリューションは将来のリリースで提供される可能性があります。進捗状況を確認するには、https://issues.apache.org/jira/browse/BEAM-2831に登録してください。 –

関連する問題