我想知道是否有一种简单的方法来获取某个特定运行的所有作业日志/任务尝试日志,并将它们持久化到某个地方(可能是hdfs)?
我知道日志在本地文件系统上 /var/log/hadoop-0.20-mapreduce/userlogs
对于任何特定作业的任务尝试,我可以为每个从属节点编写一个ssh脚本并将它们全部收集起来。不过,如果有必要的话,我会尽量避免这种情况——也许hadoop的某些内置功能我还不知道?
我确实找到了这个链接,它很旧,但是包含了一些有用的信息——但是没有包括我要寻找的答案。 mapreduce.job.userlog.retain.hours
默认设置为24,因此任何作业的日志都将在1天后自动清除。我能做些什么,除了增加 retain.hours
参数以使这些保持不变?
1条答案
按热度按时间ozxc1zmp1#
我不知道有什么现成的存在,但我已经做了类似的手动。
我们设置cron作业,每20分钟运行一次,为任务尝试寻找新的日志,然后将它们全部注入hdfs到特定的目录中。我们修改了文件名,以便附加它来自的主机名。然后,我们让mapreduce工作尝试查找问题,计算运行时等统计数据,这是非常整洁的。我们对namenode日志也做了类似的操作。