您可以使用log4j,它是hadoop使用的默认日志记录框架.因此,从MapReduce应用程序中,您可以执行以下操作:
import org.apache.log4j.Logger;
// other imports omitted
public class SampleMapper extends Mapper<LongWritable, Text, Text, Text> {
private Logger logger = Logger.getLogger(SampleMapper.class);
@Override
protected void setup(Context context) {
logger.info("Initializing NoSQL Connection.")
try {
// logic for connecting to NoSQL - ommitted
} catch (Exception ex) {
logger.error(ex.getMessage());
}
}
@Override
protected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {
// mapper code ommitted
}
}
Run Code Online (Sandbox Code Playgroud)
此示例代码将使用log4j logger将事件记录到继承的Mapper记录器.所有日志事件都将记录到各自的任务日志中.您可以从JobTracker(MRv1)/ ResourceManager(MRv2)网页访问任务日志.
如果你正在使用纱线,则可以使用以下命令从命令行访问应用程序日志:
yarn logs -applicationId <application_id>
Run Code Online (Sandbox Code Playgroud)
如果您使用mapreduce v1,则命令行没有单点访问; 因此,您必须登录每个TaskTracker并查看通常/var/log/hadoop/userlogs/attempt_<job_id>/syslog在${hadoop.log.dir}/userlogs包含log4j输出中指定的配置路径.
| 归档时间: |
|
| 查看次数: |
12375 次 |
| 最近记录: |