无法在 Beowulf 集群上正确运行个人作业。示例作业工作正常

Posted

技术标签:

【中文标题】无法在 Beowulf 集群上正确运行个人作业。示例作业工作正常【英文标题】:Unable to correctly run a personal job on the Beowulf cluster. Example job works fine 【发布时间】:2018-02-20 05:40:04 【问题描述】:

我最近使用一个主节点和两个客户端节点建立了一个 Beowulf 集群。客户端节点都共享主节点的/home/mpiuser/ 目录,并在主节点上更改目录时自动更新。我已经成功运行了使用以下命令下载 MPICH2 时给出的示例编译 cpi 文件

$ mpiexec -f hosts -n 3 /home/mpiuser/mpich2-1.4.1/examples/cpi

给出以下输出

Process 0 of 3 is on Master
Process 2 of 3 is on Slave2
Process 1 of 3 is on Slave1
pi is approximately 3.1415926544231318, Error is 0.0000000008333387
wall clock time = 0.001477

然后,当我尝试运行我在此处创建的 python 文件时:/home/mpiuser/Development/fact_test.py,使用此命令

$ mpiexec -f hosts -n 3 /home/mpiuser/Development/fact_test.py

我收到以下错误

[proxy:0:0@Master] HYDU_create_process (./utils/launch/launch.c:69): execvp error on file /home/mpiuser/Development/fact_test.py (Permission denied)
[proxy:0:1@Slave1] HYDU_create_process (./utils/launch/launch.c:69): execvp error on file /home/mpiuser/Development/fact_test.py (Permission denied)
[proxy:0:2@Slave2] HYDU_create_process (./utils/launch/launch.c:69): execvp error on file /home/mpiuser/Development/fact_test.py (Permission denied)

此外,我还可以通过这个输入和输出正确地获取主节点和客户端节点的名称:

$ mpirun --machinefile hosts hostname
Master
Slave1
Slave2

我不太确定错误来自哪里。一些附加信息: MPICH2 版本:1.4.1 Python版本:3.5.2

fact_test.py:

import scipy as sp
import time

def factorial_func(i):
    return sp.math.factorial(i)

if __name__ == "__main__":
    i = 1e5
    t0 = time.time()
    fac = factorial_func(i)
    t1 = time.time()
    print(t1-t0)

如果您需要更多信息,我很乐意提供。谢谢!

【问题讨论】:

【参考方案1】:

你能在你的登录节点上运行/home/mpiuser/Development/fact_test.py吗?

我对此表示怀疑,因为 - 没有神奇的头文件来使用 python 解释器 - 该文件可能无法执行

一个选项是在文件的最开头添加

#!/usr/bin/python

然后

chmod 755 /home/mpiuser/Development/fact_test.py

其他选项是手动使用python解释器,你的mpiexec命令会变成

mpiexec -f hosts -n 3 python /home/mpiuser/Development/fact_test.py

【讨论】:

谢谢,这解决了问题!

以上是关于无法在 Beowulf 集群上正确运行个人作业。示例作业工作正常的主要内容,如果未能解决你的问题,请参考以下文章

自动设置 Dataproc 集群后 Yarn/Spark 的内存分配不正确

我无法让 Pulsar 集群正确重启

Spring Batch 在集群环境中正确重启未完成的作业

关于在集群 (AWS) 上运行 Spark 作业的说明

在 Yarn 集群上运行 Spark 作业的问题

在远程集群上运行 Flink 作业而不提供 .jar