如何在spark中使用HeapDumpOnOutOfMemoryError将堆转储到s3?

x33g5p2x  于 2023-03-03  发布在  Apache
关注(0)|答案(1)|浏览(184)

我尝试使用以下命令将堆文件从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 bucket location作为有效参数?我尝试将其保存在本地目录中,但似乎很麻烦,因为masterNode不是公开打开的,我必须访问执行器正在运行的EC2。我还使用EMR,因此如果能够利用这些AWS服务会更好
我想知道是否有一种方法可以直接将堆日志从EMR转储到s3存储桶。
仅供参考,我已经创建了s3存储区my-bucket/logs/heapDumps/executor

4xrmg8kj

4xrmg8kj1#

spark.driver.extraJavaOptions是否接受s3存储桶位置作为有效参数?
问题实际上是“XX:HeapDumpPath是否接受s3存储桶位置作为有效参数?”
不,除非它以某种方式挂载为Linux文件系统。用于阅读/写数据的纯Java API与本地文件系统和挂载在那里的东西(nfs驱动器等)对话。这与spark、hive等可以使用的文件系统完全不同,它们通过文件系统客户端类连接到这些文件系统,这些客户端类必须位于类路径上,并配置有绑定和身份验证信息。

相关问题