Hadoop の Log4j インフラストラクチャを使用して、map/reduce アプリケーションからログを記録したいと考えています。すべてが正しくセットアップされたと思いますが、必要なログ レベルを指定できません。
デフォルトでは、Hadoop はレベルINFOでログを記録するように設定されています。その log4j.properties ファイルの最初の行は次のようになります。
hadoop.root.logger=INFO,console
レデューサーが次のようなアプリケーションがあります。
package com.test; public class MyReducer<...> extends Reducer<...> { private static Logger logger = Logger.getLogger(MyReducer.class.getName());
//... protected void reduce(...) {
logger.debug("My message");
// ... } }
Hadoop の log4j.properties ファイルに次の行を追加しました。
log4j.logger.com.test.MyReducer=DEBUG
Hadoop システムはレベル INFO でログを記録することを期待していますが、私のアプリケーションはレベル DEBUG でログを記録するため、リデューサー タスクのログに「My message」が表示されます。