执行后从Hadoop作业中保留日志

时间:2013-08-28 14:40:58

标签: hadoop

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

我知道日志位于/var/log/hadoop-0.20-mapreduce/userlogs的本地文件系统上,用于任何特定作业的任务尝试,并且我可以将脚本写入SSH到每个从属节点并将其全部挖出来。但是,我试图避免它,如果它有意义 - 也许有一些我不知道的Hadoop的内置函数?

我确实找到this link,这是旧的,但包含一些有用的信息 - 但不包括我正在寻找的答案。

默认情况下,

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

1 个答案:

答案 0 :(得分:1)

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

我们设置了每20分钟运行一次的cron作业,这些作业会查找任务尝试的新日志,然后将它们全部转移到HDFS中的特定目录中。我们修改了文件名,以便附加它来自的主机名。然后,我们有MapReduce作业尝试查找问题,计算运行时等统计数据。它非常整洁。我们也使用NameNode日志做了类似的事情。