Dataproc Worker Node 的磁盘利用率与日俱增

Disk utilization of Dataproc Worker Node is getting increased day by day

我们有 1 个主节点和 7 个工作节点的 Dataproc 集群。 所有工作节点都有 1 个启动磁盘和 1 个 375 GB (sdb) 的本地磁盘。 worker节点0,1,2,3的sdb(mounted on /mnt/1)磁盘利用率已经达到85%以上,5,6,7也逐渐向85%上升。

我们发现以下目录下的文件占了大部分(304G)

/mnt/1/hadoop/dfs/data/current/BP-XXXXXXX-XX.XX.XX.X-XXXXXXXX/current/finalized.

我们发现它有如下文件夹

drwxrwxr-x  4 hdfs hdfs 4.0K Jul 24 16:11 ..
drwxrwxr-x 34 hdfs hdfs 4.0K Jul 26 15:20 subdir0
drwxrwxr-x 34 hdfs hdfs 4.0K Aug  8 13:19 subdir1
drwxrwxr-x 34 hdfs hdfs 4.0K Aug 10 08:16 subdir2
drwxrwxr-x 34 hdfs hdfs 4.0K Aug 17 22:16 subdir3
drwxrwxr-x 34 hdfs hdfs 4.0K Aug 23 02:49 subdir4
drwxrwxr-x 34 hdfs hdfs 4.0K Aug 27 20:30 subdir5
drwxrwxr-x 34 hdfs hdfs 4.0K Sep  2 08:30 subdir6
drwxrwxr-x 34 hdfs hdfs 4.0K Sep  7 02:21 subdir7
drwxrwxr-x 34 hdfs hdfs 4.0K Sep 12 18:00 subdir8
drwxrwxr-x 34 hdfs hdfs 4.0K Sep 16 22:46 subdir9
drwxrwxr-x 34 hdfs hdfs 4.0K Sep 23 02:45 subdir10
drwxrwxr-x 34 hdfs hdfs 4.0K Sep 28 22:31 subdir11
drwxrwxr-x 34 hdfs hdfs 4.0K Oct  3 19:15 subdir12
drwxrwxr-x 34 hdfs hdfs 4.0K Oct  8 13:30 subdir13
drwxrwxr-x 17 hdfs hdfs 4.0K Oct 12 15:35 .
drwxrwxr-x 34 hdfs hdfs 4.0K Oct 13 04:46 subdir14

cd subdir6

ls -larth 总计 688K

drwxrwxr-x 34 hdfs hdfs 4.0K Sep  2 08:30 .
drwxrwxr-x  2 hdfs hdfs  20K Sep  5 22:35 subdir0
drwxrwxr-x  2 hdfs hdfs  20K Sep  5 22:51 subdir1
drwxrwxr-x  2 hdfs hdfs  20K Sep  5 23:34 subdir2
drwxrwxr-x  2 hdfs hdfs  20K Sep  6 00:28 subdir4
drwxrwxr-x  2 hdfs hdfs  20K Sep  6 00:50 subdir5
drwxrwxr-x  2 hdfs hdfs  20K Sep  6 01:36 subdir6
drwxrwxr-x  2 hdfs hdfs  20K Sep  6 01:50 subdir7
drwxrwxr-x  2 hdfs hdfs  20K Sep  6 02:21 subdir8
drwxrwxr-x  2 hdfs hdfs  20K Sep  6 02:50 subdir9
drwxrwxr-x  2 hdfs hdfs  20K Sep  6 03:19 subdir10
drwxrwxr-x  2 hdfs hdfs  20K Sep  6 03:38 subdir11
drwxrwxr-x  2 hdfs hdfs  20K Sep  6 04:19 subdir12
drwxrwxr-x  2 hdfs hdfs  20K Sep  6 04:38 subdir13
drwxrwxr-x  2 hdfs hdfs  20K Sep  6 05:20 subdir14
drwxrwxr-x  2 hdfs hdfs  20K Sep  6 05:49 subdir15
drwxrwxr-x  2 hdfs hdfs  20K Sep  6 06:19 subdir16
drwxrwxr-x  2 hdfs hdfs  20K Sep  6 07:20 subdir18
drwxrwxr-x  2 hdfs hdfs  20K Sep  6 08:06 subdir20
drwxrwxr-x  2 hdfs hdfs  20K Sep  6 08:24 subdir21
drwxrwxr-x  2 hdfs hdfs  20K Sep  6 08:50 subdir22
drwxrwxr-x  2 hdfs hdfs  20K Sep  6 09:23 subdir23
drwxrwxr-x  2 hdfs hdfs  20K Sep  6 09:39 subdir24
drwxrwxr-x  2 hdfs hdfs  20K Sep  6 10:05 subdir25
drwxrwxr-x  2 hdfs hdfs  20K Sep  6 10:26 subdir26
drwxrwxr-x  2 hdfs hdfs  20K Sep  6 11:02 subdir27
drwxrwxr-x  2 hdfs hdfs  20K Sep  6 11:36 subdir28
drwxrwxr-x  2 hdfs hdfs  20K Sep  6 12:04 subdir29
drwxrwxr-x  2 hdfs hdfs  20K Sep  6 12:24 subdir30
drwxrwxr-x  2 hdfs hdfs  20K Sep  6 12:53 subdir31
drwxrwxr-x  2 hdfs hdfs  20K Sep 10 16:12 subdir17
drwxrwxr-x  2 hdfs hdfs  20K Sep 12 16:13 subdir3
drwxrwxr-x  2 hdfs hdfs  20K Sep 13 16:13 subdir19
drwxrwxr-x 17 hdfs hdfs 4.0K Oct 12 15:35 ..

XXXX/current/finalized/subdir6# cd subdir0 XXXXX/current/finalized/subdir6/subdir0# ls -larth 总计 726M

-rw-rw-r--  1 hdfs hdfs  39K Sep  1 18:35 blk_1074135056_394248.meta
-rw-rw-r--  1 hdfs hdfs 4.8M Sep  1 18:35 blk_1074135056
-rw-rw-r--  1 hdfs hdfs  38K Sep  1 18:36 blk_1074135053_394245.meta
-rw-rw-r--  1 hdfs hdfs 4.8M Sep  1 18:36 blk_1074135053
-rw-rw-r--  1 hdfs hdfs  40K Sep  1 18:36 blk_1074135055_394247.meta
-rw-rw-r--  1 hdfs hdfs 5.0M Sep  1 18:36 blk_1074135055
-rw-rw-r--  1 hdfs hdfs  39K Sep  1 18:36 blk_1074135049_394241.meta
-rw-rw-r--  1 hdfs hdfs 4.9M Sep  1 18:36 blk_1074135049
-rw-rw-r--  1 hdfs hdfs  45K Sep  1 18:38 blk_1074135057_394249.meta
-rw-rw-r--  1 hdfs hdfs 5.6M Sep  1 18:38 blk_1074135057
-rw-rw-r--  1 hdfs hdfs  39K Sep  1 18:47 blk_1074135070_394262.meta
-rw-rw-r--  1 hdfs hdfs 4.8M Sep  1 18:47 blk_1074135070
-rw-rw-r--  1 hdfs hdfs  24K Sep  1 18:47 blk_1074135097_394289.meta
-rw-rw-r--  1 hdfs hdfs 2.9M Sep  1 18:47 blk_1074135097
-rw-rw-r--  1 hdfs hdfs  36K Sep  1 18:49 blk_1074135141_394333.meta
-rw-rw-r--  1 hdfs hdfs 4.5M Sep  1 18:49 blk_1074135141
-rw-rw-r--  1 hdfs hdfs  23K Sep  1 18:49 blk_1074135142_394334.meta
-rw-rw-r--  1 hdfs hdfs 2.9M Sep  1 18:49 blk_1074135142
-rw-rw-r--  1 hdfs hdfs  36K Sep  1 18:49 blk_1074135134_394326.meta
-rw-rw-r--  1 hdfs hdfs 4.5M Sep  1 18:49 blk_1074135134
-rw-rw-r--  1 hdfs hdfs  38K Sep  1 18:50 blk_1074135071_394263.meta

------------------------ 很多很多这样的文件------------ --

-rw-rw-r--  1 hdfs hdfs  37K Sep  5 22:23 blk_1074192610_451802.meta
-rw-rw-r--  1 hdfs hdfs 4.6M Sep  5 22:23 blk_1074192610
-rw-rw-r--  1 hdfs hdfs  37K Sep  5 22:26 blk_1074192592_451784.meta
-rw-rw-r--  1 hdfs hdfs 4.6M Sep  5 22:26 blk_1074192592
-rw-rw-r--  1 hdfs hdfs  44K Sep  5 22:33 blk_1074192633_451825.meta
-rw-rw-r--  1 hdfs hdfs 5.5M Sep  5 22:33 blk_1074192633
  1. 我们可以删除那些文件吗?
  2. 这些文件的用途是什么?

删除这些内容的最佳方法是什么?

非常感谢您提供的信息。我有 运行 命令。

~# hadoop fs -du -h /
136       /hadoop
0         /tmp
1017.5 G  /user


# hadoop fs -du -h /user/spark/
1012.7 G  /user/spark/eventlog

事件日志似乎占用了将近 1TB

:~# hdfs dfsadmin -report
Configured Capacity: 2766820474880 (2.52 TB)
Present Capacity: 2539325628659 (2.31 TB)
DFS Remaining: 331457595322 (308.69 GB)
DFS Used: 2207868033337 (2.01 TB)
DFS Used%: 86.95%
Under replicated blocks: 0
Blocks with corrupt replicas: 0
Missing blocks: 0
Missing blocks (with replication factor 1): 0
Pending deletion blocks: 0
-------------------------------------------------
Live datanodes (7):
Name: XXXXXX
Hostname: XXXXXX-w-0.c.XXXXXXXX
Decommission Status : Normal
Configured Capacity: 395260067840 (368.11 GB)
DFS Used: 328729737718 (306.15 GB)
Non DFS Used: 10792138250 (10.05 GB)
DFS Remaining: 34530736445 (32.16 GB)
DFS Used%: 83.17%
DFS Remaining%: 8.74%
Configured Cache Capacity: 0 (0 B)
Cache Used: 0 (0 B)
Cache Remaining: 0 (0 B)
Cache Used%: 100.00%
Cache Remaining%: 0.00%
Xceivers: 18
Last contact: Wed Oct 14 17:52:46 UTC 2020
Last Block Report: Wed Oct 14 14:32:42 UTC 2020

=============== 以上是修剪后的输出。其余 6 个节点几乎具有相同的磁盘使用率。

  1. 删除事件日志安全吗?我的意思是它会妨碍任何 运行 作业或集群吗?

  2. 我正在运行下面的命令来查找那里有多少文件,我发现它很大。

    ~# hadoop fs -du -h /user/spark/eventlog|wc -l

    236757

所有文件大小都在5~6MB左右。有什么命令可以删除至少 7 天前的匹配文件吗?

您列出的目录被 HDFS 使用,您可以 运行 在主节点上执行以下命令来确定哪些 HDFS 文件正在使用 space:

hdfs dfs -du <dir>
hdfs dfsadmin -report

您可以使用

删除不需要的文件
hdfs dfs -rm -r -f -skipTrash <path>

HDFS commands guide. There are also some nice scripts and tools 中查看更多可能有用的详细信息。

注意 /user/spark/eventlog/tmp/hadoop-yarn/staging/history,它们通常会随着您 运行 更多的工作而增长。

增加 HDFS 容量

在识别和删除不需要的文件之前,为防止 HDFS 运行宁出 space,您可以向集群添加更多工作节点作为缓解措施:

gcloud dataproc clusters update <cluster> --num-workers=<num>

scaling Dataproc clusters 中查看更多详细信息。

Spark 事件日志

如果是Spark事件日志或历史文件引起的,对于live集群,考虑在/etc/spark/conf/spark-defaults.conf中添加这些属性:

spark.history.fs.cleaner.enabled=true
spark.history.fs.cleaner.interval=1d
spark.history.fs.cleaner.maxAge=7d

然后用

重新启动 Spark 历史服务器
sudo systemctl restart spark-history-server.service

它将为您清理旧文件。您可以将间隔更改为较小的值,例如 10m 如果您希望它更频繁地 运行。

对于新集群,添加这些属性

gcloud dataproc clusters create ... \
  --properties spark:spark.history.fs.cleaner.enabled=true,spark:spark.history.fs.cleaner.interval=1d,spark:spark.history.fs.cleaner.maxAge=7d

看到这个 doc on the related Spark configs. BTW, you can view Spark job history in Dataproc web UI,清理一些旧的历史文件后,您应该会看到更少的项目。