2016-10-20 1 views
0

ファイルのバッチを読み込み、その行を操作してcassandraに保存するためにreadTextFile(/ path/to/dir)を使用しています。ディレクトリから読み取るときに開いているファイルが多すぎます

ディレクトリ内の170を超えるファイルに到達するまで(ファイルは正常に実行された後に削除されます)、すべて正常に動作していたようです。 私は "IOException:オープンファイルが多すぎます"というメッセージを受け取りました。コードを実行すると何千ものファイル記述子が表示されています。 ファイル記述子のほとんどは「ソケット」です。

10個のファイルのみでテストした結果、4000個以上のファイル記述子が開きました。スクリプトが終了すると、すべてのファイル記述子が閉じられ、正常に戻りました。

これは通常の動作ですか?私は泣き言を増やすべきですか?

いくつかの注意: 環境は、Javaの8でのTomcat 7でのDataSetのAPIを使用して1.1.2 FLINK。 フリンクジョブはクォーツでスケジュールされています。

これらの170個以上のファイルの合計は約5MBです。

+0

使用しているFlinkのバージョン情報を追加できますか?また、DataSet APIまたはDataStream APIを使用していますか?ありがとう –

+0

DataSet APIを使用してFlink 1.1.2 –

答えて

1

問題を解決しました。

コードを絞り込んだ後、非常に並列な "map()"ステップの中で "Unirest.setTimeouts"を使用するとスレッド割り当てが多すぎてすべてのファイル記述子が消費されることがわかりました。

関連する問題