1

我在集群模式下配置 MPJ Express 时遇到问题。

我正在遵循 http://mpj-express.org/docs/guides/linuxguide.pdf提供的指南

环境变量成功初始化为

1) 设置 MPJ_HOME 和 PATH 变量

一个。 导出 MPJ_HOME=/path/to/mpj/

湾。 导出 PATH=$PATH:$MPJ_HOME/bin

2)机器也成功添加,机器文件为

mpjboot 机器

它显示消息开始 mpjd...

3) 下一步是通过以下方式测试 HelloWolrd 程序

编译:javac -cp .:$MPJ_HOME/lib/mpj.jar HelloWorld.java
10. 执行:mpjrun.sh -np 2 –dev niodev HelloWorld

当我这样做时,我得到了这个错误

runtime.MPJRuntimeException:无法连接到机器和端口 <10000> 的守护进程

我使用的平台是

  • 带有 Solaris 10 操作系统的 Sun Ultra 25 工作站
  • 我已经制作了一个由 2 台机器组成的快速以太网集群
  • 在每台机器上使用 root 用户启用 ssh
  • 网络建立良好

任何帮助或解决方案表示赞赏..

谢谢你

4

2 回答 2

1

检查集群节点环境变量。

尝试.bashrc在每个集群节点中添加 vars(从主节点 ssh 到它):

echo 'export MPJ_HOME=/home/<user>/path/to/mpj' >> ~/.bashrc
echo 'export PATH=$PATH:$MPJ_HOME/bin' >> ~/.bashrc

或者,打开日志记录/conf/wrapper.conf、运行并报告您的发现。

于 2013-03-28T20:58:38.793 回答
1

这是我第一次在 stackOverflow 中给出答案。我用jdk1.6.0_32在我的centos6.3中设置了MPJExpress-v0_42,最后一切似乎都OK了。

问题1:无法连接到机器和端口的守护进程

守护程序未运行时可能会发生这种情况。您可以尝试如下:

  1. 您可以使用它sudo netstat -anp |grep port来检查端口是否正在侦听并获取 processId。
  2. 在我的机器上,使用 启动守护程序后mpjdaemon -boot localhost,我使用sudo netstat -apn |grep 4000命令检查端口并得到以下信息。

    tcp        0      0 :::40000                    :::*                        LISTEN      8766/java           
    tcp        0      0 :::40001                    :::*                        LISTEN      8766/java
    

    端口配置在里面$MPJ_HOME/conf/wrap.conf,我的配置如下:

    #port number for the daemon.
    wrapper.app.parameter.2=40001
    #Socket Server Port Number.
    wrapper.app.parameter.3=40000
    
  3. 我也是用jps -m命令获取java daemon进程,结果如下:

    8766 MPJDaemon 40001
    30850 Jps -m
    

    这里8766netstat显示的processId,MPJDaemon是守护进程,40001是监听端口。

在您的问题中,您无法连接守护进程。执行以下操作:

  1. 你应该检查端口。如果找不到使用的端口netstat,一般是指MPJDaemon is not running.
  2. 可以肯定的是,您也可以使用 jps 来检查进程。也许进程正在运行,但端口是另一个
  3. 不要使用mpjboot machines或之类的集群命令mpjrun.sh -np 2 -dev niodev HelloWorld。您可以使用mpjdaemon -boot localhost测试当前机器,如果它配置好,您可以使用一项设置机器文件localhost并运行集群命令。

我遇到的其他问题。

问题2:使用ant编译失败

起初我使用MPJ-v0_44.zipand jdk1.6.0,但它无法编译并给出错误 that ProcessBuilder has no method of "interNIO"(something like that)。我分析了源代码,猜测可能是因为JDK版本低了一点。鉴于升级 JDK 有点复杂,我找到了另一个 MPJ 版本,mpj-v0_42.zip它编译正常。

问题 3:mpjdaemon -boot localhost没有错误信息,但 MPJDeamon 没有运行。

在我配置了MPJ_HOMEfrom .bash_profileto这样的环境变量后.bashrc,问题就解决了。我不知道为什么。

问题 4:命令jps -m说“MPJDeamon is running”,但mpjdaemon -status localhost说“mpjdeamon is not running”。

我使用命令(ssh localhost nohup 'jps -m'),它说jps找不到命令,但我使用 jps 命令工作正常。我想可能是和上面一样的问题。jps的路径没有在路径环境变量中配置.bashrc。因此,在添加一行PATH=/jpspath:$PATHin后.bashrc,一切正常。

于 2015-10-25T08:02:08.980 回答