gpt4 book ai didi

java - 配置 Hadoop 日志记录以避免日志文件过多

转载 作者:搜寻专家 更新时间:2023-10-30 21:27:56 25 4
gpt4 key购买 nike

我遇到 Hadoop 在 $HADOOP_LOG_DIR/userlogs 中生成太多日志文件的问题(Ext3 文件系统只允许 32000 个子目录),这在这个问题中看起来是同样的问题:Error in Hadoop MapReduce

我的问题是:有人知道如何配置 Hadoop 来滚动日志目录或以其他方式防止这种情况发生吗?我试图避免只设置“mapred.userlog.retain.hours”和/或“mapred.userlog.limit.kb”属性,因为我想实际保留日志文件。

我也希望在 log4j.properties 中配置它,但是查看 Hadoop 0.20.2 源代码,它直接写入日志文件而不是实际使用 log4j。可能我不明白它是如何充分利用log4j的。

如有任何建议或说明,我们将不胜感激。

最佳答案

不幸的是,没有可配置的方法来防止这种情况发生。作业的每个任务在 history/userlogs 中都有一个目录,其中将保存 stdout、stderr 和 syslog 任务日志输出文件。保留时间将有助于防止过多的时间累积,但您必须编写一个好的日志轮换工具来自动对它们进行压缩。

当我们写入 NFS 装载时,我们也遇到了这个问题,因为所有节点将共享相同的 history/userlogs 目录。这意味着一个包含 30,000 个任务的作业足以破坏 FS。当您的集群实际开始处理大量数据时,本地日志记录确实是一种方式。

如果您已经在本地登录并且仍然设法在不到一周的时间内在一台机器上处理 30,000 多个任务,那么您可能创建了太多小文件,导致为每个作业生成太多映射器。

关于java - 配置 Hadoop 日志记录以避免日志文件过多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2656159/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com