1

我在具有 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 小时后出现磁盘配额超出错误

4

1 回答 1

1

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

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

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

于 2019-04-28T01:21:48.843 回答