次の簡単なコードを使用して、ファイルをhdfsにアップロードしています。
FileSystem hdfs = FileSystem.get(config);
hdfs.copyFromLocalFile(src, dst);
ファイルはWebサーバーのJavaコンポーネントによって生成され、.gz形式のログバックによってローテーションおよびクローズされます。.gzファイルが破損している場合があることに気づきました。
> gunzip logfile.log_2013_02_20_07.close.gz
gzip: logfile.log_2013_02_20_07.close.gz: unexpected end of file
しかし、次のコマンドはファイルの内容を表示します
> hadoop fs -text /input/2013/02/20/logfile.log_2013_02_20_07.close.gz
このようなファイルがあることの影響は非常に悲惨です。1日の集計が失敗し、そのような場合、いくつかのスレーブノードがブラックリストに登録されているためです。
そのような場合、私は何ができますか?hadoop copyFromLocalFile()ユーティリティでファイルが破損する可能性はありますか?誰かが同様の問題に遭遇しましたか?