【问题标题】:Spark - No disk space left on Topic modellingSpark - 主题建模没有剩余磁盘空间
【发布时间】:2019-04-27 16:51:40
【问题描述】:

我在具有 64GB RAM、32 个内核和 500GB 磁盘空间的系统上运行 Jupyter notebook。

大约 700k 文档将被建模为 600 个主题。词汇量为48000字。使用了 100 次迭代。

spark = SparkSession.builder.appName('LDA').master("local[*]").config("spark.local.dir", "/data/Data/allYears/tempAll").config("spark.driver.memory","50g").config("spark.executor.memory","50g").getOrCreate()

dataset = spark.read.format("libsvm").load("libsm_file.txt")

lda = LDA(k=600, maxIter=100 ,  optimizer='em' , seed=2 )

lda.setDocConcentration([1.01])
lda.setTopicConcentration(1.001)
model = lda.fit(dataset)

运行 10 小时后出现磁盘配额超出错误

【问题讨论】:

  • 请不要在这里使用印度测量值。其他人只会对什么是“十万份文件”感到困惑。

标签: apache-spark jupyter-notebook apache-spark-mllib apache-spark-ml apache-spark-2.3


【解决方案1】:

您提到您遇到的错误消息表明已超出磁盘配额。我怀疑 Spark 正在将数据洗牌到磁盘并且磁盘空间不足。

为了缓解这种情况,您应该尝试将--conf spark.local.dir=<path to disk with space> 显式传递给具有足够空间的位置。此参数指定 Spark 将用于将临时数据写入磁盘的路径(例如,在作业的各个阶段之间写入 shuffle 数据时)。即使您的输入和输出数据不是特别大,某些算法也可以生成非常大量的 shuffle 数据。

您还可以考虑在运行作业时使用du 监控此路径的已分配/可用空间,以获取有关正在写入多少中间数据的更多信息。这将确认大量 shuffle 数据耗尽可用磁盘空间是问题所在。

【讨论】:

  • 我曾尝试使用指向空闲磁盘的路径(大约 500 GB 的空间)运行 spark 我不确定为什么它会生成这么多临时文件以超过给定的空间,因为词汇量大约是仅 48000 字,要找到的主题就有 600 个
  • 尝试在您的作业执行时监控磁盘空间——这样,您可以看到 shuffle 数据占用了多少磁盘空间。值得一提的是,我最近运行了一项工作,该工作以 ~200GB 的输入开始,创建了 ~2GB 的输出,并生成了 78TB 的 shuffle 数据。它依赖于算法,因此在执行时监控您的磁盘空间将确认这是问题所在。
  • @adihere 您最终找到解决问题的方法了吗?
猜你喜欢
  • 2011-01-13
  • 1970-01-01
  • 1970-01-01
  • 2017-03-31
  • 1970-01-01
  • 2020-01-14
  • 1970-01-01
  • 2020-11-28
  • 1970-01-01
相关资源
最近更新 更多