首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何停止Spark Structured填充HDFS

如何停止Spark Structured填充HDFS
EN

Stack Overflow用户
提问于 2019-03-13 22:16:58
回答 2查看 642关注 0票数 0

我有一个在AWS EMR上运行的Spark Structured Streaming任务,它本质上是在一分钟的时间窗口内连接两个输入流。输入流有1分钟的水印。我不做任何聚合。我“手动”将结果写入S3,每个批处理都有一个forEachBatch和一个foreachPartition,用于将数据转换为字符串并写入S3。

我想运行很长一段时间,也就是“永远”,但不幸的是,Spark慢慢地填满了我集群上的HDFS存储,并最终因此而死亡。

似乎有两种类型的数据会累积。登录/var.delta,在/mnt/tmp/.../中登录.snapshot文件。当我使用CTRL+C终止任务时(或者在使用带有yarn application killyarn的情况下),它们也不会被删除,我必须手动删除它们。

我使用spark-submit运行我的任务。我试着添加

代码语言:javascript
复制
--conf spark.streaming.ui.retainedBatches=100 \
--conf spark.streaming.stopGracefullyOnShutdown=true \
--conf spark.cleaner.referenceTracking.cleanCheckpoints=true \
--conf spark.cleaner.periodicGC.interval=15min \
--conf spark.rdd.compress=true

没有效果。当我添加--master yarn时,存储临时文件的路径会有一些变化,但随着时间的推移,临时文件会累积的问题仍然存在。添加--deploy-mode cluster似乎会使问题变得更糟,因为似乎要写入更多的数据。

我曾经在我的代码中有一个Trigger.ProcessingTime("15 seconds),但我删除了它,因为我读到如果触发时间与计算时间相比太短,Spark可能无法自我清理。这似乎有一点帮助,HDFS填充速度较慢,但临时文件仍在堆积。

如果我不加入这两个流,而只是在这两个流上执行select并将结果写入union,则不会发生cruft int /mnt/tmp的累积。会不会是我的集群对于输入数据来说太小了?

我想了解Spark为什么要写这些临时文件,以及如何限制它们消耗的空间。我还想知道如何限制日志消耗的空间量。

EN

回答 2

Stack Overflow用户

发布于 2019-04-15 19:59:49

由于https://issues.apache.org/jira/browse/SPARK-22783,Spark用日志填充了硬盘文件系统

需要设置spark.eventLog.enabled=false,这样就不会创建日志。

票数 0
EN

Stack Overflow用户

发布于 2020-07-09 01:55:38

除了@adrianN的回答之外,在电子病历方面,他们还在HDFS上保留应用程序日志-请参阅https://aws.amazon.com/premiumsupport/knowledge-center/core-node-emr-cluster-disk-space/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55144056

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档