我正在尝试调试map-reduce程序,并发现它非常头疼。我尝试this,但没有工作,因为我使用的是eclipse hdt插件,并且不使用hadoop jar XXX
命令。所以我尝试使用日志进行调试。
我试过了两次
public static final Log LOG = LogFactory.getLog(Reduce.class);
LOG.debug( “XXX”);
和
的System.out.println( “XXX”);
并根据stackoverflow上的this post,假设我应该在$HADOOP_HOME/logs/userlogs/XXX
找到日志,但我发现该文件夹为空。我假设这可能是因为我使用的hadoop是2.x,但建议的答案使用0.x.我也很可能没有完全设置hadoop。
我也在那篇文章中尝试过接受的答案。但是我无法访问http://localhost:50030/jobtracker.jsp
。不知道为什么。
有什么建议吗?除了如何使用日志进行调试之外,还可以使用eclipse-hdt轻松解决这个问题。
答案 0 :(得分:0)
使用ResourceManager的用户界面:
如果您在群集中运行YARN,那么您的群集中将不会运行JobTracker,因此您无法访问http://localhost:50030/jobtracker.jsp
,而是会运行ResourceManager并且您可以访问ResourceManager' s访问http://RESOURCE_MANAGER_HOST:8088/cluster
的网页(将ResourceCE_MANAGER_HOST替换为您的ResourceManager的IP地址)。
在ResourceManager的网页中,您可以访问群集中正在运行且已完成的所有应用程序,您可以点击您想要访问的个人application_id
,然后您将能够看到logs
的链接,如果使用http://RESOURCE_MANAGER_HOST:8088/cluster/app/APPLICATION_ID
(将APPLICATION_ID替换为已分配给mapreduce作业的应用程序ID),您也可以访问此页面以查找单个application_id。
使用CLI :
如果你知道你的application_id,那么从命令行可以使用以下命令检索特定应用程序的日志:
yarn logs -applicationId APPLICATION_ID
注意:将APPLICATION_ID替换为您为mapreduce作业指定的应用程序ID。
进一步阅读:
另外,请查看pivotal和hortonworks关于如何管理YARN日志的以下链接。
答案 1 :(得分:0)
根据互联网上的一些讨论,原因是hadoop 2.x的版本和使用纱线(我使用hadoop 2.6.0)。 历史服务器的端口是19888.因此用户可以通过localhost访问它:19888(NOT localhost:50030 / jobtracker.jsp) 用户需要(1)配置历史服务器和(2)在访问http://localhost:19888之前运行历史服务器。