我有一个在 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"