1

我想知道是否有一种简单的方法可以获取特定运行的所有作业日志/任务尝试日志,并将它们保存在某个地方(也许是 HDFS)?

我知道对于任何特定作业的任务尝试,日志都在本地文件系统上/var/log/hadoop-0.20-mapreduce/userlogs,并且我可以编写一个脚本以通过 SSH 连接到每个从属节点并将它们全部收集起来。但是,如果有意义的话,我会尽量避免这种情况——也许有一些我不知道的 Hadoop 内置功能?

我确实找到了这个链接,它很旧,但包含一些有用的信息——但没有包含我正在寻找的答案。

mapreduce.job.userlog.retain.hours默认设置为 24,因此任何作业的日志将在 1 天后自动清除。除了增加retain.hours参数的值以使这些保持不变之外,我还能做些什么?

4

1 回答 1

1

我不知道任何开箱即用的东西,但我手动做了类似的事情。

我们设置了每 20 分钟运行一次的 cron 作业,为任务尝试寻找新日志,然后将它们全部泵入 HDFS 到特定目录中。我们修改了文件名,以便附加它来自的主机名。然后,我们让 MapReduce 作业尝试查找问题、计算运行时等统计信息等。这非常简洁。我们也对 NameNode 日志做了类似的事情。

于 2013-08-28T15:43:30.580 回答