在执行 Hadoop 作业后保留日志



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

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

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

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

我不知道有什么现成的东西,但我已经手动做了类似的事情。

我们设置了每20分钟运行一次的cron作业,为任务尝试寻找新的日志,然后将它们全部泵入HDFS中的特定目录。我们修改了文件名,以便附加它所来自的主机名。然后,我们让MapReduce工作试图发现问题,计算运行时等统计数据。这非常巧妙。我们对NameNode日志也做了类似的操作。

最新更新