1


多数のテキスト ファイルを含む HDFS に、多数の tar.gz ファイルを含む毎日のフォルダーがあります。
これらの tar.gz の多くが破損していることが判明しており、これらのファイルを処理する際に「ストリームの予期しない終了」で hive/mapreduce ジョブがクラッシュします。

それらのいくつかを特定し、tar -zxvf でテストしました。それらは実際にエラーで終了しますが、これが発生する前にかなりの数のファイルを抽出します。

tar/gz ファイルが破損したときに、hive/mapreduce ジョブを停止して単純にクラッシュさせる方法はありますか?
mapred.skip.attempts.to.start.skipping、
mapred.skip.map.max.skip.records、
mapred.skip.mode.enabled、
mapred.map.maxなどのいくつかのエラー スキップと耐障害性パラメーターをテストしました。 .attempts、
mapred.max.map.failures.percent 、mapreduce.map.failures.maxpercent

少数のケースでは、クラッシュすることなく完全なフォルダーを処理するのに役立ちましたが、ほとんどの場合、これによりジョブがハングし、まったく終了しませんでした。

(クリーンな gzip ファイルを取得するために) 後で再圧縮してから hdfs に再度アップロードするためだけに、hadoop の外部ですべてのファイルを解凍するのは、非常に面倒なプロセスです (余分な手順と、生成される大量のデータのため)。

誰かが見つけた、よりクリーンでエレガントなソリューションはありますか?

助けてくれてありがとう。

4

2 に答える 2

1

私はここでのパーティーに非常に遅れていますが、破損した gzip ファイルに関するこの正確な問題に直面しました。RecordReaderをキャッチIOExceptionsし、問題のあるファイルの名前をログに記録し、そのファイルを適切に破棄して次のファイルに移動する独自のコードを作成することで、最終的に解決しました。

私はいくつかの詳細を書きました(カスタムのコードを含む:http Record Reader: //daynebatten.com/2016/03/dealing-with-corrupt-or-blank-files-in-hadoop/

于 2016-03-22T13:05:35.180 に答える
0

基本的に2つの方法があります。

  1. この種の破損ファイルの処理を可能にする Hadoop 用のパッチを作成し、破損ファイルに対してアプリケーションを実行するだけです。
  2. 独自のカスタム 'gunzip' 実装 (この種の問題を処理できる) を使用する特別な Hadoop アプリケーションを作成します。このアプリケーションは、マッパーのみのジョブ (ID マッパー) としてファイルを読み書きするだけです。このジョブの出力は、通常の mapreduce/pig/hive/... ジョブの入力として使用されます。
于 2013-10-22T19:13:53.357 に答える