我想知道是否有一种简单的方法来获取特定运行的所有作业日志/任务尝试日志,并将它们保存在某处(可能是HDFS)?
我知道日志位于/var/log/hadoop-0.20-mapreduce/userlogs
的本地文件系统上,用于任何特定作业的任务尝试,并且我可以将脚本写入SSH到每个从属节点并将其全部挖出来。但是,我试图避免它,如果它有意义 - 也许有一些我不知道的Hadoop的内置函数?
我确实找到this link,这是旧的,但包含一些有用的信息 - 但不包括我正在寻找的答案。
默认情况下, mapreduce.job.userlog.retain.hours
设置为24,因此任何作业的日志将在1天后自动清除。除了增加retain.hours
参数的值以使这些参数继续存在之外,我还能做些什么吗?
答案 0 :(得分:1)
我不知道任何开箱即用的东西,但我手动做了类似的事情。
我们设置了每20分钟运行一次的cron作业,这些作业会查找任务尝试的新日志,然后将它们全部转移到HDFS中的特定目录中。我们修改了文件名,以便附加它来自的主机名。然后,我们有MapReduce作业尝试查找问题,计算运行时等统计数据。它非常整洁。我们也使用NameNode日志做了类似的事情。