我想调试一个mapreduce脚本,并且没有遇到太多麻烦试图在我的程序中放置一些print语句.但我似乎无法在任何日志中找到它们.
rOr*_*lig 58
其实标准输出只显示System.out.println()
了的非映射精简类.
将System.out.println()
在地图和减少阶段可以在日志中可以看出.访问日志的简便方法是
http:// localhost:50030/jobtracker.jsp- >单击已完成的作业 - >单击地图或缩小任务 - >单击任务日志 - >任务日志 - >标准日志.
希望这可以帮助
小智 24
另一种方式是通过终端:
1)进入Hadoop_Installtion目录,然后进入"logs/userlogs".
2)打开您的job_id目录.
3)如果你想要mapper输出或,用_ m_检查目录_r_如果你正在寻找减速器.
示例:在Hadoop-20.2.0中:
> ls ~/hadoop-0.20.2/logs/userlogs/attempt_201209031127_0002_m_000000_0/ log.index stderr stdout syslog
以上表示:
Hadoop_Installation:〜/ hadoop-0.20.2
job_id:job_201209031127_0002
_m_:map任务,"地图编号":_000000_
4)开放标准输出,如果你使用"的System.out.println"或标准错误,如果你使用"system.err.append".
PS.其他hadoop版本可能有不同的层次结构,但它们都应该在$ Hadoop_Installtion/logs/userlogs下.
Mac*_*eek 14
在Hadoop集群上yarn
,您可以使用以下命令获取日志,包括stdout:
yarn logs -applicationId application_1383601692319_0008
Run Code Online (Sandbox Code Playgroud)
出于某种原因,我发现这比我在网络界面中看到的更完整.Web界面没有System.out.println()
为我列出输出.
小智 8
要在控制台上获取stdout和日志消息,您可以将apache commons日志框架用于mapper和reducer.
public class MyMapper extends Mapper<..,...,..,...> {
public static final Log log = LogFactory.getLog(MyMapper.class)
public void map() throws Exception{
// Log to stdout file
System.out.println("Map key "+ key);
//log to the syslog file
log.info("Map key "+ key);
if(log.isDebugEanbled()){
log.debug("Map key "+ key);
}
context.write(key,value);
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
62146 次 |
最近记录: |