【发布时间】:2017-12-06 21:05:45
【问题描述】:
在sparklyr 中运行一个简单查询后,我得到了java.io.IOException: No space left on device。我使用Spark (2.1.1) 和Sparklyr 的最新版本
df_new <-spark_read_parquet(sc, "/mypath/parquet_*", name = "df_new", memory = FALSE)
myquery <- df_new %>% group_by(text) %>% summarize(mycount = n()) %>%
arrange(desc(mycount)) %>% head(10)
#this FAILS
get_result <- collect(myquery)
我都设置了
spark.local.dir <- "/mypath/"spark.worker.dir <- "/mypath/"
正常使用
config <- spark_config()
config$`spark.executor.memory` <- "100GB"
config$`spark.executor.cores` <- "3"
config$`spark.local.dir` <- "/mypath/"
config$`spark.worker.dir` <- "mypath/"
config$`spark.cores.max`<- "2000"
config$`spark.default.parallelism`<- "4"
config$`spark.total-executor-cores`<- "80"
config$`sparklyr.shell.driver-memory` <- "100G"
config$`sparklyr.shell.executor-memory` <- "100G"
config$`spark.yarn.executor.memoryOverhead` <- "100G"
config$`sparklyr.shell.num-executors` <- "90"
config$`spark.memory.fraction` <- "0.2"
Sys.setenv(SPARK_HOME="mysparkpath")
sc <- spark_connect(master = "spark://mynode", config = config)
mypath 的磁盘空间超过 5TB(我可以在Environment 选项卡中看到这些选项)。我在Pyspark 中尝试了类似的命令,但以同样的方式失败(同样的错误)。
通过查看Spark 中的Stages 选项卡,我发现当shuffle write 大约为60 GB 时会发生错误。 (输入大约是200GB)。考虑到我有足够的可用空间,这令人费解。我已经看过其他 SO 解决方案了......
集群作业用magpie启动 https://github.com/LLNL/magpie/blob/master/submission-scripts/script-sbatch-srun/magpie.sbatch-srun-spark
每次我启动 Spark 作业时,我都会在我的 /mypath 文件夹中看到一个名为 spark-abcd-random_numbers 的目录。但是那里的文件非常小(远不及 60GB 随机写入)
- 大约有 40 个镶木地板文件。每个都是
700K(原始csv文件为 100GB)它们本质上包含字符串。 - 集群有 10 个节点,每个节点有 120GB RAM 和 20 个内核。
这里有什么问题? 谢谢!!
【问题讨论】:
-
您能否提供您正在使用的 spark 命令来显示什么是主模式和部署模式。这对您的情况很有帮助
-
我正在寻找您发出的
spark-submit命令,但我看到您正在使用其他方法来启动您的应用程序。所以问题变成了:你是如何设置spark.local.dir和spark.worker.dir属性的?您可以访问集群的 spark 配置文件吗? -
您可以在作业运行时使用手表“df -u”检查哪个磁盘已满?是根卷吗?然后我会检查什么样的文件正在填充它
-
@Noobie,关键是要找出哪个磁盘已满以及原因。 watch 命令通常会每隔一段时间执行一次子命令(默认每 2 秒一次,你可以控制它...)
-
@Noobie,我唯一的想法 - 也许你正在使用 sparkR shell 或其他东西(?我没有使用它)并且你把你的应用程序放在这个 shell 中,所以真正有效的是配置 shell 而不是你提供的 spark 配置...你已经得到了重启机器的建议,但是如果你有 spark-slave 进程(CoarseGrained 的东西,尝试用 ps -ef 查找) - 你可以先重启它.我们已经讨论过 dir - 您使用的是 spark 本地上下文吗?它是您唯一使用的机器吗?
标签: r apache-spark pyspark sparklyr