如何使用log或Eclipse-hdt调试mapreduce(hadoop-2.5.1)程序?

时间:2014-11-28 03:10:16

标签: hadoop mapreduce yarn

我正在尝试调试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轻松解决这个问题。

2 个答案:

答案 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。

进一步阅读:

另外,请查看pivotalhortonworks关于如何管理YARN日志的以下链接。

答案 1 :(得分:0)

根据互联网上的一些讨论,原因是hadoop 2.x的版本和使用纱线(我使用hadoop 2.6.0)。 历史服务器的端口是19888.因此用户可以通过localhost访问它:19888(NOT localhost:50030 / jobtracker.jsp) 用户需要(1)配置历史服务器和(2)在访问http://localhost:19888之前运行历史服务器。

相关讨论: The most popular solution