我在Beowulf计算群集上运行R脚本,只要脚本在其中一个计算节点上运行,它就会生成一个空白PNG。在头节点上运行可以正常工作。
为了尝试诊断问题,我将我的脚本删除了:
#!/usr/bin/env Rscript
the_plot <- function()
{
x <- seq(0, 1, length.out = 100)
y <- pbeta(x, 1, 10)
plot(
x,
y,
xlab = "False Positive Rate",
ylab = "Average true positive rate",
type = "l"
)
}
png(file='plot_test.png', width=400, height=300, type='cairo')
par(family='sans', cex=1, mar=c(5,5,1,1))
the_plot()
dev.off()
当我在头节点上运行它时,它会生成曲线,轴和标签。在计算节点上,标签不会出现,因此可能是字体问题。
答案 0 :(得分:1)
我之前遇到过相同症状的问题,加上这样的错误信息:
Fontconfig错误:无法加载默认配置文件
我在stata.com's support page上发现了错误,我通过将/etc/fonts
映射到计算节点来摆脱它。错误消息消失了,但是这些图仍然是空白的,所以可能还有另一个文件夹仍然需要映射。
我安装了strace
并跟踪了在头节点上成功运行脚本时正在加载的文件。我还在计算节点上运行失败时跟踪。
strace -r -o strace.txt ./plot_test.R
bpsh 0 strace -r -o strace_n0.txt ./plot_test.R
清除文件中的大量噪音并比较两者之后,我发现脚本正在加载/usr/lib64/libcairo.so.2
,/usr/share/fonts
和/var/cache/fontconfig
。这些都没有映射到计算节点。
将文件夹映射到计算节点由/etc/exports
和/etc/beowulf/fstab
控制,如Scyld documentation中所述。映射完所有这些文件夹后,这些图表都有效。