我在本地模式下在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,执行程序 driver):java.io.FileNotFoundException:/ tmp / blockmgr-9ded7dfb-20b8- 4c72-8a6f-2db12ba884fb / 1F / temp_shuffle_e69d56ba-80b4-499f-a91f- 0ae63fe4553f(打开文件太多) at java.io.FileOutputStream.open0(Native Method) 在java.io.FileOutputStream.open(FileOutputStream.java:270) 在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(ShuffleMa
我从1040(软和硬)增加ulimit到419430,这没有任何区别。
我的VM有128个核心和2T内存,我希望能够全部使用它。
有什么建议吗?
答案 0 :(得分:1)
Spark local
模式适用于小批量实验和单元测试,不适用于生产使用,系统限制问题只是冰山一角。它在单个JVM中运行,您可能会在内存管理方面遇到很多不同的问题。
整体Spark旨在扩展而不是扩展。在本地模式下增加资源时,您不应期望性能提升和无痛操作。此外,如果计算资源不支持高吞吐量磁盘配置,则您的资源将未得到充分利用。