0

「大衆のためのMapreduce 」チュートリアルのcommoncrawlサンプルコードを使用しています。マッパーに変更を加えようとしていますが、文字列を出力に記録できるようにしたいと考えています。noSQL データベースをセットアップして出力をそこにプッシュすることを検討していますが、良い解決策とは思えません。Javaからこの種のロギングを行う標準的な方法は何ですか?

4

1 に答える 1

1

通常のロガー(少なくとも私が知っているもの)以外にログの特別な解決策はありませんが、いくつかの解決策について見ることができます。
a)ログがデバッグ目的である場合-実際に通常のデバッグログを書き込みます。失敗したタスクの場合は、UIを介してそれらを見つけて分析することができます。
b)このログが、ジョブからの他の出力と一緒に取得したい種類の出力である場合は、それらに特定のキーを割り当てて、コンテキストに書き込みます。次に、レデューサーで、それらを出力に配置するための特別なロジックが必要になります。
c)HDFSにディレクトリを作成し、そこに書き込むマッパーを作成できます。それは副作用であるため、MRの古典的な方法ではありません-場合によっては問題ないことがあります。特に、各マッパーが独自のファイルを作成した後、コマンドhadoop fs-getmerge...を使用してすべてのログを1つのファイルとして取得できることを考慮に入れてください。
c)ジョブの進行状況、エラーの数などを監視できるようにする場合は、カウンターを使用できます。

于 2012-12-30T21:34:44.293 に答える