- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在 GCP Dataproc 集群上运行一个 spark 作业,该集群配置有 1 个主节点、2 个主要工作节点(4 个本地 SSD,每个用于 shuffling )和 N 个辅助工作节点(没有任何 SSD)。
我的工作按每日分批处理数据,因此我希望临时数据(洗牌、检查点等)在一天的过程中增长,并在第二天开始前清理干净。
但是,当我运行该作业几天(例如 15-20 天)时,它最终失败并出现关于 yarn 的磁盘空间不足的错误(我不记得确切的错误消息)。
Dataproc GCP 控制台显示此图,您可以在其中看到 HDFS 容量单调减少,而其他指标显示与批处理启动/停止相关的循环上下。
我登录了一名主要工作人员以调查 SSD 的使用情况,因为我记得错误消息提到了 /mnt/{1,2,3,4}
,这是固态硬盘。
$ df -h
[...]
/dev/sdb 369G 178G 172G 51% /mnt/1
/dev/sdc 369G 178G 173G 51% /mnt/2
/dev/sdd 369G 179G 171G 52% /mnt/3
/dev/sde 369G 174G 176G 50% /mnt/4
[...]
而且磁盘使用率不断增加(在我写这篇文章之前是 43%)。进一步挖掘将我带到以下目录:
$ pwd
/mnt/1/hadoop/yarn/nm-local-dir/application_1622441105718_0001
$ du -sh .
178G .
$ ls
00 03 06 09 0c 0f 12 15 18 1b 1e 21 24 27 2a 2d 30 33 36 39 3c 3f
01 04 07 0a 0d 10 13 16 19 1c 1f 22 25 28 2b 2e 31 34 37 3a 3d
02 05 08 0b 0e 11 14 17 1a 1d 20 23 26 29 2c 2f 32 35 38 3b 3e
所有这些文件夹都包含名为 shuffle_NN_NNNN_0.{index,data}
的文件。论文文件很多:目前有38577个。
我想这些文件是临时数据,但为什么每次批处理后都没有删除它们?我可以在不中断工作的情况下手动删除它们吗(find . -type f -mmin -120 -delete
删除所有超过 120 分钟的文件(我的批处理大约 60 分钟))?有没有好的方法来管理这些文件?
实际上,我测试过删除旧文件,比如:
for I in $(seq 1 4); do
( cd /mnt/${I}/hadoop/yarn/nm-local-dir/application_* && sudo find . -type f ! -newerat 2021-05-31T12:00:00 -delete )
done
我的工作仍在运行,似乎没有注意到任何事情,但我将磁盘使用率降低到 16%(而不是 54%)。这是一个手动解决方案,我仍在寻找更好的解决方案。
在 answer 之后更精确一些来自@Ben Sidhom。
我以批处理模式使用 Spark。 “标称”用例是每天早上处理最后一天的数据。因此,每天 D,我都会启动一个 Spark 作业来读取 D-1 天的数据,对其进行转换并保存生成的数据集。这个过程大约花费 1 小时,在这种情况下,我没有注意到任何数据泄漏。
然而,有时候,我们需要做一些追赶。例如,我实现了一项新的转换工作,需要在前一年的每一天应用它(以填充一些历史数据)。在这种情况下,我没有启动 365 个单独的 spark 作业,而是启动了 1 个,它将每天按顺序处理。现在,工作时间更长了,而且数据泄露时有发生。大约 15 小时后(即处理 15 天的数据后)作业失败,因为设备上没有剩余空间。
禁用EFM似乎不是一个好的解决方案,因为实际上它在这种长时间运行的作业上带来了最大的值(value),避免了因为抢占节点丢失而导致作业失败。
所以目前,我会坚持使用手动解决方案。请注意,删除命令应在所有主节点上完成。
再进行一次编辑以展示我的“生产级”解决方案。
创建集群后。通过 ssh 连接到您的每个主要工作人员,然后启动一个屏幕
并运行一个无限循环,每 600 秒删除一次旧文件(在下面的示例中超过 120 分钟):
$ screen -RD
<new screen created>
$ while true; do
date --iso-8601=seconds
for I in $(seq 1 4); do
( cd /mnt/${I}/hadoop/yarn/nm-local-dir/application_* && sudo find . -type f -amin +120 -delete )
done
df -h | grep /mnt/
sleep 600
done
当此命令正在运行时,将您自己从屏幕上移开 (Ctrl+A D
)。您可以使用 htop
检查您的命令是否仍在运行。
就是这样。
最佳答案
存在一个已知问题,即此中间洗牌数据可能会泄露。在此期间可能的解决方法是:
您能否说明您使用的是哪种 Spark 模式?这是一个重复运行的批处理作业,还是一个长时间运行的小批量流作业?如果是后者,Spark cleanup hook 可能只在作业结束时发出,这可以解释泄漏。
更新:随机播放数据泄漏问题自 July 20, 2021 release 以来已得到修复.
关于apache-spark - 如何保持 Dataproc Yarn nm-local-dir 大小可管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67774699/
YARN 中的 yarn-site.xml 与 yarn-default.xml 有什么区别?看起来yarn-default.xml 在Hadoop 2.2 中已被弃用? 最佳答案 在所有 Hadoo
我们有一个在 yarn 上运行的流媒体应用程序,我们希望确保它 24/7 全天候运行。 有没有办法告诉 yarn 在失败时自动重启特定的应用程序? 最佳答案 你试过了吗Hadoop Yarn - Re
我在根队列下有 4 个队列,配置如下。 |-------------|-----------------|---------------------|-------------------| | Qu
我正在使用 YARN(和 Dask)版本 Hadoop 2.7.3-amzn-1 在 AWS EMR 上构建应用程序。我正在尝试测试各种故障场景,并且我想模拟容器故障。我似乎找不到一种简单的方法来杀死
我想创建一个 cron 来通过它的应用程序名称杀死一个 yarn 应用程序(Spark)。但我发现 yarn 应用程序 -kill 需要一个应用程序 ID。是否有解决方案可以通过应用程序名称杀死它,或
我正在尝试从此链接运行通用入门套件:https://github.com/ng-seed/universal即使我按照步骤安装了 Yarn,当我运行命令来运行服务器时,它给了我以下错误: 错误:找不到
我正在尝试 YARN 2.2 中的分布式 Shell 示例,希望有人能澄清托管和非托管应用程序管理器之间的区别是什么? 例如以下几行出现在客户端代码中 // unmanaged AM appConte
我有一个像这样的工作区项目: /project - package.json /packages /project-a package.json
这两个到底做什么用,在哪里使用它们? yarn 安装 yarn 构建 最佳答案 简而言之,yarn install 是用于安装项目所有依赖项的命令,通常在 package.json 文件中分配。在大多
所以,到目前为止,似乎没有 yarn audit --fix ,所以我想弄清楚如何修复我的 yarn audit错误。 我试过 yarn upgrade它修复了一些错误(这很好),但仍然存在一些错误。
我正在使用一个使用 yarn 的 dockerized pyspark 集群。为了提高数据处理管道的效率,我想增加分配给 pyspark 执行程序和驱动程序的内存量。 这是通过将以下两个键值对添加到
我尝试重新安装yarn,但重新安装后发现这个问题,我尝试搜索互联网但没有找到解决方案。 fiii@neo:~$ yarn --version node:internal/modules/cjs/loa
我正在试验2号纱和植面。 我创建了一个新文件夹:/projects/yarn2/根据他们的安装指南https://yarnpkg.com/getting-started我跑了 cd /projects
我是hadoop和YARN的新手。启动hdfs之后,我使用软件包中提供的start-yarn.sh启动YARN并出现错误。 我在Ubuntu 18.04上使用hadoop 3.2.0,jdk-11。
Apache Spark最近更新了版本至0.8.1,新增了yarn-client模式。我的问题是,yarn-client 模式的真正含义是什么?在文档中它说: With yarn-client mod
我们有一个在 HDFS 2.7.3 上运行的 Spark 流应用程序,使用 Yarn 作为资源管理器....在运行应用程序时......这两个文件夹 /tmp/hadoop/data/nm-local
我的机器上的 yarn 命令有问题。我的机器上安装了 hadoop 和 yarn 包管理器(Javascript)。当我运行 yarn init 时,它调用 hadoop 的 YARN 并响应: Er
我正在尝试运行此处列出的简单 yarn 应用程序:https://github.com/hortonworks/simple-yarn-app 我是 Java 和 Hadoop 的初学者,当我尝试使用
我正在尝试使用 YARN node labels标记工作节点,但是当我在 YARN(Spark 或简单的 YARN 应用程序)上运行应用程序时,这些应用程序无法启动。 使用 Spark,指定 --co
我一直只使用 npm 而从不显式使用 yarn/webpack。我需要从这个 repo 运行代码: https://github.com/looker-open-source/custom_visua
我是一名优秀的程序员,十分优秀!