【问题标题】:Hadoop: what will happen when remove folder under /tmp/logs/hive/logs/hiveHadoop:删除 /tmp/logs/hive/logs/hive 下的文件夹时会发生什么
【发布时间】:2017-08-02 05:04:40
【问题描述】:

从 Cloudera Manager 安装 CDH 5.3 版。

我的集群使用hive,其他服务设置如下:
・yarn.nodemanager.remote-app-log-dir=/tmp/logs ・yarn.nodemanager.remote-app-log-dir-suffix=logs ・replication setting is 2

我在删除 /tmp/logs/hive/logs/ 下的文件夹时遇到问题。
特别是/tmp/logs/hive/logs/hive

我尝试使用 hdfs 命令删除/tmp/logs/hive/logs/hive/xxxxxxx.xxxxxxx,但文件夹太大而无法删除。

即使hadoop fs -ls /tmp/logs/hive/logs/hive/ 也不起作用...(hdfs 没有回答。(大小几乎是 3TB))

因此,我决定使用 [Hadoop fs -rmr /tmp/logs/hive/logs/hive/*]。但是,我不知道如果我使用这个命令我的集群会发生什么(我担心某个地方将无法访问,因为这个)。

有什么问题吗?或者有一个好主意来处理这个问题(我不想重启我的集群)。

【问题讨论】:

  • 我的 5 美分:可能你需要在 rmr 命令中添加-skipThrash 选项

标签: hadoop hive


【解决方案1】:

HDFS目录/tmp/logs是Mapreduce的默认位置日志聚合;还有另一个 critical 属性是...

yarn.log-aggregation.retain-seconds: 还要等多久 删除聚合日志、-1 或负数会禁用 删除聚合日志
需要小心,不要设置 这个值太小,以免给分布式造成负担 文件系统。

  https://fr.hortonworks.com/blog/simplifying-user-logs-management-and-access-in-yarn/

典型的集群会在 5 到 30 天后清除 MR 日志,具体取决于活动(可能还有合规性要求)。如果你从不清除任何东西,那么你迟早会碰壁……!


好的,如果您真的需要手动清除那些东西en masse,您可以这样做。从 purge-nothing no purge-everything 粗暴地切换有点可笑,但无论如何。

对于上面的博文,您可以注意到/tmp/logs 必须具有设置为 1777 的访问权限,即 “用户读/写/执行, group read/write/execute, other read/write/execute, and sticky bit set”(就像/tmp);并且它的组所有权必须与运行NodeManager服务的服务帐户的主组匹配。

换句话说:任何人都可以在那里创建一个子目录;粘性位和组所有权技巧意味着 YARN 和创建者都可以读取/写入/清除内部的日志文件——但没有其他人。

现在有趣的是,新用户启动其第一个 MapReduce 作业将自动创建一个以他/她命名的新子目录,以及一个 logs/ 子子目录; HiveServer2 在hive 服务帐户下运行的第一个查询自动创建了hive/hive/logs/ 子目录。
=> 如果您删除这些子目录,那么它们将在下次运行时自动重新创建
=> 但如果您在 HS2 会话正在运行查询时删除它们,那么在尝试将其日志推送到 HDFS 时,该查询可能会崩溃并烧毁!

【讨论】:

  • 感谢您的回答!所以,我决定不执行上述命令。我会找到另一种方法来减少数据量。
猜你喜欢
  • 1970-01-01
  • 2020-08-10
  • 2013-01-06
  • 2021-04-08
  • 2019-04-06
  • 1970-01-01
  • 2018-10-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多