Spark 流式处理作业不会删除随机播放文件



我有一个在 EMR 上运行的 Spark 流作业,从 Kafka 读取消息并输出到 S3。

我使用 emr-5.17.0,即 hadoop 2.8.4,火花 2.3.1

问题是随机文件正在累积在:/mnt/yarn/usercache/hadoop/appcache/application_1540126328960_0001/

并且永远不会被删除,直到我用完磁盘上的空间

这些文件看起来像:shuffle_328_127_0.index,shuffle_328_134_0.data

我确实尝试像这样更新 Yarn 的政策: yarn.nodemanager.localizer.cache.cleanup.interval-ms 300000 yarn.nodemanager.localizer.cache.target-size-mb 5000

但这并没有解决问题。

目前,我会自动重新启动作业并每隔几个小时启动一个新作业,当应用程序停止时,它会删除缓存

我该怎么做才能让纱线删除缓存文件?

谢谢

我有一个 cron 作业(每小时(清理超过 6 小时的文件/目录以修复磁盘空间不足问题,我在 Spark/Yarn 中找不到可以自动执行此操作的参数,以下是详细信息。

crontab 条目。

0 * * * * /home/hadoop/clean_appcache.sh >/dev/null 2>&1

clean_appcache.sh

#!/bin/bash
BASE_LOC=/mnt/yarn/usercache/hadoop/appcache
sudo find $BASE_LOC/ -mmin +360 -exec rmdir {} ;
sudo find $BASE_LOC/ -mmin +360 -exec rm {} ;

禁用动态分配。执行者在执行所有清理之前被杀死。如果执行者没有经常被杀死/创建,泄漏就会消失。

为此,请在 Spark-submit 命令中:

--conf "spark.dynamicAllocation.enabled=false"

最新更新