繁体   English   中英

当更多内核使用 Spark (Sparklyr) 错误打开许多文件时

[英]when more cores used Spark (Sparklyr) error to many files open

我在本地模式下在 Sparklyr 上使用以下配置:

conf <- spark_config()
conf$`sparklyr.cores.local` <- 28
conf$`sparklyr.shell.driver-memory` <- "1000G"
conf$spark.memory.fraction <- 0.9

sc <- spark_connect(master = "local", 
                version = "2.1.1",
                config = conf)

当我使用 spark_read_csv 读取 csv 时,这很好用。 但是,当我使用更多内核时,例如

conf <- spark_config()
conf$`sparklyr.cores.local` <- 30
conf$`sparklyr.shell.driver-memory` <- "1000G"
conf$spark.memory.fraction <- 0.9

我收到以下错误:

值 [3L] 中的块引用错误:无法获取数据:org.apache.spark.SparkException:由于阶段失败而中止作业:阶段 3.0 中的任务 10 失败 1 次,最近失败:阶段 3.0 中丢失任务 10.0(TID 132) , localhost, executor driver): java.io.FileNotFoundException: /tmp/blockmgr-9ded7dfb-20b8- 4c72-8a6f-2db12ba884fb/1f/temp_shuffle_e69d56ba-80b4-499f-a91f- 55o363 文件 (java.io.FileNotFoundException) (java.5o363) FileOutputStream.open0(Native Method) at java.io.FileOutputStream.open(FileOutputStream.java:270) at java.io.FileOutputStream.(FileOutputStream.java:213) at org.apache.spark.storage.DiskBlockObjectWriter.initialize(DiskBlockObjectWriter) .scala:102) 在 org.apache.spark.storage.DiskBlockObjectWriter.open(DiskBlockObjectWriter.scala:115) 在 org.apache.spark.storage.DiskBlockObjectWriter.write(DiskBlockObjectWriter.scala:235) 在 org.apache.spark。 shuffle.sort.BypassMergeSortShuffleWriter.write(BypassMergeSortShuffleWriter.java:152) 在 org.apache.spark.scheduler.ShuffleMapTask.runTask (洗牌马

我将 ulimit 从 1040(软和硬)增加到 419430,这没有任何区别。

我的 VM 有 128 个内核和 2T 内存,我希望能够使用所有这些内核。

有什么建议?

Spark local模式用于小批量实验和单元测试,不适用于生产用途,系统限制问题只是冰山一角。 它在单个 JVM 中运行,您可能会预期仅在内存管理方面就会出现许多不同的问题。

总体而言,Spark 是为横向扩展而不是纵向扩展而设计的。 在本地模式下增加资源时,您不应该期望性能提升和无痛操作。 此外,如果计算资源没有高吞吐量磁盘配置的支持,您的资源将得不到充分利用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM