5

マップ削減ジョブを作成しようとしています。

最後まで実行されますが、最後に奇妙なデータが表示されます。

system.out.println("debug data") を使用してデバッグしようとすると、画面に表示されません。

java API を使用して外部ログ ファイルを生成する、log.severe("log data") を使用して画面に出力しようとする、または log4j ロガー メソッド log.info(log data) を使用するいずれかが機能しない/

デバッグ メッセージが表示されるのは、マップ削減ジョブで例外が発生したときだけです。

ファイルまたは画面にデバッグ メッセージが表示されるようにするには、どうすれば修正できますか?

4

2 に答える 2

1

大きなデータを処理しているため、トレース メッセージのサイズが大きくなり、問題が発生する可能性があります。「system.out.println」スタイルのロギングに代わる方法を検討すると便利です。

  • カウンターを使用します(これは簡単な例です)
  • MultipleOutputsを使用して HDFS にログを書き込む

Counters と MultipleOutputs の最も優れた点 - それらにプログラムでアクセスできます。MultipleOutputs の場合は、map/reduce タスクを実行して、ログからいくつかの統計を抽出することもできます。

本番環境でのデバッグに代わるもう 1 つの方法は単体テストです。MiniMRCluster は、単体テスト中に map-reduce ジョブをテストするのに役立ちます。

于 2012-10-03T12:05:00.013 に答える
0

Maven を使用して Eclipse でマップ/リデュース コードを開発し、ランタイム jar をビルドして依存関係を管理しています。HDFS をサポートするために Hadoop をマシンにインストールして実行したら、Eclipse でコードを実行およびデバッグできます。これは、Eclipse デバッグ パースペクティブでブレークポイントとその他すべてを使用することを意味します。

于 2012-10-02T18:37:05.863 に答える