小编Ste*_*erg的帖子

缓冲区/缓存耗尽 Docker 容器内的独立 Spark

当 Spark 在 Docker 容器内以独立模式运行时,我遇到了一个非常奇怪的内存问题(这是很多人最有可能会说的;-))。我们的设置如下:我们有一个 Docker 容器,其中有一个以独立模式运行 Spark 的 Spring boot 应用程序。这个 Spring boot 应用程序还包含一些计划任务(由 Spring 管理)。这些任务会触发 Spark 作业。Spark 作业会抓取 SQL 数据库,对数据进行一些混洗,然后将结果写入不同的 SQL 表(写入结果不经过 Spark)。我们当前的数据集非常小(表包含几百万行)。

问题在于,运行 Docker 容器的 Docker 主机(CentOS VM)在一段时间后会因为内存耗尽而崩溃。我目前将 Spark 内存使用限制为 512M(我已经设置了执行程序和驱动程序内存),并且在 Spark UI 中我可以看到最大的作业仅占用大约 10 MB 的内存。我知道 Spark 在拥有 8GB 或更多可用内存时运行效果最佳。我也尝试过,但结果是一样的。

进一步挖掘后,我注意到 Spark 耗尽了机器上的所有缓冲区/缓存内存。通过强制 Linux 删除缓存(echo 2 > /proc/sys/vm/drop_caches)(清除目录项和 inode)来手动清除此内容后,缓存使用率大幅下降,但如果我不继续定期执行此操作,我会发现缓存使用率缓慢上升,直到缓冲区/缓存中的所有内存都被使用。

有谁知道我可能做错了什么/这里发生了什么?

非常感谢您的帮助!

docker apache-spark apache-spark-sql apache-spark-standalone

5
推荐指数
0
解决办法
430
查看次数

IntelliJ的嵌入式终端无法正确加载我的鱼壳配置

IntelliJ中的“我的鱼”配置无法正确加载,我看到有关路径设置不正确的警告。

set: Warning: $PATH entry ... set: Did you mean 'set PATH $PATH ...

因此,IntelliJ似乎确实能够拾取我的Fish配置文件,该文件位于〜/ .config / fish / config.fish`中。

intellij-idea fish

3
推荐指数
1
解决办法
168
查看次数