デバッグしたいマップ削減コードを書きました。
エラーが発生しない限り、Hadoop プラットフォームは標準出力を画面に出力しないため、標準出力を使用することはできません。
代わりに、ログファイルを作成するためにロガーを使用しようとしました。
ハンドラーを使用して2つのファイルに分割しましたが、残念ながら「重大な」ログファイルは空になり、一般的なログファイルはメインスレッドで発生したことのみをログに記録し、map reduce 関数では発生しませんでした。
質問は次のとおりです。
Hadoop とログ ファイルに問題がありますか、それともロガーの構成に問題がありますか? もしそうなら、それを修正する方法。
ログ構成コード: アプリケーション全体に 1 つのロガーを使用します (今回はルート ロガー)
public static Logger configureLogging()
{
try
{
logger=Logger.getLogger("");
//FileSystem hdfs=FileSystem.get(URI.create(Misc.S3FS),getConfiguration());
logger.setLevel(Level.ALL);
//StreamHandler handler=new StreamHandler(hdfs.create(new Path(Misc.LOGS_PATH+"mylog.log")),new SimpleFormatter());
FileHandler handler=new FileHandler(Misc.LOGS_PATH+"mylog.xml",true);
FileHandler severeHandler=new FileHandler(Misc.LOGS_PATH+"mylogSevere.xml",true);
severeHandler.setLevel(Level.INFO);
logger.addHandler(handler);
logger.addHandler(severeHandler);
}
catch (Exception e)
{
e.printStackTrace();
}
return logger;
}