如何收集hadoop用户日志?

bweufnob  于 2021-06-04  发布在  Hadoop
关注(0)|答案(4)|浏览(308)

我运行m/r作业并在发生错误时记录错误,而不是使作业失败。只有一些错误,但是作业是在具有数百个节点的hadoop集群上运行的。如何在任务日志中搜索而不必手动打开web ui(jobtaskhistory)中的每个任务日志?换句话说,如何自动搜索分布在整个集群中、本地存储在每个节点中的m/r任务日志?

6pp0gazn

6pp0gazn1#

首先要注意的是:2.0.0已经过时了(这是2.0的“beta”版本),您应该考虑升级到一个新的堆栈(例如2.4、2.5和2.6)。
从2.0开始,hadoop实现了所谓的“日志聚合”(尽管这并不是你所想的那样)。日志只存储在hdfs上)。有很多命令行工具,您可以使用它们来获取日志并分析它们,而无需通过ui。实际上,这比ui快得多。
查看此博客文章以了解更多信息。
不幸的是,即使使用命令行工具,也无法同时获取所有任务日志并将其通过管道传输到grep之类的工具。您必须将每个任务日志作为单独的命令来获取。不过,这至少是可以编写脚本的。
hadoop社区正在开发一个更强大的日志分析工具,它不仅可以将作业日志存储在hdfs上,还可以让您对这些日志执行搜索和其他分析。然而,这一工具仍然是一条出路。

s2j5cfk0

s2j5cfk02#

我们就是这样做的(大型互联网公司):我们确保只记录v关键消息:但对于那些消息,我们实际上使用了system.err.println。请将每个tracker/reducer的聚合消息限制在几kb以内。
大多数消息仍然应该使用标准的log4j机制(它进入系统日志区域)

aij0ehis

aij0ehis3#

yarn logs -applicationId <myAppId> | grep ...

0s7z1bwu

0s7z1bwu4#

转到你的http://sandbox-hdp.hortonworks.com:8088/群集/应用程序
在这里查找您感兴趣的执行的示例,并单击“跟踪ui”列中的“历史记录”链接,
然后查找logs链接(在logs列中),并单击它

相关问题