How to dump heap to s3 using HeapDumpOnOutOfMemoryError in spark?

问题描述 投票:0回答:1

我正在尝试使用 spark(EMR) 将堆文件转储到 s3 存储桶

new SparkConf().set("spark.driver.extraJavaOptions", "-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=s3://my-bucket/logs/heapDumps/executor/my_heap_dump.hprof")

然而出现以下错误日志。

Dumping heap to s3://my-bucket/logs/heapDumps/executor/my_heap_dump.hprof ...
Unable to create s3://my-bucket/logs/heapDumps/executor/my_heap_dump.hprof: No such file or directory

spark.driver.extraJavaOptions 是否接受 s3 存储桶位置作为有效参数?我试图将它保存在本地目录中,但它看起来很乏味,因为 masterNode 没有公开打开,我必须访问执行程序正在运行的 EC2。我也在用 EMR,所以如果我能利用这些 AWS 服务就更好了

我想知道是否有办法将堆日志直接从 EMR 转储到 s3 存储桶。

仅供参考,我已经创建了 s3 存储桶

my-bucket/logs/heapDumps/executor

apache-spark heap-memory amazon-emr oom
1个回答
0
投票

spark.driver.extraJavaOptions 是否接受 s3 存储桶位置作为有效参数?

问题实际上是“XX:HeapDumpPath 是否接受 s3 存储桶位置作为有效参数?”

不,除非它以某种方式挂载为 linux 文件系统。用于读取/写入数据的纯 Java API 与本地 FS 和安装在那里的东西(nfs 驱动器等)通信。这与 spark、hive 等可以使用的文件系统完全不同,它们通过文件系统客户端类连接到文件系统,这些类必须在类路径上并配置了绑定和身份验证信息m

© www.soinside.com 2019 - 2024. All rights reserved.