如何在 hadoop 机器上更好地管理 /tmp 的清理

如何在 hadoop 机器上更好地管理 /tmp 的清理

众所周知,/tmp 的内容应该在一段时间后被删除。

就我而言,我们的机器(redhat 版本 7.2)配置如下。

正如我们所看到的,触发清理的服务/tmp将每 24 小时(1d)激活一次。

systemd-tmpfiles-clean.timer从我的机器:

more /lib/systemd/system/systemd-tmpfiles-clean.timer
#  This file is part of systemd.
#
#  systemd is free software; you can redistribute it and/or modify it
#  under the terms of the GNU Lesser General Public License as published by
#  the Free Software Foundation; either version 2.1 of the License, or
#  (at your option) any later version.

[Unit]
Description=Daily Cleanup of Temporary Directories
Documentation=man:tmpfiles.d(5) man:systemd-tmpfiles(8)

[Timer]
OnBootSec=15min
OnUnitActiveSec=1d

这是负责规则的文件。我们可以看到,根据这些规则,如果文件/文件夹超过 10 天,就会被删除(这是我的理解,如果我错了,请纠正我)。

规则是:

more /usr/lib/tmpfiles.d/tmp.conf
#  This file is part of systemd.
#
#  systemd is free software; you can redistribute it and/or modify it
#  under the terms of the GNU Lesser General Public License as published by
#  the Free Software Foundation; either version 2.1 of the License, or
#  (at your option) any later version.

# See tmpfiles.d(5) for details

# Clear tmp directories separately, to make them easier to override
v /tmp 1777 root root 10d
v /var/tmp 1777 root root 30d

# Exclude namespace mountpoints created with PrivateTmp=yes
x /tmp/systemd-private-%b-*
X /tmp/systemd-private-%b-*/tmp
x /var/tmp/systemd-private-%b-*
X /var/tmp/systemd-private-%b-*/tmp

但因为我们有一个 hadoop 集群,我们注意到其中/tmp包含数千个空文件夹和文件,以及内容非常巨大的文件夹和文件。

例子:

drwx------    2 hive      hadoop      6 Dec 19 13:54 2d069b18-f07f-4c8b-a7c7-45cd8cfc9d42_resources
drwx------    2 hive      hadoop      6 Dec 19 13:59 ed46a2a0-f142-4bff-9a7b-f2d430aff26d_resources
drwx------    2 hive      hadoop      6 Dec 19 14:04 ce7dc2ca-7a12-4aca-a4ef-87803a33a353_resources
drwx------    2 hive      hadoop      6 Dec 19 14:09 43fd3ce0-01f0-423a-89e5-cfd9f82792e6_resources
drwx------    2 hive      hadoop      6 Dec 19 14:14 f808fe5b-2f27-403f-9704-5d53cba176d3_resources
drwx------    2 hive      hadoop      6 Dec 19 14:19 6ef04ca4-9ab1-43f3-979c-9ba5edb9ccee_resources
drwx------    2 hive      hadoop      6 Dec 19 14:24 387330de-c6f5-4055-9f43-f67d577bd0ed_resources
drwx------    2 hive      hadoop      6 Dec 19 14:29 9517d4d9-8964-41c1-abde-a85f226b38ea_resources
drwx------    2 hive      hadoop      6 Dec 19 14:34 a46a9083-f097-4460-916f-e431f5790bf8_resources
drwx------    2 hive      hadoop      6 Dec 19 14:39 81379a84-17c8-4b24-b69a-d91710868560_resources
drwx------    2 hive      hadoop      6 Dec 19 14:44 4b8ba746-12f5-4caf-b21e-52300b8712a5_resources
drwx------    2 hive      hadoop      6 Dec 19 14:49 b7a2f98b-ecf2-4e9c-a92f-0da31d12a81a_resources
drwx------    2 hive      hadoop      6 Dec 19 14:54 2a745ade-e1a7-421d-9829-c7eb915982ce_resources
drwx------    2 hive      hadoop      6 Dec 19 14:59 9dc1a021-9adf-448b-856d-b14e2cb9812b_resources
drwx------    2 hive      hadoop      6 Dec 19 15:04 5599580d-c664-4f2e-95d3-ebdf479a33b9_resources
drwx------    2 hive      hadoop      6 Dec 19 15:09 d97dfbb5-444a-4401-ba58-d338f1724e68_resources
drwx------    2 hive      hadoop      6 Dec 19 15:14 832cf420-f601-4549-b131-b08853339a39_resources
drwx------    2 hive      hadoop      6 Dec 19 15:19 cd1f10e2-ad4e-4b4e-a3cb-4926ccc5a9c5_resources
drwx------    2 hive      hadoop      6 Dec 19 15:24 19dff3c0-8024-4631-b8da-1d31fea7203f_resources
drwx------    2 hive      hadoop      6 Dec 19 15:29 23528426-b8fb-4d14-8ea9-2fb799fefe51_resources
drwx------    2 hive      hadoop      6 Dec 19 15:34 e3509760-9823-4e30-8d0b-77c5aee80efd_resources
drwx------    2 hive      hadoop      6 Dec 19 15:39 3c157b4d-917c-49ef-86da-b44e310ca30a_resources
drwx------    2 hive      hadoop      6 Dec 19 15:44 b370af30-5323-4ad5-b39e-f02a0dcdc6bb_resources
drwx------    2 hive      hadoop      6 Dec 19 15:49 18a5ea21-30f9-45a8-8774-6d8200ada7ff_resources
drwx------    2 hive      hadoop      6 Dec 19 15:54 ee776a04-f0e8-4295-9872-f8fc6482913e_resources
drwx------    2 hive      hadoop      6 Dec 19 15:59 f5935653-0bf6-4171-895a-558eef8b0773_resources
drwx------    2 hive      hadoop      6 Dec 19 16:04 e80ea30b-c729-48a2-897d-ae7c94a4fa04_resources
drwx------    2 hive      hadoop      6 Dec 19 16:09 fde6f7e4-89bd-41b4-99d3-17204bf66f05_resources

我们担心该内容/tmp会满,因此服务无法删除内容。

/tmp所以我们要根据以下内容删除文件夹和文件:

每个文件夹/文件如果超过 1 天将被删除

并且服务每1小时启动一次

所以我们打算设置以下内容:

OnUnitActiveSec=1h    ( in file /lib/systemd/system/systemd-tmpfiles-clean.timer )

v /tmp 1777 root root 1d (  in file /usr/lib/tmpfiles.d/tmp.conf )

我现在是在使用新设置吗?

其次-设置完之后,我们需要做些什么才能让它生效吗?

答案1

这种组合肯定会起作用。但是,/tmp您最好只删除资源文件和目录,而不是每小时删除所有内容,例如

R /tmp/*_resources

请记住,您对 systemd 和 tmpfiles 配置的更改应该不是/usr可以在或中完成/lib。相反,将相应的覆盖放入/etc,例如

echo 'R /tmp/*_resources' >> /etc/tmpfiles.d/hadoop
cp /lib/systemd/system/systemd-tmpfiles-clean.timer \
   /etc/systemd/system/systemd-tmpfiles-clean.timer
$EDITOR /etc/systemd/system/systemd-tmpfiles-clean.timer

如果您更改文件,/usr或者/lib在升级过程中可能会出现冲突。


如果您已经更改了文件,请确保使用systemctl daemon-reload.否则systemd将不会接收到计时器的更改。

相关内容